From fc133a2e26ba969a0834e3e68023b7f6c73f99fa Mon Sep 17 00:00:00 2001 From: pengkiang Date: Fri, 27 Mar 2026 09:33:43 +0800 Subject: [PATCH 1/6] Chore: create seed script --- prisma/seed.ts | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 prisma/seed.ts diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 0000000..4429f6a --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,85 @@ +import { PrismaClient } from "@prisma/client" +const prisma = new PrismaClient() + +async function main() { + + const mph = await prisma.venue.upsert({ + where: { id: 2 }, + update: {}, + create: { + name: 'WW MPH', + }, + }) + + const user = await prisma.user.upsert({ + where: { telegramId: '03448833' }, + update: {}, + create: { + name: 'Alex Lim', + telegramId: '03448833', + telegramUserName: '@AlexLim', + }, + }) + + const org = await prisma.organisation.upsert({ + where: { id: 1 }, + update: {}, + create: { + name: 'NUSC Badminton', + description: 'NUS College Badminton Interest Group', + category: 'Sports', + }, + }) + + const userOnOrg = await prisma.userOnOrg.upsert({ + where: { + userId_orgId: { + userId: user.id, + orgId: org.id, + }, + }, + update: {}, + create: { + userId: user.id, + orgId: org.id, + }, + }) + + const booking = await prisma.booking.upsert({ + where: { id: 1 }, + update: {}, + create: { + bookingName: 'Weekly Session Week 3', + venueId: mph.id, + userId: user.id, + userOrgId: org.id, + bookedForOrgId: org.id, + start: new Date('2025-09-05T14:00:00.000Z'), + end: new Date('2025-09-05T16:00:00.000Z'), + }, + }) + + const event = await prisma.event.upsert({ + where: { id: 1 }, + update: {}, + create: { + eventName: 'Taster Session', + userId: user.id, + userOrgId: org.id, + bookedForOrgId: org.id, + start: new Date('2025-09-12T14:00:00.000Z'), + end: new Date('2025-09-12T17:00:00.000Z'), + }, + }) + +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) \ No newline at end of file From 0ae05f66c3ad494817d8d926d0c0244d1b2e9500 Mon Sep 17 00:00:00 2001 From: pengkiang Date: Fri, 27 Mar 2026 09:44:41 +0800 Subject: [PATCH 2/6] Chore: Add seed script --- eslint.config.mjs | 2 +- package.json | 3 +++ prisma/seed.ts | 39 +++++++++++++++------------------------ 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 674eed6..625a456 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -36,5 +36,5 @@ export default defineConfig( }, }, }, - globalIgnores(['./prisma/generated/']), + globalIgnores(['./prisma/generated/', './prisma/seed.ts']), ); diff --git a/package.json b/package.json index 86ce1bd..a05bb95 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,9 @@ "format": "prettier --write .", "format:check": "prettier --check ." }, + "prisma": { + "seed": "tsx prisma/seed.ts" + }, "dependencies": { "@hookform/resolvers": "^5.2.2", "@prisma/adapter-pg": "^7.4.1", diff --git a/prisma/seed.ts b/prisma/seed.ts index 4429f6a..182f82b 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,15 +1,17 @@ import { PrismaClient } from "@prisma/client" + const prisma = new PrismaClient() -async function main() { +type VenueResult = Awaited> +type UserResult = Awaited> +type OrgResult = Awaited> +async function main() { const mph = await prisma.venue.upsert({ where: { id: 2 }, update: {}, - create: { - name: 'WW MPH', - }, - }) + create: { name: 'WW MPH' }, + }) as VenueResult const user = await prisma.user.upsert({ where: { telegramId: '03448833' }, @@ -19,7 +21,7 @@ async function main() { telegramId: '03448833', telegramUserName: '@AlexLim', }, - }) + }) as UserResult const org = await prisma.organisation.upsert({ where: { id: 1 }, @@ -29,23 +31,15 @@ async function main() { description: 'NUS College Badminton Interest Group', category: 'Sports', }, - }) + }) as OrgResult - const userOnOrg = await prisma.userOnOrg.upsert({ - where: { - userId_orgId: { - userId: user.id, - orgId: org.id, - }, - }, + await prisma.userOnOrg.upsert({ + where: { userId_orgId: { userId: user.id, orgId: org.id } }, update: {}, - create: { - userId: user.id, - orgId: org.id, - }, + create: { userId: user.id, orgId: org.id }, }) - const booking = await prisma.booking.upsert({ + await prisma.booking.upsert({ where: { id: 1 }, update: {}, create: { @@ -59,7 +53,7 @@ async function main() { }, }) - const event = await prisma.event.upsert({ + await prisma.event.upsert({ where: { id: 1 }, update: {}, create: { @@ -71,13 +65,10 @@ async function main() { end: new Date('2025-09-12T17:00:00.000Z'), }, }) - } main() - .then(async () => { - await prisma.$disconnect() - }) + .then(async () => { await prisma.$disconnect() }) .catch(async (e) => { console.error(e) await prisma.$disconnect() From e1ca38a0b5f7ef220e950e0d7cfe6f00944d5e39 Mon Sep 17 00:00:00 2001 From: pengkiang Date: Wed, 1 Apr 2026 21:33:27 +0800 Subject: [PATCH 3/6] kx --- eslint.config.mjs | 2 +- prisma/seed.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 625a456..674eed6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -36,5 +36,5 @@ export default defineConfig( }, }, }, - globalIgnores(['./prisma/generated/', './prisma/seed.ts']), + globalIgnores(['./prisma/generated/']), ); diff --git a/prisma/seed.ts b/prisma/seed.ts index 182f82b..5298af3 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,4 +1,4 @@ -import { PrismaClient } from "@prisma/client" +import { PrismaClient } from '@/prisma/generated/prisma/client'; const prisma = new PrismaClient() From afb8189f606509b74905351492597afe71a53f81 Mon Sep 17 00:00:00 2001 From: pengkiang Date: Wed, 1 Apr 2026 21:35:49 +0800 Subject: [PATCH 4/6] kx2 --- package.json | 2 +- prisma/seed.ts | 30 ++++++++++++++---------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index a05bb95..39d0a2c 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "prisma": { "seed": "tsx prisma/seed.ts" - }, + }, "dependencies": { "@hookform/resolvers": "^5.2.2", "@prisma/adapter-pg": "^7.4.1", diff --git a/prisma/seed.ts b/prisma/seed.ts index 5298af3..ef6bae2 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,17 +1,13 @@ import { PrismaClient } from '@/prisma/generated/prisma/client'; -const prisma = new PrismaClient() - -type VenueResult = Awaited> -type UserResult = Awaited> -type OrgResult = Awaited> +const prisma = new PrismaClient(); async function main() { const mph = await prisma.venue.upsert({ where: { id: 2 }, update: {}, create: { name: 'WW MPH' }, - }) as VenueResult + }); const user = await prisma.user.upsert({ where: { telegramId: '03448833' }, @@ -21,7 +17,7 @@ async function main() { telegramId: '03448833', telegramUserName: '@AlexLim', }, - }) as UserResult + }); const org = await prisma.organisation.upsert({ where: { id: 1 }, @@ -31,13 +27,13 @@ async function main() { description: 'NUS College Badminton Interest Group', category: 'Sports', }, - }) as OrgResult + }); await prisma.userOnOrg.upsert({ where: { userId_orgId: { userId: user.id, orgId: org.id } }, update: {}, create: { userId: user.id, orgId: org.id }, - }) + }); await prisma.booking.upsert({ where: { id: 1 }, @@ -51,7 +47,7 @@ async function main() { start: new Date('2025-09-05T14:00:00.000Z'), end: new Date('2025-09-05T16:00:00.000Z'), }, - }) + }); await prisma.event.upsert({ where: { id: 1 }, @@ -64,13 +60,15 @@ async function main() { start: new Date('2025-09-12T14:00:00.000Z'), end: new Date('2025-09-12T17:00:00.000Z'), }, - }) + }); } main() - .then(async () => { await prisma.$disconnect() }) + .then(async () => { + await prisma.$disconnect(); + }) .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) \ No newline at end of file + console.error(e); + await prisma.$disconnect(); + process.exit(1); + }); From 2e2718e495ddeba112f6a6be4ddcb1fda4694804 Mon Sep 17 00:00:00 2001 From: pengkiang Date: Thu, 2 Apr 2026 09:39:30 +0800 Subject: [PATCH 5/6] Fix: make seed data close to current date --- prisma/seed.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/prisma/seed.ts b/prisma/seed.ts index ef6bae2..4db9823 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -15,7 +15,7 @@ async function main() { create: { name: 'Alex Lim', telegramId: '03448833', - telegramUserName: '@AlexLim', + telegramUserName: 'AlexLim', }, }); @@ -35,6 +35,9 @@ async function main() { create: { userId: user.id, orgId: org.id }, }); + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + await prisma.booking.upsert({ where: { id: 1 }, update: {}, @@ -44,8 +47,8 @@ async function main() { userId: user.id, userOrgId: org.id, bookedForOrgId: org.id, - start: new Date('2025-09-05T14:00:00.000Z'), - end: new Date('2025-09-05T16:00:00.000Z'), + start: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 10, 0, 0)), + end: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 12, 0, 0)), }, }); @@ -57,8 +60,8 @@ async function main() { userId: user.id, userOrgId: org.id, bookedForOrgId: org.id, - start: new Date('2025-09-12T14:00:00.000Z'), - end: new Date('2025-09-12T17:00:00.000Z'), + start: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 8, 0, 0)), + end: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 10, 0, 0)), }, }); } From 82d45c370cc4404ed2cfeaee809f4b93e85b8aa6 Mon Sep 17 00:00:00 2001 From: pengkiang Date: Thu, 2 Apr 2026 09:42:11 +0800 Subject: [PATCH 6/6] Fix: make seed data close to current date --- prisma/seed.ts | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/prisma/seed.ts b/prisma/seed.ts index 4db9823..6fee708 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -47,8 +47,26 @@ async function main() { userId: user.id, userOrgId: org.id, bookedForOrgId: org.id, - start: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 10, 0, 0)), - end: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 12, 0, 0)), + start: new Date( + Date.UTC( + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate(), + 10, + 0, + 0, + ), + ), + end: new Date( + Date.UTC( + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate(), + 12, + 0, + 0, + ), + ), }, }); @@ -60,8 +78,26 @@ async function main() { userId: user.id, userOrgId: org.id, bookedForOrgId: org.id, - start: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 8, 0, 0)), - end: new Date(Date.UTC(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 10, 0, 0)), + start: new Date( + Date.UTC( + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate(), + 8, + 0, + 0, + ), + ), + end: new Date( + Date.UTC( + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate(), + 10, + 0, + 0, + ), + ), }, }); }