223 lines
7.0 KiB
JavaScript
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();
|
|
});
|