ProvinceSeeder.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import prisma from '../../src/prisma/PrismaClient';
  2. import { now } from '../../src/utils/TimeLocal';
  3. const provinces: string[] = [
  4. "Aceh", "Bali", "Banten", "Bengkulu", "DI Yogyakarta", "DKI Jakarta", "Gorontalo",
  5. "Jambi", "Jawa Barat", "Jawa Tengah", "Jawa Timur", "Kalimantan Barat",
  6. "Kalimantan Selatan", "Kalimantan Tengah", "Kalimantan Timur", "Kalimantan Utara",
  7. "Kepulauan Bangka Belitung", "Kepulauan Riau", "Lampung", "Maluku",
  8. "Maluku Utara", "Nusa Tenggara Barat", "Nusa Tenggara Timur", "Papua",
  9. "Papua Barat", "Papua Barat Daya", "Papua Pegunungan", "Papua Selatan",
  10. "Papua Tengah", "Riau", "Sulawesi Barat", "Sulawesi Selatan", "Sulawesi Tengah",
  11. "Sulawesi Tenggara", "Sulawesi Utara", "Sumatera Barat", "Sumatera Selatan", "Sumatera Utara"
  12. ];
  13. export async function seedProvinces(): Promise<void> {
  14. for (const name of provinces.sort()) {
  15. const existing = await prisma.province.findFirst({
  16. where: { name },
  17. });
  18. if (!existing || existing.deletedAt !== null) {
  19. // Jika tidak ada atau sudah soft-deleted, buat baru
  20. await prisma.province.create({
  21. data: {
  22. name,
  23. createdAt: now().toDate(),
  24. },
  25. });
  26. } else {
  27. // Jika sudah ada dan aktif, update updatedAt saja (optional)
  28. await prisma.province.update({
  29. where: { id: existing.id },
  30. data: {
  31. updatedAt: now().toDate(),
  32. },
  33. });
  34. }
  35. }
  36. console.log('✅ Provinces seeded!');
  37. }