-
Notifications
You must be signed in to change notification settings - Fork 11
/
schema.prisma
213 lines (169 loc) · 5.12 KB
/
schema.prisma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
generator drizzle {
provider = "bunx prisma-generator-drizzle"
}
datasource db {
provider = "postgresql"
url = env("VITE_PG_DATABASE_URL")
}
model SelfReference {
id String @id
referringManyId String?
referringMany SelfReference? @relation("SelfReference_referringMany", fields: [referringManyId], references: [id])
referredMany SelfReference[] @relation("SelfReference_referringMany")
referringUniqueId String? @unique
referringUnique SelfReference? @relation("SelfReference_referringUnique", fields: [referringUniqueId], references: [id])
referredUnique SelfReference? @relation("SelfReference_referringUnique")
}
// #region Implicit relationship purposes
model TransactionHeader {
id String @id
products ProductDetail[]
}
model ProductDetail {
id String @id
transactions TransactionHeader[]
}
// With custom table name
model Post {
id String @id
categories Category[] @relation("CustomCategoryToPost")
}
model Category {
id String @id
posts Post[] @relation("CustomCategoryToPost")
}
// #endregion
// #region Ignore
model IgnoredModel {
id String @id @default(uuid())
@@ignore
}
model ModelWithIgnoredField {
id String @id @default(uuid())
shouldBeIgnored String @ignore
}
// #endregion
// #region Default
// start -sqlite
enum EnumForDefault {
TypeOne
TypeTwo
}
// end -sqlite
model Default {
id String @id
/// drizzle.default @paralleldrive/cuid2::createId
alsoId String?
/// drizzle.default crypto::randomBytes `() => randomBytes(16).toString('hex')`
salt String?
pgUuid String? @default(dbgenerated("gen_random_uuid()")) // -sqlite -mysql
date DateTime? @default("2024-01-23T00:00:00Z")
int Int? @default(1)
boolean Boolean? @default(true)
createdAt DateTime? @default(now())
string String? @default("John")
bigint BigInt? @default(1)
decimal Decimal? @default(1.123)
float Float? @default(1.123)
bytes Bytes? @default("aGVsbG8gd29ybGQ=")
enum EnumForDefault @default(TypeTwo) // -sqlite
json Json? @default("{\"foo\": \"bar\"}") // -sqlite
stringList String[] @default(["John", "Doe"]) // -sqlite -mysql
}
model AutoIncrement {
id Int @id @default(autoincrement())
ref String @unique
}
model AutoIncrementBigInt {
id BigInt @id @default(autoincrement())
ref String @unique
}
// #endregion
// #region Field
// start -sqlite
enum Enum {
A
B
}
// end -sqlite
model Field {
id String @id
string String?
boolean Boolean?
int Int?
bigint BigInt?
float Float?
decimal Decimal?
datetime DateTime?
stringList String[] // -mysql -sqlite
bytes Bytes?
json Json? // -sqlite
enum Enum? // -sqlite
}
// #endregion
// #region one to many
model OneToMany_One {
id String @id
manyId String
many OneToMany_Many @relation(fields: [manyId], references: [id])
}
model OneToMany_Many {
id String @id
ones OneToMany_One[]
}
// #endregion
// #region one to one
model OneToOne_A {
id String @id
b OneToOne_B? @relation(fields: [bId], references: [id])
bId String? @unique
}
model OneToOne_B {
id String @id
a OneToOne_A?
}
// #endregion
// #region Disambiguating
model Disambiguating_Transfer {
id String @id
from Disambiguating_User @relation("Disambiguating_Transfer_from", fields: [fromId], references: [id])
fromId String
to Disambiguating_User @relation("Disambiguating_Transfer_to", fields: [toId], references: [id])
toId String
salePayment Disambiguating_Sale? @relation("Disambiguating_Sale_payment")
saleTax Disambiguating_Sale? @relation("Disambiguating_Sale_tax")
createdAt DateTime @default(now())
}
model Disambiguating_User {
id String @id
receivedTransfers Disambiguating_Transfer[] @relation("Disambiguating_Transfer_to")
sentTransfers Disambiguating_Transfer[] @relation("Disambiguating_Transfer_from")
}
model Disambiguating_Sale {
id String @id
payment Disambiguating_Transfer @relation("Disambiguating_Sale_payment", fields: [paymentId], references: [id])
paymentId String @unique
tax Disambiguating_Transfer @relation("Disambiguating_Sale_tax", fields: [taxId], references: [id])
taxId String @unique
}
// #endregion
// #region https://github.com/farreldarian/prisma-generator-drizzle/issues/55
model Disambiguating_Country {
id String @id @default(cuid())
currencies Disambiguating_Currency[]
}
model Disambiguating_Currency {
code String @id @unique
countries Disambiguating_Country[]
}
// #endregion
model FieldCustomization {
id Int @id @default(autoincrement())
/// drizzle.custom {
/// "imports": [{ "name": ["SomeBigInt"], "module": "~/tests/shared/testFieldCustomization", "type": true }],
/// "type": "SomeBigInt",
/// "default": "() => 1n",
/// "field": { "mode": "number" }
/// }
allFields BigInt
}