Skip to content

Commit e485b43

Browse files
committed
feat: update migration and schema files for PlannerData model, including nullable timestamps and new migration generation script
1 parent 0fbf4dd commit e485b43

File tree

8 files changed

+596
-232
lines changed

8 files changed

+596
-232
lines changed

generateMigration.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const { execSync } = require('child_process');
2+
const { format } = require('date-fns');
3+
const path = require('path');
4+
5+
try {
6+
const timestamp = format(new Date(), 'yyyyMMdd_HHmmss');
7+
const outputFile = path.join('migrations', `${timestamp}_update_schema.sql`);
8+
const command = `bunx prisma migrate diff --from-schema-datamodel ./src/prisma/schema.previous.prisma --to-schema-datamodel ./src/prisma/schema.prisma --script --output ${outputFile}`;
9+
10+
execSync(command, { stdio: 'inherit' });
11+
console.log(`Generated migration file: ${outputFile}`);
12+
// copy schema.prisma to schema.previous.prisma
13+
execSync(`cp ./src/prisma/schema.prisma ./src/prisma/schema.previous.prisma`, { stdio: 'inherit' });
14+
console.log('Updated schema.previous.prisma with the current schema.prisma');
15+
} catch (error) {
16+
console.error('Error generating migration:', error.message);
17+
process.exit(1);
18+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-- RedefineTables
2+
PRAGMA defer_foreign_keys=ON;
3+
PRAGMA foreign_keys=OFF;
4+
CREATE TABLE "new_PlannerData" (
5+
"id" TEXT NOT NULL PRIMARY KEY,
6+
"title" TEXT NOT NULL,
7+
"department" TEXT NOT NULL,
8+
"requiredCredits" REAL NOT NULL,
9+
"enrollmentYear" TEXT NOT NULL,
10+
"graduationYear" TEXT NOT NULL,
11+
"includedSemesters" TEXT NOT NULL,
12+
"description" TEXT,
13+
"createdAt" DATETIME,
14+
"updatedAt" DATETIME,
15+
"serverTimestamp" DATETIME NOT NULL,
16+
"userId" TEXT NOT NULL,
17+
"deleted" BOOLEAN NOT NULL DEFAULT false
18+
);
19+
INSERT INTO "new_PlannerData" ("createdAt", "deleted", "department", "description", "enrollmentYear", "graduationYear", "id", "includedSemesters", "requiredCredits", "serverTimestamp", "title", "updatedAt", "userId") SELECT "createdAt", "deleted", "department", "description", "enrollmentYear", "graduationYear", "id", "includedSemesters", "requiredCredits", "serverTimestamp", "title", "updatedAt", "userId" FROM "PlannerData";
20+
DROP TABLE "PlannerData";
21+
ALTER TABLE "new_PlannerData" RENAME TO "PlannerData";
22+
CREATE INDEX "PlannerData_userId_idx" ON "PlannerData"("userId");
23+
CREATE UNIQUE INDEX "PlannerData_userId_id_key" ON "PlannerData"("userId", "id");
24+
PRAGMA foreign_keys=ON;
25+
PRAGMA defer_foreign_keys=OFF;

package.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44
"scripts": {
55
"dev": "wrangler dev src/index.ts",
66
"deploy": "wrangler deploy src/index.ts",
7-
"gentype": "npx supabase gen types typescript --project-id \"cmzdlrqfpuktcczvsobs\" --schema public > src/types/supabase.ts",
8-
"prisma:generate": "npx prisma generate --schema ./src/prisma/schema.prisma",
9-
"prisma:push": "npx prisma db push --schema ./src/prisma/schema.prisma",
7+
"gentype": "bunx supabase gen types typescript --project-id \"cmzdlrqfpuktcczvsobs\" --schema public > src/types/supabase.ts",
8+
"prisma:generate": "bunx prisma generate --schema ./src/prisma/schema.prisma",
9+
"prisma:migrate": "bunx prisma migrate diff --schema ./src/prisma/schema.prisma",
10+
"prisma:migration:create": "wrangler d1 migrations create data-d1 update_schema",
11+
"prisma:migration:generate": "bun run generateMigration.js",
12+
"prisma:migration:apply:local": "wrangler d1 migrations apply data-d1 --local",
13+
"prisma:migration:apply:remote": "wrangler d1 migrations apply data-d1 --remote",
14+
"wrangler:types": "bunx wrangler types",
1015
"build": "tsc"
1116
},
1217
"dependencies": {

prisma.config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import * as path from 'path'
2+
import type { PrismaConfig } from 'prisma'
3+
4+
export default {
5+
earlyAccess: true,
6+
schema: path.join('src', 'prisma', 'schema.prisma'),
7+
} satisfies PrismaConfig

0 commit comments

Comments
 (0)