1#!/usr/bin/env -S node
2import {
3 Migration,
4 MigrationCLI,
5 addForeignKey,
6 createIndex,
7 createTable,
8} from "@prisma-next/target-postgres/migration";
9
10export default class M extends Migration {
11 override describe() {
12 return {
13 from: null,
14 to: "sha256:ae5cf43e83687e08354eb6afa512ad5834d96164612280b204c5b7103b01e8e1",
15 };
16 }
17
18 override get operations() {
19 return [
20 createTable(
21 "public",
22 "post",
23 [
24 {
25 name: "createdAt",
26 typeSql: "timestamptz",
27 defaultSql: "DEFAULT (now())",
28 nullable: false,
29 },
30 { name: "excerpt", typeSql: "text", defaultSql: "", nullable: false },
31 {
32 name: "id",
33 typeSql: "character(36)",
34 defaultSql: "",
35 nullable: false,
36 },
37 { name: "title", typeSql: "text", defaultSql: "", nullable: false },
38 { name: "userId", typeSql: "text", defaultSql: "", nullable: false },
39 ],
40 { columns: ["id"] },
41 ),
42 createTable(
43 "public",
44 "user",
45 [
46 {
47 name: "createdAt",
48 typeSql: "timestamptz",
49 defaultSql: "DEFAULT (now())",
50 nullable: false,
51 },
52 { name: "email", typeSql: "text", defaultSql: "", nullable: false },
53 {
54 name: "id",
55 typeSql: "character(36)",
56 defaultSql: "",
57 nullable: false,
58 },
59 { name: "name", typeSql: "text", defaultSql: "", nullable: false },
60 ],
61 { columns: ["id"] },
62 ),
63 createIndex("public", "post", "post_userId_idx", ["userId"]),
64 addForeignKey("public", "post", {
65 name: "post_userId_fkey",
66 columns: ["userId"],
67 references: { table: "user", columns: ["id"] },
68 }),
69 ];
70 }
71}
72
73MigrationCLI.run(import.meta.url, M);