@zeno-lib/db 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,543 @@
1
+ //#region src/auth-schema.d.ts
2
+ declare const authSchema: import("drizzle-orm/pg-core").PgSchema<"auth">;
3
+ /**
4
+ * Supabase's `auth.users`, in full.
5
+ *
6
+ * Reading it needs an RLS-bypassing client, and several columns hold credential
7
+ * material (`encryptedPassword`, the `*Token` columns). Select the columns you
8
+ * need rather than `select()`.
9
+ */
10
+ declare const authUsers: import("drizzle-orm/pg-core").PgTableWithColumns<{
11
+ name: "users";
12
+ schema: "auth";
13
+ columns: {
14
+ aud: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
15
+ name: string;
16
+ tableName: "users";
17
+ dataType: "string";
18
+ data: string;
19
+ driverParam: string;
20
+ notNull: false;
21
+ hasDefault: false;
22
+ isPrimaryKey: false;
23
+ isAutoincrement: false;
24
+ hasRuntimeDefault: false;
25
+ enumValues: undefined;
26
+ identity: undefined;
27
+ generated: undefined;
28
+ }>;
29
+ bannedUntil: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
30
+ name: string;
31
+ tableName: "users";
32
+ dataType: "object date";
33
+ data: Date;
34
+ driverParam: string;
35
+ notNull: false;
36
+ hasDefault: false;
37
+ isPrimaryKey: false;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: false;
40
+ enumValues: undefined;
41
+ identity: undefined;
42
+ generated: undefined;
43
+ }>;
44
+ confirmationSentAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
45
+ name: string;
46
+ tableName: "users";
47
+ dataType: "object date";
48
+ data: Date;
49
+ driverParam: string;
50
+ notNull: false;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: undefined;
56
+ identity: undefined;
57
+ generated: undefined;
58
+ }>;
59
+ confirmationToken: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
60
+ name: string;
61
+ tableName: "users";
62
+ dataType: "string";
63
+ data: string;
64
+ driverParam: string;
65
+ notNull: false;
66
+ hasDefault: false;
67
+ isPrimaryKey: false;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: false;
70
+ enumValues: undefined;
71
+ identity: undefined;
72
+ generated: undefined;
73
+ }>;
74
+ confirmedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasGenerated<import("drizzle-orm/pg-core").PgTimestampBuilder>, {
75
+ name: string;
76
+ tableName: "users";
77
+ dataType: "object date";
78
+ data: Date;
79
+ driverParam: string;
80
+ notNull: false;
81
+ hasDefault: true;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: undefined;
86
+ identity: undefined;
87
+ generated: true;
88
+ }>;
89
+ createdAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
90
+ name: string;
91
+ tableName: "users";
92
+ dataType: "object date";
93
+ data: Date;
94
+ driverParam: string;
95
+ notNull: false;
96
+ hasDefault: false;
97
+ isPrimaryKey: false;
98
+ isAutoincrement: false;
99
+ hasRuntimeDefault: false;
100
+ enumValues: undefined;
101
+ identity: undefined;
102
+ generated: undefined;
103
+ }>;
104
+ deletedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
105
+ name: string;
106
+ tableName: "users";
107
+ dataType: "object date";
108
+ data: Date;
109
+ driverParam: string;
110
+ notNull: false;
111
+ hasDefault: false;
112
+ isPrimaryKey: false;
113
+ isAutoincrement: false;
114
+ hasRuntimeDefault: false;
115
+ enumValues: undefined;
116
+ identity: undefined;
117
+ generated: undefined;
118
+ }>;
119
+ email: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
120
+ name: string;
121
+ tableName: "users";
122
+ dataType: "string";
123
+ data: string;
124
+ driverParam: string;
125
+ notNull: false;
126
+ hasDefault: false;
127
+ isPrimaryKey: false;
128
+ isAutoincrement: false;
129
+ hasRuntimeDefault: false;
130
+ enumValues: undefined;
131
+ identity: undefined;
132
+ generated: undefined;
133
+ }>;
134
+ emailChange: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
135
+ name: string;
136
+ tableName: "users";
137
+ dataType: "string";
138
+ data: string;
139
+ driverParam: string;
140
+ notNull: false;
141
+ hasDefault: false;
142
+ isPrimaryKey: false;
143
+ isAutoincrement: false;
144
+ hasRuntimeDefault: false;
145
+ enumValues: undefined;
146
+ identity: undefined;
147
+ generated: undefined;
148
+ }>;
149
+ emailChangeConfirmStatus: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgSmallIntBuilder>, {
150
+ name: string;
151
+ tableName: "users";
152
+ dataType: "number int16";
153
+ data: number;
154
+ driverParam: string | number;
155
+ notNull: false;
156
+ hasDefault: true;
157
+ isPrimaryKey: false;
158
+ isAutoincrement: false;
159
+ hasRuntimeDefault: false;
160
+ enumValues: undefined;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }>;
164
+ emailChangeSentAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
165
+ name: string;
166
+ tableName: "users";
167
+ dataType: "object date";
168
+ data: Date;
169
+ driverParam: string;
170
+ notNull: false;
171
+ hasDefault: false;
172
+ isPrimaryKey: false;
173
+ isAutoincrement: false;
174
+ hasRuntimeDefault: false;
175
+ enumValues: undefined;
176
+ identity: undefined;
177
+ generated: undefined;
178
+ }>;
179
+ emailChangeTokenCurrent: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
180
+ name: string;
181
+ tableName: "users";
182
+ dataType: "string";
183
+ data: string;
184
+ driverParam: string;
185
+ notNull: false;
186
+ hasDefault: true;
187
+ isPrimaryKey: false;
188
+ isAutoincrement: false;
189
+ hasRuntimeDefault: false;
190
+ enumValues: undefined;
191
+ identity: undefined;
192
+ generated: undefined;
193
+ }>;
194
+ emailChangeTokenNew: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
195
+ name: string;
196
+ tableName: "users";
197
+ dataType: "string";
198
+ data: string;
199
+ driverParam: string;
200
+ notNull: false;
201
+ hasDefault: false;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
205
+ enumValues: undefined;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }>;
209
+ emailConfirmedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
210
+ name: string;
211
+ tableName: "users";
212
+ dataType: "object date";
213
+ data: Date;
214
+ driverParam: string;
215
+ notNull: false;
216
+ hasDefault: false;
217
+ isPrimaryKey: false;
218
+ isAutoincrement: false;
219
+ hasRuntimeDefault: false;
220
+ enumValues: undefined;
221
+ identity: undefined;
222
+ generated: undefined;
223
+ }>;
224
+ encryptedPassword: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
225
+ name: string;
226
+ tableName: "users";
227
+ dataType: "string";
228
+ data: string;
229
+ driverParam: string;
230
+ notNull: false;
231
+ hasDefault: false;
232
+ isPrimaryKey: false;
233
+ isAutoincrement: false;
234
+ hasRuntimeDefault: false;
235
+ enumValues: undefined;
236
+ identity: undefined;
237
+ generated: undefined;
238
+ }>;
239
+ id: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgUUIDBuilder>, {
240
+ name: string;
241
+ tableName: "users";
242
+ dataType: "string uuid";
243
+ data: string;
244
+ driverParam: string;
245
+ notNull: true;
246
+ hasDefault: false;
247
+ isPrimaryKey: false;
248
+ isAutoincrement: false;
249
+ hasRuntimeDefault: false;
250
+ enumValues: undefined;
251
+ identity: undefined;
252
+ generated: undefined;
253
+ }>;
254
+ instanceId: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgUUIDBuilder, {
255
+ name: string;
256
+ tableName: "users";
257
+ dataType: "string uuid";
258
+ data: string;
259
+ driverParam: string;
260
+ notNull: false;
261
+ hasDefault: false;
262
+ isPrimaryKey: false;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
265
+ enumValues: undefined;
266
+ identity: undefined;
267
+ generated: undefined;
268
+ }>;
269
+ invitedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
270
+ name: string;
271
+ tableName: "users";
272
+ dataType: "object date";
273
+ data: Date;
274
+ driverParam: string;
275
+ notNull: false;
276
+ hasDefault: false;
277
+ isPrimaryKey: false;
278
+ isAutoincrement: false;
279
+ hasRuntimeDefault: false;
280
+ enumValues: undefined;
281
+ identity: undefined;
282
+ generated: undefined;
283
+ }>;
284
+ isAnonymous: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgBooleanBuilder>>, {
285
+ name: string;
286
+ tableName: "users";
287
+ dataType: "boolean";
288
+ data: boolean;
289
+ driverParam: boolean;
290
+ notNull: true;
291
+ hasDefault: true;
292
+ isPrimaryKey: false;
293
+ isAutoincrement: false;
294
+ hasRuntimeDefault: false;
295
+ enumValues: undefined;
296
+ identity: undefined;
297
+ generated: undefined;
298
+ }>;
299
+ isSsoUser: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgBooleanBuilder>>, {
300
+ name: string;
301
+ tableName: "users";
302
+ dataType: "boolean";
303
+ data: boolean;
304
+ driverParam: boolean;
305
+ notNull: true;
306
+ hasDefault: true;
307
+ isPrimaryKey: false;
308
+ isAutoincrement: false;
309
+ hasRuntimeDefault: false;
310
+ enumValues: undefined;
311
+ identity: undefined;
312
+ generated: undefined;
313
+ }>;
314
+ isSuperAdmin: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgBooleanBuilder, {
315
+ name: string;
316
+ tableName: "users";
317
+ dataType: "boolean";
318
+ data: boolean;
319
+ driverParam: boolean;
320
+ notNull: false;
321
+ hasDefault: false;
322
+ isPrimaryKey: false;
323
+ isAutoincrement: false;
324
+ hasRuntimeDefault: false;
325
+ enumValues: undefined;
326
+ identity: undefined;
327
+ generated: undefined;
328
+ }>;
329
+ lastSignInAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
330
+ name: string;
331
+ tableName: "users";
332
+ dataType: "object date";
333
+ data: Date;
334
+ driverParam: string;
335
+ notNull: false;
336
+ hasDefault: false;
337
+ isPrimaryKey: false;
338
+ isAutoincrement: false;
339
+ hasRuntimeDefault: false;
340
+ enumValues: undefined;
341
+ identity: undefined;
342
+ generated: undefined;
343
+ }>;
344
+ phone: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
345
+ name: string;
346
+ tableName: "users";
347
+ dataType: "string";
348
+ data: string;
349
+ driverParam: string;
350
+ notNull: false;
351
+ hasDefault: true;
352
+ isPrimaryKey: false;
353
+ isAutoincrement: false;
354
+ hasRuntimeDefault: false;
355
+ enumValues: undefined;
356
+ identity: undefined;
357
+ generated: undefined;
358
+ }>;
359
+ phoneChange: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
360
+ name: string;
361
+ tableName: "users";
362
+ dataType: "string";
363
+ data: string;
364
+ driverParam: string;
365
+ notNull: false;
366
+ hasDefault: true;
367
+ isPrimaryKey: false;
368
+ isAutoincrement: false;
369
+ hasRuntimeDefault: false;
370
+ enumValues: undefined;
371
+ identity: undefined;
372
+ generated: undefined;
373
+ }>;
374
+ phoneChangeSentAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
375
+ name: string;
376
+ tableName: "users";
377
+ dataType: "object date";
378
+ data: Date;
379
+ driverParam: string;
380
+ notNull: false;
381
+ hasDefault: false;
382
+ isPrimaryKey: false;
383
+ isAutoincrement: false;
384
+ hasRuntimeDefault: false;
385
+ enumValues: undefined;
386
+ identity: undefined;
387
+ generated: undefined;
388
+ }>;
389
+ phoneChangeToken: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
390
+ name: string;
391
+ tableName: "users";
392
+ dataType: "string";
393
+ data: string;
394
+ driverParam: string;
395
+ notNull: false;
396
+ hasDefault: true;
397
+ isPrimaryKey: false;
398
+ isAutoincrement: false;
399
+ hasRuntimeDefault: false;
400
+ enumValues: undefined;
401
+ identity: undefined;
402
+ generated: undefined;
403
+ }>;
404
+ phoneConfirmedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
405
+ name: string;
406
+ tableName: "users";
407
+ dataType: "object date";
408
+ data: Date;
409
+ driverParam: string;
410
+ notNull: false;
411
+ hasDefault: false;
412
+ isPrimaryKey: false;
413
+ isAutoincrement: false;
414
+ hasRuntimeDefault: false;
415
+ enumValues: undefined;
416
+ identity: undefined;
417
+ generated: undefined;
418
+ }>;
419
+ rawAppMetaData: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgJsonbBuilder, {
420
+ name: string;
421
+ tableName: "users";
422
+ dataType: "object json";
423
+ data: unknown;
424
+ driverParam: unknown;
425
+ notNull: false;
426
+ hasDefault: false;
427
+ isPrimaryKey: false;
428
+ isAutoincrement: false;
429
+ hasRuntimeDefault: false;
430
+ enumValues: undefined;
431
+ identity: undefined;
432
+ generated: undefined;
433
+ }>;
434
+ rawUserMetaData: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgJsonbBuilder, {
435
+ name: string;
436
+ tableName: "users";
437
+ dataType: "object json";
438
+ data: unknown;
439
+ driverParam: unknown;
440
+ notNull: false;
441
+ hasDefault: false;
442
+ isPrimaryKey: false;
443
+ isAutoincrement: false;
444
+ hasRuntimeDefault: false;
445
+ enumValues: undefined;
446
+ identity: undefined;
447
+ generated: undefined;
448
+ }>;
449
+ reauthenticationSentAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
450
+ name: string;
451
+ tableName: "users";
452
+ dataType: "object date";
453
+ data: Date;
454
+ driverParam: string;
455
+ notNull: false;
456
+ hasDefault: false;
457
+ isPrimaryKey: false;
458
+ isAutoincrement: false;
459
+ hasRuntimeDefault: false;
460
+ enumValues: undefined;
461
+ identity: undefined;
462
+ generated: undefined;
463
+ }>;
464
+ reauthenticationToken: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
465
+ name: string;
466
+ tableName: "users";
467
+ dataType: "string";
468
+ data: string;
469
+ driverParam: string;
470
+ notNull: false;
471
+ hasDefault: true;
472
+ isPrimaryKey: false;
473
+ isAutoincrement: false;
474
+ hasRuntimeDefault: false;
475
+ enumValues: undefined;
476
+ identity: undefined;
477
+ generated: undefined;
478
+ }>;
479
+ recoverySentAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
480
+ name: string;
481
+ tableName: "users";
482
+ dataType: "object date";
483
+ data: Date;
484
+ driverParam: string;
485
+ notNull: false;
486
+ hasDefault: false;
487
+ isPrimaryKey: false;
488
+ isAutoincrement: false;
489
+ hasRuntimeDefault: false;
490
+ enumValues: undefined;
491
+ identity: undefined;
492
+ generated: undefined;
493
+ }>;
494
+ recoveryToken: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
495
+ name: string;
496
+ tableName: "users";
497
+ dataType: "string";
498
+ data: string;
499
+ driverParam: string;
500
+ notNull: false;
501
+ hasDefault: false;
502
+ isPrimaryKey: false;
503
+ isAutoincrement: false;
504
+ hasRuntimeDefault: false;
505
+ enumValues: undefined;
506
+ identity: undefined;
507
+ generated: undefined;
508
+ }>;
509
+ role: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
510
+ name: string;
511
+ tableName: "users";
512
+ dataType: "string";
513
+ data: string;
514
+ driverParam: string;
515
+ notNull: false;
516
+ hasDefault: false;
517
+ isPrimaryKey: false;
518
+ isAutoincrement: false;
519
+ hasRuntimeDefault: false;
520
+ enumValues: undefined;
521
+ identity: undefined;
522
+ generated: undefined;
523
+ }>;
524
+ updatedAt: import("drizzle-orm/pg-core").PgBuildColumn<"users", import("drizzle-orm/pg-core").PgTimestampBuilder, {
525
+ name: string;
526
+ tableName: "users";
527
+ dataType: "object date";
528
+ data: Date;
529
+ driverParam: string;
530
+ notNull: false;
531
+ hasDefault: false;
532
+ isPrimaryKey: false;
533
+ isAutoincrement: false;
534
+ hasRuntimeDefault: false;
535
+ enumValues: undefined;
536
+ identity: undefined;
537
+ generated: undefined;
538
+ }>;
539
+ };
540
+ dialect: 'pg';
541
+ }>;
542
+ //#endregion
543
+ export { authSchema, authUsers };
@@ -0,0 +1,50 @@
1
+ import { sql } from "drizzle-orm";
2
+ import { boolean, jsonb, pgSchema, smallint, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
3
+ //#region src/auth-schema.ts
4
+ const authSchema = pgSchema("auth").existing();
5
+ /**
6
+ * Supabase's `auth.users`, in full.
7
+ *
8
+ * Reading it needs an RLS-bypassing client, and several columns hold credential
9
+ * material (`encryptedPassword`, the `*Token` columns). Select the columns you
10
+ * need rather than `select()`.
11
+ */
12
+ const authUsers = authSchema.table.withRLS("users", {
13
+ aud: varchar({ length: 255 }),
14
+ bannedUntil: timestamp("banned_until", { withTimezone: true }),
15
+ confirmationSentAt: timestamp("confirmation_sent_at", { withTimezone: true }),
16
+ confirmationToken: varchar("confirmation_token", { length: 255 }),
17
+ confirmedAt: timestamp("confirmed_at", { withTimezone: true }).generatedAlwaysAs(sql`LEAST(email_confirmed_at, phone_confirmed_at)`),
18
+ createdAt: timestamp("created_at", { withTimezone: true }),
19
+ deletedAt: timestamp("deleted_at", { withTimezone: true }),
20
+ email: varchar({ length: 255 }),
21
+ emailChange: varchar("email_change", { length: 255 }),
22
+ emailChangeConfirmStatus: smallint("email_change_confirm_status").default(0),
23
+ emailChangeSentAt: timestamp("email_change_sent_at", { withTimezone: true }),
24
+ emailChangeTokenCurrent: varchar("email_change_token_current", { length: 255 }).default(""),
25
+ emailChangeTokenNew: varchar("email_change_token_new", { length: 255 }),
26
+ emailConfirmedAt: timestamp("email_confirmed_at", { withTimezone: true }),
27
+ encryptedPassword: varchar("encrypted_password", { length: 255 }),
28
+ id: uuid().primaryKey(),
29
+ instanceId: uuid("instance_id"),
30
+ invitedAt: timestamp("invited_at", { withTimezone: true }),
31
+ isAnonymous: boolean("is_anonymous").default(false).notNull(),
32
+ isSsoUser: boolean("is_sso_user").default(false).notNull(),
33
+ isSuperAdmin: boolean("is_super_admin"),
34
+ lastSignInAt: timestamp("last_sign_in_at", { withTimezone: true }),
35
+ phone: text().default(sql`NULL`),
36
+ phoneChange: text("phone_change").default(""),
37
+ phoneChangeSentAt: timestamp("phone_change_sent_at", { withTimezone: true }),
38
+ phoneChangeToken: varchar("phone_change_token", { length: 255 }).default(""),
39
+ phoneConfirmedAt: timestamp("phone_confirmed_at", { withTimezone: true }),
40
+ rawAppMetaData: jsonb("raw_app_meta_data"),
41
+ rawUserMetaData: jsonb("raw_user_meta_data"),
42
+ reauthenticationSentAt: timestamp("reauthentication_sent_at", { withTimezone: true }),
43
+ reauthenticationToken: varchar("reauthentication_token", { length: 255 }).default(""),
44
+ recoverySentAt: timestamp("recovery_sent_at", { withTimezone: true }),
45
+ recoveryToken: varchar("recovery_token", { length: 255 }),
46
+ role: varchar({ length: 255 }),
47
+ updatedAt: timestamp("updated_at", { withTimezone: true })
48
+ });
49
+ //#endregion
50
+ export { authSchema, authUsers };
@@ -0,0 +1,20 @@
1
+ import { Config, defineConfig } from "drizzle-kit";
2
+ //#region src/config.d.ts
3
+ /**
4
+ * Roles a Supabase project ships that drizzle-kit's `provider: "supabase"` does
5
+ * not already exclude. That provider covers eight names (`anon`,
6
+ * `authenticator`, `authenticated`, `service_role`, `supabase_auth_admin`,
7
+ * `supabase_storage_admin`, `dashboard_user`, `supabase_admin`); a real
8
+ * instance has these too, and drizzle-kit manages every role it finds but
9
+ * cannot see declared, which means a `DROP ROLE` for each.
10
+ *
11
+ * The alternative is every consumer keeping a generated `roles.ts` nobody
12
+ * reads, or its own copy of this list, which rots as Supabase adds roles. That
13
+ * is the argument for it living in a versioned dependency.
14
+ *
15
+ * Verified against Supabase CLI 2.84.1 / Postgres 17.
16
+ */
17
+ declare const supabaseManagedRoles: readonly ["pg_checkpoint", "pg_database_owner", "pg_execute_server_program", "pg_monitor", "pg_read_all_data", "pg_read_all_settings", "pg_read_all_stats", "pg_read_server_files", "pg_signal_backend", "pg_stat_scan_tables", "pg_write_all_data", "pg_write_server_files", "pgbouncer", "postgres", "supabase_functions_admin", "supabase_read_only_user", "supabase_realtime_admin", "supabase_replication_admin"];
18
+ declare function defineDrizzleConfig(overrides?: Partial<Config>): ReturnType<typeof defineConfig>;
19
+ //#endregion
20
+ export { defineDrizzleConfig, supabaseManagedRoles };
@@ -0,0 +1,64 @@
1
+ import { defineConfig } from "drizzle-kit";
2
+ //#region src/config.ts
3
+ /**
4
+ * Roles a Supabase project ships that drizzle-kit's `provider: "supabase"` does
5
+ * not already exclude. That provider covers eight names (`anon`,
6
+ * `authenticator`, `authenticated`, `service_role`, `supabase_auth_admin`,
7
+ * `supabase_storage_admin`, `dashboard_user`, `supabase_admin`); a real
8
+ * instance has these too, and drizzle-kit manages every role it finds but
9
+ * cannot see declared, which means a `DROP ROLE` for each.
10
+ *
11
+ * The alternative is every consumer keeping a generated `roles.ts` nobody
12
+ * reads, or its own copy of this list, which rots as Supabase adds roles. That
13
+ * is the argument for it living in a versioned dependency.
14
+ *
15
+ * Verified against Supabase CLI 2.84.1 / Postgres 17.
16
+ */
17
+ const supabaseManagedRoles = [
18
+ "pg_checkpoint",
19
+ "pg_database_owner",
20
+ "pg_execute_server_program",
21
+ "pg_monitor",
22
+ "pg_read_all_data",
23
+ "pg_read_all_settings",
24
+ "pg_read_all_stats",
25
+ "pg_read_server_files",
26
+ "pg_signal_backend",
27
+ "pg_stat_scan_tables",
28
+ "pg_write_all_data",
29
+ "pg_write_server_files",
30
+ "pgbouncer",
31
+ "postgres",
32
+ "supabase_functions_admin",
33
+ "supabase_read_only_user",
34
+ "supabase_realtime_admin",
35
+ "supabase_replication_admin"
36
+ ];
37
+ /**
38
+ * Schemas drizzle-kit is allowed to diff. Supabase owns `auth`, `storage`,
39
+ * `realtime` and the rest, and changes them on upgrades, so migrating them is
40
+ * never right. Add your own schemas here rather than dropping the filter.
41
+ */
42
+ const DEFAULT_SCHEMA_FILTER = ["public"];
43
+ function defineDrizzleConfig(overrides = {}) {
44
+ const { entities, ...configOverrides } = overrides;
45
+ const roleOverrides = typeof entities?.roles === "object" ? entities.roles : {};
46
+ return defineConfig({
47
+ dbCredentials: { url: process.env.SUPABASE_DATABASE_URL ?? "" },
48
+ dialect: "postgresql",
49
+ entities: {
50
+ ...entities,
51
+ roles: {
52
+ ...roleOverrides,
53
+ exclude: [...roleOverrides.exclude ?? [], ...supabaseManagedRoles],
54
+ provider: "supabase"
55
+ }
56
+ },
57
+ out: "./supabase/migrations",
58
+ schema: "./src/schema.ts",
59
+ schemaFilter: DEFAULT_SCHEMA_FILTER,
60
+ ...configOverrides
61
+ });
62
+ }
63
+ //#endregion
64
+ export { defineDrizzleConfig, supabaseManagedRoles };