Files
AbelBirdNest-Stock/scripts/seed-banks-indonesia.mjs

223 lines
7.0 KiB
JavaScript

import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
const banks = [
["002", "Bank Rakyat Indonesia (Persero) Tbk"],
["008", "Bank Mandiri (Persero) Tbk"],
["009", "Bank Negara Indonesia (Persero) Tbk"],
["014", "Bank Central Asia Tbk"],
["019", "Bank Panin Tbk"],
["022", "Bank CIMB Niaga Tbk"],
["023", "Bank UOB Indonesia"],
["026", "Bank Lippo"],
["028", "Bank OCBC NISP Tbk"],
["030", "American Express Bank"],
["031", "Citibank N.A."],
["032", "JP. Morgan Chase Bank NA"],
["033", "Bank of America N.A."],
["034", "ING Indonesia Bank"],
["036", "Bank Ekspor Indonesia"],
["037", "Bank Artha Graha Int'l"],
["039", "Bank Credit Agricole Indosuez"],
["040", "The Bank of Hongkong & Shanghai B.C. (Hongkong)"],
["041", "The Bank of Tokyo Mitsubishi UFJ"],
["042", "Bank Sumitomo Mitsui Indonesia"],
["045", "Bank Sumitomo Mitsui Indonesia"],
["046", "Bank DBS Indonesia"],
["047", "Bank Resona Perdania"],
["048", "Bank Mizuho Indonesia"],
["050", "Standard Chartered Bank"],
["052", "Bank ABN Amro"],
["053", "Bank Keppel Tatlee Buana"],
["054", "Bank Capital Indonesia"],
["057", "Bank BNP Paribas Indonesia"],
["059", "Korea Exchange Bank Danamon"],
["061", "ANZ Indonesia"],
["067", "Deutsche Bank AG"],
["068", "Bank Woori Indonesia"],
["069", "Bank of China"],
["076", "Bank Bumi Arta"],
["089", "Bank IFI"],
["093", "Bank Jtrust"],
["097", "Bank Haja"],
["110", "Bank Jabar Banten (BJB)"],
["111", "Bank DKI"],
["112", "Bank Pembangunan Daerah Daerah Istimewa Yogyakarta"],
["113", "Bank Jateng"],
["114", "Bank Jatim"],
["115", "Bank Jambi"],
["116", "Bank Aceh"],
["117", "Bank Sumut"],
["118", "Bank Nagari"],
["119", "Bank Riau Kepri"],
["120", "Bank Sumsel Babel"],
["121", "Bank Lampung"],
["122", "Bank Kalsel"],
["123", "Bank Kaltimtara"],
["124", "Bank Kaltim & Utara"],
["125", "Bank Kalteng"],
["126", "Bank Sulselbar"],
["127", "Bank SulutGo"],
["128", "Bank NTB Syariah"],
["129", "Bank Bali"],
["130", "Bank NTT"],
["131", "Bank Maluku Malut"],
["132", "Bank Papua"],
["133", "Bank Bengkulu"],
["134", "Bank Sulselbar"],
["135", "Bank Sultra"],
["136", "Bank Sulawesi Tenggara"],
["137", "Bank Sulawesi Tengah"],
["138", "Bank Sulawesi Selatan"],
["139", "Bank Sulawesi Utara"],
["141", "Bank Kalteng (Kaltimtara)"],
["147", "Bank Muamalat Indonesia"],
["145", "Bank Nusantara Parahyangan"],
["146", "Bank of India Indonesia"],
["151", "Bank Mestika Dharma"],
["152", "Shinhan Bank Indonesia (Metro Express)"],
["153", "Bank Sinarmas"],
["157", "Bank Maspion"],
["159", "Bank Hagakita"],
["161", "Bank Ganesha"],
["162", "Bank Windu Kentjana"],
["166", "Bank ICBC Indonesia (Halim Indonesia Bank)"],
["167", "Bank QNB Indonesia (QNB Kesawan)"],
["171", "Bank of Tokyo Mitsubishi UFJ Indonesia"],
["176", "Bank QNB Indonesia"],
["186", "Bank Agris"],
["213", "Bank Tabungan Pensiunan Nasional (BTPN)"],
["200", "Bank Tabungan Negara (BTN)"],
["203", "Bank Bumi Arta"],
["213", "BTPN/Jenius BTPN"],
["216", "Bank Artha Graha International"],
["240", "Bank Victoria International"],
["244", "Bank Index Selindo"],
["245", "Bank Kesejahteraan Ekonomi"],
["246", "Bank Harfa"],
["247", "Bank Artos Indonesia"],
["251", "Prima Master Bank"],
["252", "Bank Persyarikatan Indonesia"],
["253", "Liman International Bank"],
["254", "Bank Dipo International (Sahabat Sampoerna)"],
["255", "Bank Fama Internasional"],
["256", "Bank Kesehatan Bumi Arta"],
["257", "Bank Mayora Indonesia"],
["258", "Bank Royal Indonesia"],
["259", "Centratama Nasional Bank"],
["261", "Bank Indonesia"],
["262", "Bank Multika"],
["263", "Bank Permata"],
["267", "Bank Raya Indonesia"],
["273", "Bank Nusantara Parahyangan Syariah"],
["274", "Bank Jasa Jakarta"],
["275", "Bank Alfindo"],
["282", "Bank Yudha Bhakti"],
["283", "Bank MNC"],
["285", "Bank Bintang Manunggal"],
["286", "Bank Haga"],
["287", "Bank Mega"],
["294", "Bank Bisnis Internasional"],
["295", "Bank Sri Partha"],
["422", "BRI Syariah (migrasi ke BSI)"],
["423", "BCA Syariah"],
["425", "Bank BJB Syariah"],
["426", "Bank Mega"],
["427", "Bank Syariah Mandiri / BNI Syariah"],
["431", "Bank BTPN Syariah"],
["451", "Bank Syariah Indonesia"],
["453", "Bank BPD Kaltim"],
["454", "Bank Jatim Syariah"],
["456", "Bank Nusantara Parahyangan Syariah"],
["503", "Bank Agris"],
["506", "Bank Sinarmas Syariah"],
["510", "Prima Master Bank"],
["513", "Bank Ina Perdana"],
["517", "Bank Harfa"],
["521", "Bank Akita"],
["526", "Liman International Bank"],
["531", "Anglomas Internasional Bank"],
["535", "Bank Kesejahteraan"],
["536", "BCA Syariah"],
["542", "Artos Indonesia Bank"],
["547", "Bank Purba Danarta"],
["548", "Bank Multi Arta Sentosa"],
["550", "Bank Andara"],
["553", "Mayora Bank"],
["555", "Bank Victoria International"],
["562", "Bank Fama International"],
["564", "Bank Mandiri Taspen Pos"],
["566", "Bank Victoria International"],
["567", "Bank Harda"],
["688", "BPR KS"],
["761", "Bank Rakyat Indonesia"],
["789", "Indosat Dompetku"],
["811", "BPR Bank Indonesia"],
["836", "Bank OCBC NISP"],
["911", "Link Aja"],
["949", "Bank CTBC (China Trust) Indonesia"],
["950", "Bank Commonwealth"],
["956", "Bank Merincorp"],
["957", "Bank Diners Club"],
["985", "The Royal Bank"],
["988", "Bank Swaguna"],
["989", "Bank QNB Indonesia"],
["990", "Bank Swaguna"],
["992", "Bank Himpunan Saudara"],
["993", "Bank Jasa Jakarta"],
["994", "Bank Swaguna"]
];
function toRecords(list) {
const byCode = new Map();
const byName = new Set();
for (const [code, name] of list) {
const trimmedCode = String(code).trim().padStart(3, "0");
const trimmedName = String(name).trim();
if (!trimmedCode || !trimmedName) continue;
const normalizedName = trimmedName.toUpperCase();
if (!byCode.has(trimmedCode) && !byName.has(normalizedName)) {
byCode.set(trimmedCode, trimmedName);
byName.add(normalizedName);
}
}
return [...byCode.entries()].map(([code, name]) => ({ code, name, address: "Indonesia" }));
}
async function main() {
const records = toRecords(banks);
let created = 0;
let updated = 0;
for (const record of records) {
const current = await prisma.bank.findUnique({ where: { code: record.code } });
if (current) {
await prisma.bank.update({
where: { code: record.code },
data: { name: record.name, address: record.address, status: "ACTIVE" }
});
updated += 1;
} else {
await prisma.bank.create({
data: { code: record.code, name: record.name, address: record.address, status: "ACTIVE" }
});
created += 1;
}
}
const total = await prisma.bank.count();
console.log(`Seeded banks: created=${created}, updated=${updated}, total=${total}`);
}
main()
.catch((error) => {
console.error(error);
process.exitCode = 1;
})
.finally(async () => {
await prisma.$disconnect();
});