/
opt
/
mawid
/
packages
/
db
/
prisma
/
/opt/mawid/packages/db/prisma
mkdir
upload
Name
Size
Mode
Actions
migrations/
-
0755
rm
schema.prisma
8053
0644
edit
dl
rm
seed.ts
3772
0644
edit
dl
rm
tsconfig.json
201
0644
edit
dl
rm
Edit:
/opt/mawid/packages/db/prisma/seed.ts
(3772B)
import { PrismaClient } from '@prisma/client'; import * as argon2 from 'argon2'; const prisma = new PrismaClient(); const WEEKDAY_HOURS = { mon: [{ start: '09:00', end: '18:00' }], tue: [{ start: '09:00', end: '18:00' }], wed: [{ start: '09:00', end: '18:00' }], thu: [{ start: '09:00', end: '18:00' }], fri: [{ start: '09:00', end: '18:00' }], sat: [{ start: '10:00', end: '15:00' }], sun: [], }; async function main() { const existing = await prisma.clinic.findFirst({ where: { name: 'Demo Dental Clinic' } }); if (existing) { if (!existing.waPhoneNumberId) { await prisma.clinic.update({ where: { id: existing.id }, data: { waPhoneNumberId: 'test-phone-number-id' }, }); console.log('Seed already applied; backfilled waPhoneNumberId.'); } else { console.log('Seed already applied, skipping.'); } return; } const clinic = await prisma.clinic.create({ data: { name: 'Demo Dental Clinic', phone: '+905550000001', waPhoneNumberId: 'test-phone-number-id', timezone: 'Europe/Istanbul', defaultLanguage: 'tr', workingHours: WEEKDAY_HOURS, settings: { reminderOffsetsHours: [24, 2], depositEnabled: false, waitlistHoldMinutes: 20 }, }, }); await prisma.user.create({ data: { clinicId: clinic.id, email: 'owner@demo.clinic', // Password: demo-owner-password passwordHash: await argon2.hash('demo-owner-password'), name: 'Demo Owner', role: 'owner', }, }); const services = await Promise.all( [ { ar: 'فحص وتنظيف', tr: 'Muayene ve temizlik', en: 'Checkup & cleaning', min: 30, price: 1200 }, { ar: 'حشو أسنان', tr: 'Dolgu', en: 'Filling', min: 45, price: 1800 }, { ar: 'تبييض الأسنان', tr: 'Diş beyazlatma', en: 'Teeth whitening', min: 60, price: 4500 }, { ar: 'استشارة زراعة', tr: 'İmplant danışma', en: 'Implant consultation', min: 30, price: 0 }, ].map((s) => prisma.service.create({ data: { clinicId: clinic.id, name: { ar: s.ar, tr: s.tr, en: s.en }, durationMinutes: s.min, price: s.price, }, }), ), ); await Promise.all( [ { name: 'Dr. Elif Yılmaz', role: 'dentist' }, { name: 'Dr. Kerem Aydın', role: 'dentist' }, ].map((s) => prisma.staff.create({ data: { clinicId: clinic.id, name: s.name, role: s.role, workingHours: WEEKDAY_HOURS, services: { connect: services.map(({ id }) => ({ id })) }, }, }), ), ); const patients = [ { waPhone: '+905321110001', name: 'Ahmet Demir', language: 'tr' }, { waPhone: '+905321110002', name: 'Zeynep Kaya', language: 'tr' }, { waPhone: '+905321110003', name: 'محمد الحسن', language: 'ar' }, { waPhone: '+905321110004', name: 'ليلى العلي', language: 'ar' }, { waPhone: '+905321110005', name: 'Murat Şahin', language: 'tr' }, { waPhone: '+905321110006', name: 'Elena Petrova', language: 'en' }, { waPhone: '+905321110007', name: 'سارة يوسف', language: 'ar' }, { waPhone: '+905321110008', name: 'Deniz Arslan', language: 'tr' }, { waPhone: '+905321110009', name: 'John Carter', language: 'en' }, { waPhone: '+905321110010', name: 'Fatma Çelik', language: 'tr' }, ]; await prisma.patient.createMany({ data: patients.map((p) => ({ ...p, clinicId: clinic.id })), }); console.log( `Seeded clinic ${clinic.id}: 1 owner, 2 staff, ${services.length} services, ${patients.length} patients.`, ); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(() => prisma.$disconnect());
Save
cmd:
run