@baseworks/organization 0.2.0

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.
Files changed (39) hide show
  1. package/dist/chunk-5UCSEIJS.js +64 -0
  2. package/dist/cli.d.ts +18 -0
  3. package/dist/cli.js +534 -0
  4. package/dist/index.d.ts +199 -0
  5. package/dist/index.js +335 -0
  6. package/dist/schema/pg/index.d.ts +562 -0
  7. package/dist/schema/pg/index.js +62 -0
  8. package/dist/schema/sqlite/index.d.ts +604 -0
  9. package/dist/schema/sqlite/index.js +12 -0
  10. package/package.json +37 -0
  11. package/src/__tests__/cli-env.test.ts +158 -0
  12. package/src/__tests__/cli-org.test.ts +154 -0
  13. package/src/__tests__/cli-proj.test.ts +157 -0
  14. package/src/__tests__/cli-ws.test.ts +156 -0
  15. package/src/__tests__/helpers.ts +29 -0
  16. package/src/cli.ts +682 -0
  17. package/src/index.ts +5 -0
  18. package/src/operations/bootstrap.ts +50 -0
  19. package/src/repo/environments.ts +82 -0
  20. package/src/repo/index.ts +9 -0
  21. package/src/repo/organizations.ts +96 -0
  22. package/src/repo/projects.ts +106 -0
  23. package/src/repo/workspaces.ts +87 -0
  24. package/src/schema/environments.ts +14 -0
  25. package/src/schema/index.ts +5 -0
  26. package/src/schema/organizations.ts +11 -0
  27. package/src/schema/pg/environments.ts +14 -0
  28. package/src/schema/pg/index.ts +4 -0
  29. package/src/schema/pg/organizations.ts +11 -0
  30. package/src/schema/pg/projects.ts +16 -0
  31. package/src/schema/pg/workspaces.ts +15 -0
  32. package/src/schema/projects.ts +16 -0
  33. package/src/schema/sqlite/environments.ts +14 -0
  34. package/src/schema/sqlite/index.ts +4 -0
  35. package/src/schema/sqlite/organizations.ts +11 -0
  36. package/src/schema/sqlite/projects.ts +16 -0
  37. package/src/schema/sqlite/workspaces.ts +15 -0
  38. package/src/schema/workspaces.ts +15 -0
  39. package/src/types.ts +88 -0
@@ -0,0 +1,562 @@
1
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
2
+
3
+ declare const organizations: drizzle_orm_pg_core.PgTableWithColumns<{
4
+ name: "organizations";
5
+ schema: undefined;
6
+ columns: {
7
+ id: drizzle_orm_pg_core.PgColumn<{
8
+ name: "id";
9
+ tableName: "organizations";
10
+ dataType: "string";
11
+ columnType: "PgText";
12
+ data: string;
13
+ driverParam: string;
14
+ notNull: true;
15
+ hasDefault: false;
16
+ isPrimaryKey: true;
17
+ isAutoincrement: false;
18
+ hasRuntimeDefault: false;
19
+ enumValues: [string, ...string[]];
20
+ baseColumn: never;
21
+ identity: undefined;
22
+ generated: undefined;
23
+ }, {}, {}>;
24
+ shortId: drizzle_orm_pg_core.PgColumn<{
25
+ name: "short_id";
26
+ tableName: "organizations";
27
+ dataType: "string";
28
+ columnType: "PgText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {}>;
41
+ slug: drizzle_orm_pg_core.PgColumn<{
42
+ name: "slug";
43
+ tableName: "organizations";
44
+ dataType: "string";
45
+ columnType: "PgText";
46
+ data: string;
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: false;
50
+ isPrimaryKey: false;
51
+ isAutoincrement: false;
52
+ hasRuntimeDefault: false;
53
+ enumValues: [string, ...string[]];
54
+ baseColumn: never;
55
+ identity: undefined;
56
+ generated: undefined;
57
+ }, {}, {}>;
58
+ name: drizzle_orm_pg_core.PgColumn<{
59
+ name: "name";
60
+ tableName: "organizations";
61
+ dataType: "string";
62
+ columnType: "PgText";
63
+ data: string;
64
+ driverParam: string;
65
+ notNull: true;
66
+ hasDefault: false;
67
+ isPrimaryKey: false;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: false;
70
+ enumValues: [string, ...string[]];
71
+ baseColumn: never;
72
+ identity: undefined;
73
+ generated: undefined;
74
+ }, {}, {}>;
75
+ metadata: drizzle_orm_pg_core.PgColumn<{
76
+ name: "metadata";
77
+ tableName: "organizations";
78
+ dataType: "string";
79
+ columnType: "PgText";
80
+ data: string;
81
+ driverParam: string;
82
+ notNull: false;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: [string, ...string[]];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {}>;
92
+ createdAt: drizzle_orm_pg_core.PgColumn<{
93
+ name: "created_at";
94
+ tableName: "organizations";
95
+ dataType: "number";
96
+ columnType: "PgBigInt53";
97
+ data: number;
98
+ driverParam: string | number;
99
+ notNull: true;
100
+ hasDefault: false;
101
+ isPrimaryKey: false;
102
+ isAutoincrement: false;
103
+ hasRuntimeDefault: false;
104
+ enumValues: undefined;
105
+ baseColumn: never;
106
+ identity: undefined;
107
+ generated: undefined;
108
+ }, {}, {}>;
109
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
110
+ name: "updated_at";
111
+ tableName: "organizations";
112
+ dataType: "number";
113
+ columnType: "PgBigInt53";
114
+ data: number;
115
+ driverParam: string | number;
116
+ notNull: true;
117
+ hasDefault: false;
118
+ isPrimaryKey: false;
119
+ isAutoincrement: false;
120
+ hasRuntimeDefault: false;
121
+ enumValues: undefined;
122
+ baseColumn: never;
123
+ identity: undefined;
124
+ generated: undefined;
125
+ }, {}, {}>;
126
+ };
127
+ dialect: "pg";
128
+ }>;
129
+
130
+ declare const workspaces: drizzle_orm_pg_core.PgTableWithColumns<{
131
+ name: "workspaces";
132
+ schema: undefined;
133
+ columns: {
134
+ id: drizzle_orm_pg_core.PgColumn<{
135
+ name: "id";
136
+ tableName: "workspaces";
137
+ dataType: "string";
138
+ columnType: "PgText";
139
+ data: string;
140
+ driverParam: string;
141
+ notNull: true;
142
+ hasDefault: false;
143
+ isPrimaryKey: true;
144
+ isAutoincrement: false;
145
+ hasRuntimeDefault: false;
146
+ enumValues: [string, ...string[]];
147
+ baseColumn: never;
148
+ identity: undefined;
149
+ generated: undefined;
150
+ }, {}, {}>;
151
+ organizationId: drizzle_orm_pg_core.PgColumn<{
152
+ name: "organization_id";
153
+ tableName: "workspaces";
154
+ dataType: "string";
155
+ columnType: "PgText";
156
+ data: string;
157
+ driverParam: string;
158
+ notNull: true;
159
+ hasDefault: false;
160
+ isPrimaryKey: false;
161
+ isAutoincrement: false;
162
+ hasRuntimeDefault: false;
163
+ enumValues: [string, ...string[]];
164
+ baseColumn: never;
165
+ identity: undefined;
166
+ generated: undefined;
167
+ }, {}, {}>;
168
+ shortId: drizzle_orm_pg_core.PgColumn<{
169
+ name: "short_id";
170
+ tableName: "workspaces";
171
+ dataType: "string";
172
+ columnType: "PgText";
173
+ data: string;
174
+ driverParam: string;
175
+ notNull: true;
176
+ hasDefault: false;
177
+ isPrimaryKey: false;
178
+ isAutoincrement: false;
179
+ hasRuntimeDefault: false;
180
+ enumValues: [string, ...string[]];
181
+ baseColumn: never;
182
+ identity: undefined;
183
+ generated: undefined;
184
+ }, {}, {}>;
185
+ slug: drizzle_orm_pg_core.PgColumn<{
186
+ name: "slug";
187
+ tableName: "workspaces";
188
+ dataType: "string";
189
+ columnType: "PgText";
190
+ data: string;
191
+ driverParam: string;
192
+ notNull: true;
193
+ hasDefault: false;
194
+ isPrimaryKey: false;
195
+ isAutoincrement: false;
196
+ hasRuntimeDefault: false;
197
+ enumValues: [string, ...string[]];
198
+ baseColumn: never;
199
+ identity: undefined;
200
+ generated: undefined;
201
+ }, {}, {}>;
202
+ name: drizzle_orm_pg_core.PgColumn<{
203
+ name: "name";
204
+ tableName: "workspaces";
205
+ dataType: "string";
206
+ columnType: "PgText";
207
+ data: string;
208
+ driverParam: string;
209
+ notNull: true;
210
+ hasDefault: false;
211
+ isPrimaryKey: false;
212
+ isAutoincrement: false;
213
+ hasRuntimeDefault: false;
214
+ enumValues: [string, ...string[]];
215
+ baseColumn: never;
216
+ identity: undefined;
217
+ generated: undefined;
218
+ }, {}, {}>;
219
+ isDefault: drizzle_orm_pg_core.PgColumn<{
220
+ name: "is_default";
221
+ tableName: "workspaces";
222
+ dataType: "boolean";
223
+ columnType: "PgBoolean";
224
+ data: boolean;
225
+ driverParam: boolean;
226
+ notNull: true;
227
+ hasDefault: true;
228
+ isPrimaryKey: false;
229
+ isAutoincrement: false;
230
+ hasRuntimeDefault: false;
231
+ enumValues: undefined;
232
+ baseColumn: never;
233
+ identity: undefined;
234
+ generated: undefined;
235
+ }, {}, {}>;
236
+ createdAt: drizzle_orm_pg_core.PgColumn<{
237
+ name: "created_at";
238
+ tableName: "workspaces";
239
+ dataType: "number";
240
+ columnType: "PgBigInt53";
241
+ data: number;
242
+ driverParam: string | number;
243
+ notNull: true;
244
+ hasDefault: false;
245
+ isPrimaryKey: false;
246
+ isAutoincrement: false;
247
+ hasRuntimeDefault: false;
248
+ enumValues: undefined;
249
+ baseColumn: never;
250
+ identity: undefined;
251
+ generated: undefined;
252
+ }, {}, {}>;
253
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
254
+ name: "updated_at";
255
+ tableName: "workspaces";
256
+ dataType: "number";
257
+ columnType: "PgBigInt53";
258
+ data: number;
259
+ driverParam: string | number;
260
+ notNull: true;
261
+ hasDefault: false;
262
+ isPrimaryKey: false;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
265
+ enumValues: undefined;
266
+ baseColumn: never;
267
+ identity: undefined;
268
+ generated: undefined;
269
+ }, {}, {}>;
270
+ };
271
+ dialect: "pg";
272
+ }>;
273
+
274
+ declare const projects: drizzle_orm_pg_core.PgTableWithColumns<{
275
+ name: "projects";
276
+ schema: undefined;
277
+ columns: {
278
+ id: drizzle_orm_pg_core.PgColumn<{
279
+ name: "id";
280
+ tableName: "projects";
281
+ dataType: "string";
282
+ columnType: "PgText";
283
+ data: string;
284
+ driverParam: string;
285
+ notNull: true;
286
+ hasDefault: false;
287
+ isPrimaryKey: true;
288
+ isAutoincrement: false;
289
+ hasRuntimeDefault: false;
290
+ enumValues: [string, ...string[]];
291
+ baseColumn: never;
292
+ identity: undefined;
293
+ generated: undefined;
294
+ }, {}, {}>;
295
+ workspaceId: drizzle_orm_pg_core.PgColumn<{
296
+ name: "workspace_id";
297
+ tableName: "projects";
298
+ dataType: "string";
299
+ columnType: "PgText";
300
+ data: string;
301
+ driverParam: string;
302
+ notNull: true;
303
+ hasDefault: false;
304
+ isPrimaryKey: false;
305
+ isAutoincrement: false;
306
+ hasRuntimeDefault: false;
307
+ enumValues: [string, ...string[]];
308
+ baseColumn: never;
309
+ identity: undefined;
310
+ generated: undefined;
311
+ }, {}, {}>;
312
+ shortId: drizzle_orm_pg_core.PgColumn<{
313
+ name: "short_id";
314
+ tableName: "projects";
315
+ dataType: "string";
316
+ columnType: "PgText";
317
+ data: string;
318
+ driverParam: string;
319
+ notNull: true;
320
+ hasDefault: false;
321
+ isPrimaryKey: false;
322
+ isAutoincrement: false;
323
+ hasRuntimeDefault: false;
324
+ enumValues: [string, ...string[]];
325
+ baseColumn: never;
326
+ identity: undefined;
327
+ generated: undefined;
328
+ }, {}, {}>;
329
+ slug: drizzle_orm_pg_core.PgColumn<{
330
+ name: "slug";
331
+ tableName: "projects";
332
+ dataType: "string";
333
+ columnType: "PgText";
334
+ data: string;
335
+ driverParam: string;
336
+ notNull: true;
337
+ hasDefault: false;
338
+ isPrimaryKey: false;
339
+ isAutoincrement: false;
340
+ hasRuntimeDefault: false;
341
+ enumValues: [string, ...string[]];
342
+ baseColumn: never;
343
+ identity: undefined;
344
+ generated: undefined;
345
+ }, {}, {}>;
346
+ name: drizzle_orm_pg_core.PgColumn<{
347
+ name: "name";
348
+ tableName: "projects";
349
+ dataType: "string";
350
+ columnType: "PgText";
351
+ data: string;
352
+ driverParam: string;
353
+ notNull: true;
354
+ hasDefault: false;
355
+ isPrimaryKey: false;
356
+ isAutoincrement: false;
357
+ hasRuntimeDefault: false;
358
+ enumValues: [string, ...string[]];
359
+ baseColumn: never;
360
+ identity: undefined;
361
+ generated: undefined;
362
+ }, {}, {}>;
363
+ isDefault: drizzle_orm_pg_core.PgColumn<{
364
+ name: "is_default";
365
+ tableName: "projects";
366
+ dataType: "boolean";
367
+ columnType: "PgBoolean";
368
+ data: boolean;
369
+ driverParam: boolean;
370
+ notNull: true;
371
+ hasDefault: true;
372
+ isPrimaryKey: false;
373
+ isAutoincrement: false;
374
+ hasRuntimeDefault: false;
375
+ enumValues: undefined;
376
+ baseColumn: never;
377
+ identity: undefined;
378
+ generated: undefined;
379
+ }, {}, {}>;
380
+ metadata: drizzle_orm_pg_core.PgColumn<{
381
+ name: "metadata";
382
+ tableName: "projects";
383
+ dataType: "string";
384
+ columnType: "PgText";
385
+ data: string;
386
+ driverParam: string;
387
+ notNull: false;
388
+ hasDefault: false;
389
+ isPrimaryKey: false;
390
+ isAutoincrement: false;
391
+ hasRuntimeDefault: false;
392
+ enumValues: [string, ...string[]];
393
+ baseColumn: never;
394
+ identity: undefined;
395
+ generated: undefined;
396
+ }, {}, {}>;
397
+ createdAt: drizzle_orm_pg_core.PgColumn<{
398
+ name: "created_at";
399
+ tableName: "projects";
400
+ dataType: "number";
401
+ columnType: "PgBigInt53";
402
+ data: number;
403
+ driverParam: string | number;
404
+ notNull: true;
405
+ hasDefault: false;
406
+ isPrimaryKey: false;
407
+ isAutoincrement: false;
408
+ hasRuntimeDefault: false;
409
+ enumValues: undefined;
410
+ baseColumn: never;
411
+ identity: undefined;
412
+ generated: undefined;
413
+ }, {}, {}>;
414
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
415
+ name: "updated_at";
416
+ tableName: "projects";
417
+ dataType: "number";
418
+ columnType: "PgBigInt53";
419
+ data: number;
420
+ driverParam: string | number;
421
+ notNull: true;
422
+ hasDefault: false;
423
+ isPrimaryKey: false;
424
+ isAutoincrement: false;
425
+ hasRuntimeDefault: false;
426
+ enumValues: undefined;
427
+ baseColumn: never;
428
+ identity: undefined;
429
+ generated: undefined;
430
+ }, {}, {}>;
431
+ };
432
+ dialect: "pg";
433
+ }>;
434
+
435
+ declare const environments: drizzle_orm_pg_core.PgTableWithColumns<{
436
+ name: "environments";
437
+ schema: undefined;
438
+ columns: {
439
+ id: drizzle_orm_pg_core.PgColumn<{
440
+ name: "id";
441
+ tableName: "environments";
442
+ dataType: "string";
443
+ columnType: "PgText";
444
+ data: string;
445
+ driverParam: string;
446
+ notNull: true;
447
+ hasDefault: false;
448
+ isPrimaryKey: true;
449
+ isAutoincrement: false;
450
+ hasRuntimeDefault: false;
451
+ enumValues: [string, ...string[]];
452
+ baseColumn: never;
453
+ identity: undefined;
454
+ generated: undefined;
455
+ }, {}, {}>;
456
+ projectId: drizzle_orm_pg_core.PgColumn<{
457
+ name: "project_id";
458
+ tableName: "environments";
459
+ dataType: "string";
460
+ columnType: "PgText";
461
+ data: string;
462
+ driverParam: string;
463
+ notNull: true;
464
+ hasDefault: false;
465
+ isPrimaryKey: false;
466
+ isAutoincrement: false;
467
+ hasRuntimeDefault: false;
468
+ enumValues: [string, ...string[]];
469
+ baseColumn: never;
470
+ identity: undefined;
471
+ generated: undefined;
472
+ }, {}, {}>;
473
+ shortId: drizzle_orm_pg_core.PgColumn<{
474
+ name: "short_id";
475
+ tableName: "environments";
476
+ dataType: "string";
477
+ columnType: "PgText";
478
+ data: string;
479
+ driverParam: string;
480
+ notNull: true;
481
+ hasDefault: false;
482
+ isPrimaryKey: false;
483
+ isAutoincrement: false;
484
+ hasRuntimeDefault: false;
485
+ enumValues: [string, ...string[]];
486
+ baseColumn: never;
487
+ identity: undefined;
488
+ generated: undefined;
489
+ }, {}, {}>;
490
+ slug: drizzle_orm_pg_core.PgColumn<{
491
+ name: "slug";
492
+ tableName: "environments";
493
+ dataType: "string";
494
+ columnType: "PgText";
495
+ data: string;
496
+ driverParam: string;
497
+ notNull: true;
498
+ hasDefault: false;
499
+ isPrimaryKey: false;
500
+ isAutoincrement: false;
501
+ hasRuntimeDefault: false;
502
+ enumValues: [string, ...string[]];
503
+ baseColumn: never;
504
+ identity: undefined;
505
+ generated: undefined;
506
+ }, {}, {}>;
507
+ name: drizzle_orm_pg_core.PgColumn<{
508
+ name: "name";
509
+ tableName: "environments";
510
+ dataType: "string";
511
+ columnType: "PgText";
512
+ data: string;
513
+ driverParam: string;
514
+ notNull: true;
515
+ hasDefault: false;
516
+ isPrimaryKey: false;
517
+ isAutoincrement: false;
518
+ hasRuntimeDefault: false;
519
+ enumValues: [string, ...string[]];
520
+ baseColumn: never;
521
+ identity: undefined;
522
+ generated: undefined;
523
+ }, {}, {}>;
524
+ createdAt: drizzle_orm_pg_core.PgColumn<{
525
+ name: "created_at";
526
+ tableName: "environments";
527
+ dataType: "number";
528
+ columnType: "PgBigInt53";
529
+ data: number;
530
+ driverParam: string | number;
531
+ notNull: true;
532
+ hasDefault: false;
533
+ isPrimaryKey: false;
534
+ isAutoincrement: false;
535
+ hasRuntimeDefault: false;
536
+ enumValues: undefined;
537
+ baseColumn: never;
538
+ identity: undefined;
539
+ generated: undefined;
540
+ }, {}, {}>;
541
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
542
+ name: "updated_at";
543
+ tableName: "environments";
544
+ dataType: "number";
545
+ columnType: "PgBigInt53";
546
+ data: number;
547
+ driverParam: string | number;
548
+ notNull: true;
549
+ hasDefault: false;
550
+ isPrimaryKey: false;
551
+ isAutoincrement: false;
552
+ hasRuntimeDefault: false;
553
+ enumValues: undefined;
554
+ baseColumn: never;
555
+ identity: undefined;
556
+ generated: undefined;
557
+ }, {}, {}>;
558
+ };
559
+ dialect: "pg";
560
+ }>;
561
+
562
+ export { environments, organizations, projects, workspaces };
@@ -0,0 +1,62 @@
1
+ // src/schema/pg/organizations.ts
2
+ import { bigint, pgTable, text } from "drizzle-orm/pg-core";
3
+ var organizations = pgTable("organizations", {
4
+ id: text("id").primaryKey(),
5
+ shortId: text("short_id").notNull().unique(),
6
+ slug: text("slug").notNull().unique(),
7
+ name: text("name").notNull(),
8
+ metadata: text("metadata"),
9
+ createdAt: bigint("created_at", { mode: "number" }).notNull(),
10
+ updatedAt: bigint("updated_at", { mode: "number" }).notNull()
11
+ });
12
+
13
+ // src/schema/pg/workspaces.ts
14
+ import { bigint as bigint2, boolean, pgTable as pgTable2, text as text2, uniqueIndex } from "drizzle-orm/pg-core";
15
+ var workspaces = pgTable2("workspaces", {
16
+ id: text2("id").primaryKey(),
17
+ organizationId: text2("organization_id").notNull().references(() => organizations.id, { onDelete: "cascade" }),
18
+ shortId: text2("short_id").notNull().unique(),
19
+ slug: text2("slug").notNull(),
20
+ name: text2("name").notNull(),
21
+ isDefault: boolean("is_default").notNull().default(false),
22
+ createdAt: bigint2("created_at", { mode: "number" }).notNull(),
23
+ updatedAt: bigint2("updated_at", { mode: "number" }).notNull()
24
+ }, (t) => [
25
+ uniqueIndex("workspaces_org_slug_uniq").on(t.organizationId, t.slug)
26
+ ]);
27
+
28
+ // src/schema/pg/projects.ts
29
+ import { bigint as bigint3, boolean as boolean2, pgTable as pgTable3, text as text3, uniqueIndex as uniqueIndex2 } from "drizzle-orm/pg-core";
30
+ var projects = pgTable3("projects", {
31
+ id: text3("id").primaryKey(),
32
+ workspaceId: text3("workspace_id").notNull().references(() => workspaces.id, { onDelete: "cascade" }),
33
+ shortId: text3("short_id").notNull().unique(),
34
+ slug: text3("slug").notNull(),
35
+ name: text3("name").notNull(),
36
+ isDefault: boolean2("is_default").notNull().default(false),
37
+ metadata: text3("metadata"),
38
+ createdAt: bigint3("created_at", { mode: "number" }).notNull(),
39
+ updatedAt: bigint3("updated_at", { mode: "number" }).notNull()
40
+ }, (t) => [
41
+ uniqueIndex2("projects_workspace_slug_uniq").on(t.workspaceId, t.slug)
42
+ ]);
43
+
44
+ // src/schema/pg/environments.ts
45
+ import { bigint as bigint4, pgTable as pgTable4, text as text4, uniqueIndex as uniqueIndex3 } from "drizzle-orm/pg-core";
46
+ var environments = pgTable4("environments", {
47
+ id: text4("id").primaryKey(),
48
+ projectId: text4("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
49
+ shortId: text4("short_id").notNull().unique(),
50
+ slug: text4("slug").notNull(),
51
+ name: text4("name").notNull(),
52
+ createdAt: bigint4("created_at", { mode: "number" }).notNull(),
53
+ updatedAt: bigint4("updated_at", { mode: "number" }).notNull()
54
+ }, (t) => [
55
+ uniqueIndex3("environments_project_slug_uniq").on(t.projectId, t.slug)
56
+ ]);
57
+ export {
58
+ environments,
59
+ organizations,
60
+ projects,
61
+ workspaces
62
+ };