@commonpub/schema 0.1.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 (67) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +87 -0
  3. package/dist/admin.d.ts +256 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/admin.js +33 -0
  6. package/dist/admin.js.map +1 -0
  7. package/dist/auth.d.ts +1552 -0
  8. package/dist/auth.d.ts.map +1 -0
  9. package/dist/auth.js +140 -0
  10. package/dist/auth.js.map +1 -0
  11. package/dist/content.d.ts +1129 -0
  12. package/dist/content.d.ts.map +1 -0
  13. package/dist/content.js +152 -0
  14. package/dist/content.js.map +1 -0
  15. package/dist/contest.d.ts +466 -0
  16. package/dist/contest.d.ts.map +1 -0
  17. package/dist/contest.js +64 -0
  18. package/dist/contest.js.map +1 -0
  19. package/dist/docs.d.ts +545 -0
  20. package/dist/docs.d.ts.map +1 -0
  21. package/dist/docs.js +78 -0
  22. package/dist/docs.js.map +1 -0
  23. package/dist/enums.d.ts +31 -0
  24. package/dist/enums.d.ts.map +1 -0
  25. package/dist/enums.js +149 -0
  26. package/dist/enums.js.map +1 -0
  27. package/dist/federation.d.ts +613 -0
  28. package/dist/federation.d.ts.map +1 -0
  29. package/dist/federation.js +63 -0
  30. package/dist/federation.js.map +1 -0
  31. package/dist/files.d.ts +259 -0
  32. package/dist/files.d.ts.map +1 -0
  33. package/dist/files.js +33 -0
  34. package/dist/files.js.map +1 -0
  35. package/dist/hub.d.ts +1235 -0
  36. package/dist/hub.d.ts.map +1 -0
  37. package/dist/hub.js +205 -0
  38. package/dist/hub.js.map +1 -0
  39. package/dist/index.d.ts +16 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +31 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/learning.d.ts +960 -0
  44. package/dist/learning.d.ts.map +1 -0
  45. package/dist/learning.js +142 -0
  46. package/dist/learning.js.map +1 -0
  47. package/dist/openapi.d.ts +2 -0
  48. package/dist/openapi.d.ts.map +1 -0
  49. package/dist/openapi.js +322 -0
  50. package/dist/openapi.js.map +1 -0
  51. package/dist/product.d.ts +481 -0
  52. package/dist/product.d.ts.map +1 -0
  53. package/dist/product.js +66 -0
  54. package/dist/product.js.map +1 -0
  55. package/dist/social.d.ts +1027 -0
  56. package/dist/social.d.ts.map +1 -0
  57. package/dist/social.js +166 -0
  58. package/dist/social.js.map +1 -0
  59. package/dist/validators.d.ts +766 -0
  60. package/dist/validators.d.ts.map +1 -0
  61. package/dist/validators.js +385 -0
  62. package/dist/validators.js.map +1 -0
  63. package/dist/video.d.ts +353 -0
  64. package/dist/video.d.ts.map +1 -0
  65. package/dist/video.js +36 -0
  66. package/dist/video.js.map +1 -0
  67. package/package.json +77 -0
@@ -0,0 +1,481 @@
1
+ export declare const products: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "products";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "products";
8
+ dataType: "string";
9
+ columnType: "PgUUID";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ name: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "name";
24
+ tableName: "products";
25
+ dataType: "string";
26
+ columnType: "PgVarchar";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {
39
+ length: 255;
40
+ }>;
41
+ slug: import("drizzle-orm/pg-core").PgColumn<{
42
+ name: "slug";
43
+ tableName: "products";
44
+ dataType: "string";
45
+ columnType: "PgVarchar";
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
+ length: 255;
59
+ }>;
60
+ description: import("drizzle-orm/pg-core").PgColumn<{
61
+ name: "description";
62
+ tableName: "products";
63
+ dataType: "string";
64
+ columnType: "PgText";
65
+ data: string;
66
+ driverParam: string;
67
+ notNull: false;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: [string, ...string[]];
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {}>;
77
+ hubId: import("drizzle-orm/pg-core").PgColumn<{
78
+ name: "hub_id";
79
+ tableName: "products";
80
+ dataType: "string";
81
+ columnType: "PgUUID";
82
+ data: string;
83
+ driverParam: string;
84
+ notNull: true;
85
+ hasDefault: false;
86
+ isPrimaryKey: false;
87
+ isAutoincrement: false;
88
+ hasRuntimeDefault: false;
89
+ enumValues: undefined;
90
+ baseColumn: never;
91
+ identity: undefined;
92
+ generated: undefined;
93
+ }, {}, {}>;
94
+ category: import("drizzle-orm/pg-core").PgColumn<{
95
+ name: "category";
96
+ tableName: "products";
97
+ dataType: "string";
98
+ columnType: "PgEnumColumn";
99
+ data: "other" | "microcontroller" | "sbc" | "sensor" | "actuator" | "display" | "communication" | "power" | "mechanical" | "software" | "tool";
100
+ driverParam: string;
101
+ notNull: false;
102
+ hasDefault: false;
103
+ isPrimaryKey: false;
104
+ isAutoincrement: false;
105
+ hasRuntimeDefault: false;
106
+ enumValues: ["microcontroller", "sbc", "sensor", "actuator", "display", "communication", "power", "mechanical", "software", "tool", "other"];
107
+ baseColumn: never;
108
+ identity: undefined;
109
+ generated: undefined;
110
+ }, {}, {}>;
111
+ specs: import("drizzle-orm/pg-core").PgColumn<{
112
+ name: "specs";
113
+ tableName: "products";
114
+ dataType: "json";
115
+ columnType: "PgJsonb";
116
+ data: Record<string, string>;
117
+ driverParam: unknown;
118
+ notNull: false;
119
+ hasDefault: false;
120
+ isPrimaryKey: false;
121
+ isAutoincrement: false;
122
+ hasRuntimeDefault: false;
123
+ enumValues: undefined;
124
+ baseColumn: never;
125
+ identity: undefined;
126
+ generated: undefined;
127
+ }, {}, {
128
+ $type: Record<string, string>;
129
+ }>;
130
+ imageUrl: import("drizzle-orm/pg-core").PgColumn<{
131
+ name: "image_url";
132
+ tableName: "products";
133
+ dataType: "string";
134
+ columnType: "PgText";
135
+ data: string;
136
+ driverParam: string;
137
+ notNull: false;
138
+ hasDefault: false;
139
+ isPrimaryKey: false;
140
+ isAutoincrement: false;
141
+ hasRuntimeDefault: false;
142
+ enumValues: [string, ...string[]];
143
+ baseColumn: never;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }, {}, {}>;
147
+ purchaseUrl: import("drizzle-orm/pg-core").PgColumn<{
148
+ name: "purchase_url";
149
+ tableName: "products";
150
+ dataType: "string";
151
+ columnType: "PgText";
152
+ data: string;
153
+ driverParam: string;
154
+ notNull: false;
155
+ hasDefault: false;
156
+ isPrimaryKey: false;
157
+ isAutoincrement: false;
158
+ hasRuntimeDefault: false;
159
+ enumValues: [string, ...string[]];
160
+ baseColumn: never;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }, {}, {}>;
164
+ datasheetUrl: import("drizzle-orm/pg-core").PgColumn<{
165
+ name: "datasheet_url";
166
+ tableName: "products";
167
+ dataType: "string";
168
+ columnType: "PgText";
169
+ data: string;
170
+ driverParam: string;
171
+ notNull: false;
172
+ hasDefault: false;
173
+ isPrimaryKey: false;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: false;
176
+ enumValues: [string, ...string[]];
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {}>;
181
+ alternatives: import("drizzle-orm/pg-core").PgColumn<{
182
+ name: "alternatives";
183
+ tableName: "products";
184
+ dataType: "json";
185
+ columnType: "PgJsonb";
186
+ data: {
187
+ productId: string;
188
+ reason: string;
189
+ }[];
190
+ driverParam: unknown;
191
+ notNull: false;
192
+ hasDefault: false;
193
+ isPrimaryKey: false;
194
+ isAutoincrement: false;
195
+ hasRuntimeDefault: false;
196
+ enumValues: undefined;
197
+ baseColumn: never;
198
+ identity: undefined;
199
+ generated: undefined;
200
+ }, {}, {
201
+ $type: {
202
+ productId: string;
203
+ reason: string;
204
+ }[];
205
+ }>;
206
+ pricing: import("drizzle-orm/pg-core").PgColumn<{
207
+ name: "pricing";
208
+ tableName: "products";
209
+ dataType: "json";
210
+ columnType: "PgJsonb";
211
+ data: {
212
+ min?: number;
213
+ max?: number;
214
+ currency?: string;
215
+ asOf?: string;
216
+ };
217
+ driverParam: unknown;
218
+ notNull: false;
219
+ hasDefault: false;
220
+ isPrimaryKey: false;
221
+ isAutoincrement: false;
222
+ hasRuntimeDefault: false;
223
+ enumValues: undefined;
224
+ baseColumn: never;
225
+ identity: undefined;
226
+ generated: undefined;
227
+ }, {}, {
228
+ $type: {
229
+ min?: number;
230
+ max?: number;
231
+ currency?: string;
232
+ asOf?: string;
233
+ };
234
+ }>;
235
+ status: import("drizzle-orm/pg-core").PgColumn<{
236
+ name: "status";
237
+ tableName: "products";
238
+ dataType: "string";
239
+ columnType: "PgEnumColumn";
240
+ data: "active" | "discontinued" | "preview";
241
+ driverParam: string;
242
+ notNull: true;
243
+ hasDefault: true;
244
+ isPrimaryKey: false;
245
+ isAutoincrement: false;
246
+ hasRuntimeDefault: false;
247
+ enumValues: ["active", "discontinued", "preview"];
248
+ baseColumn: never;
249
+ identity: undefined;
250
+ generated: undefined;
251
+ }, {}, {}>;
252
+ createdById: import("drizzle-orm/pg-core").PgColumn<{
253
+ name: "created_by_id";
254
+ tableName: "products";
255
+ dataType: "string";
256
+ columnType: "PgUUID";
257
+ data: string;
258
+ driverParam: string;
259
+ notNull: true;
260
+ hasDefault: false;
261
+ isPrimaryKey: false;
262
+ isAutoincrement: false;
263
+ hasRuntimeDefault: false;
264
+ enumValues: undefined;
265
+ baseColumn: never;
266
+ identity: undefined;
267
+ generated: undefined;
268
+ }, {}, {}>;
269
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
270
+ name: "created_at";
271
+ tableName: "products";
272
+ dataType: "date";
273
+ columnType: "PgTimestamp";
274
+ data: Date;
275
+ driverParam: string;
276
+ notNull: true;
277
+ hasDefault: true;
278
+ isPrimaryKey: false;
279
+ isAutoincrement: false;
280
+ hasRuntimeDefault: false;
281
+ enumValues: undefined;
282
+ baseColumn: never;
283
+ identity: undefined;
284
+ generated: undefined;
285
+ }, {}, {}>;
286
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
287
+ name: "updated_at";
288
+ tableName: "products";
289
+ dataType: "date";
290
+ columnType: "PgTimestamp";
291
+ data: Date;
292
+ driverParam: string;
293
+ notNull: true;
294
+ hasDefault: true;
295
+ isPrimaryKey: false;
296
+ isAutoincrement: false;
297
+ hasRuntimeDefault: false;
298
+ enumValues: undefined;
299
+ baseColumn: never;
300
+ identity: undefined;
301
+ generated: undefined;
302
+ }, {}, {}>;
303
+ };
304
+ dialect: "pg";
305
+ }>;
306
+ export declare const contentProducts: import("drizzle-orm/pg-core").PgTableWithColumns<{
307
+ name: "content_products";
308
+ schema: undefined;
309
+ columns: {
310
+ id: import("drizzle-orm/pg-core").PgColumn<{
311
+ name: "id";
312
+ tableName: "content_products";
313
+ dataType: "string";
314
+ columnType: "PgUUID";
315
+ data: string;
316
+ driverParam: string;
317
+ notNull: true;
318
+ hasDefault: true;
319
+ isPrimaryKey: true;
320
+ isAutoincrement: false;
321
+ hasRuntimeDefault: false;
322
+ enumValues: undefined;
323
+ baseColumn: never;
324
+ identity: undefined;
325
+ generated: undefined;
326
+ }, {}, {}>;
327
+ contentId: import("drizzle-orm/pg-core").PgColumn<{
328
+ name: "content_id";
329
+ tableName: "content_products";
330
+ dataType: "string";
331
+ columnType: "PgUUID";
332
+ data: string;
333
+ driverParam: string;
334
+ notNull: true;
335
+ hasDefault: false;
336
+ isPrimaryKey: false;
337
+ isAutoincrement: false;
338
+ hasRuntimeDefault: false;
339
+ enumValues: undefined;
340
+ baseColumn: never;
341
+ identity: undefined;
342
+ generated: undefined;
343
+ }, {}, {}>;
344
+ productId: import("drizzle-orm/pg-core").PgColumn<{
345
+ name: "product_id";
346
+ tableName: "content_products";
347
+ dataType: "string";
348
+ columnType: "PgUUID";
349
+ data: string;
350
+ driverParam: string;
351
+ notNull: true;
352
+ hasDefault: false;
353
+ isPrimaryKey: false;
354
+ isAutoincrement: false;
355
+ hasRuntimeDefault: false;
356
+ enumValues: undefined;
357
+ baseColumn: never;
358
+ identity: undefined;
359
+ generated: undefined;
360
+ }, {}, {}>;
361
+ quantity: import("drizzle-orm/pg-core").PgColumn<{
362
+ name: "quantity";
363
+ tableName: "content_products";
364
+ dataType: "number";
365
+ columnType: "PgInteger";
366
+ data: number;
367
+ driverParam: string | number;
368
+ notNull: true;
369
+ hasDefault: true;
370
+ isPrimaryKey: false;
371
+ isAutoincrement: false;
372
+ hasRuntimeDefault: false;
373
+ enumValues: undefined;
374
+ baseColumn: never;
375
+ identity: undefined;
376
+ generated: undefined;
377
+ }, {}, {}>;
378
+ role: import("drizzle-orm/pg-core").PgColumn<{
379
+ name: "role";
380
+ tableName: "content_products";
381
+ dataType: "string";
382
+ columnType: "PgVarchar";
383
+ data: string;
384
+ driverParam: string;
385
+ notNull: false;
386
+ hasDefault: false;
387
+ isPrimaryKey: false;
388
+ isAutoincrement: false;
389
+ hasRuntimeDefault: false;
390
+ enumValues: [string, ...string[]];
391
+ baseColumn: never;
392
+ identity: undefined;
393
+ generated: undefined;
394
+ }, {}, {
395
+ length: 64;
396
+ }>;
397
+ notes: import("drizzle-orm/pg-core").PgColumn<{
398
+ name: "notes";
399
+ tableName: "content_products";
400
+ dataType: "string";
401
+ columnType: "PgText";
402
+ data: string;
403
+ driverParam: string;
404
+ notNull: false;
405
+ hasDefault: false;
406
+ isPrimaryKey: false;
407
+ isAutoincrement: false;
408
+ hasRuntimeDefault: false;
409
+ enumValues: [string, ...string[]];
410
+ baseColumn: never;
411
+ identity: undefined;
412
+ generated: undefined;
413
+ }, {}, {}>;
414
+ required: import("drizzle-orm/pg-core").PgColumn<{
415
+ name: "required";
416
+ tableName: "content_products";
417
+ dataType: "boolean";
418
+ columnType: "PgBoolean";
419
+ data: boolean;
420
+ driverParam: boolean;
421
+ notNull: true;
422
+ hasDefault: true;
423
+ isPrimaryKey: false;
424
+ isAutoincrement: false;
425
+ hasRuntimeDefault: false;
426
+ enumValues: undefined;
427
+ baseColumn: never;
428
+ identity: undefined;
429
+ generated: undefined;
430
+ }, {}, {}>;
431
+ sortOrder: import("drizzle-orm/pg-core").PgColumn<{
432
+ name: "sort_order";
433
+ tableName: "content_products";
434
+ dataType: "number";
435
+ columnType: "PgInteger";
436
+ data: number;
437
+ driverParam: string | number;
438
+ notNull: true;
439
+ hasDefault: true;
440
+ isPrimaryKey: false;
441
+ isAutoincrement: false;
442
+ hasRuntimeDefault: false;
443
+ enumValues: undefined;
444
+ baseColumn: never;
445
+ identity: undefined;
446
+ generated: undefined;
447
+ }, {}, {}>;
448
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
449
+ name: "created_at";
450
+ tableName: "content_products";
451
+ dataType: "date";
452
+ columnType: "PgTimestamp";
453
+ data: Date;
454
+ driverParam: string;
455
+ notNull: true;
456
+ hasDefault: true;
457
+ isPrimaryKey: false;
458
+ isAutoincrement: false;
459
+ hasRuntimeDefault: false;
460
+ enumValues: undefined;
461
+ baseColumn: never;
462
+ identity: undefined;
463
+ generated: undefined;
464
+ }, {}, {}>;
465
+ };
466
+ dialect: "pg";
467
+ }>;
468
+ export declare const productsRelations: import("drizzle-orm").Relations<"products", {
469
+ hub: import("drizzle-orm").One<"hubs", true>;
470
+ createdBy: import("drizzle-orm").One<"users", true>;
471
+ contentProducts: import("drizzle-orm").Many<"content_products">;
472
+ }>;
473
+ export declare const contentProductsRelations: import("drizzle-orm").Relations<"content_products", {
474
+ content: import("drizzle-orm").One<"content_items", true>;
475
+ product: import("drizzle-orm").One<"products", true>;
476
+ }>;
477
+ export type ProductRow = typeof products.$inferSelect;
478
+ export type NewProductRow = typeof products.$inferInsert;
479
+ export type ContentProductRow = typeof contentProducts.$inferSelect;
480
+ export type NewContentProductRow = typeof contentProducts.$inferInsert;
481
+ //# sourceMappingURL=product.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../src/product.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAa0C,MAAM;wBAAU,MAAM;;;;;;;;;;;;;;2BAAtB,MAAM;wBAAU,MAAM;;;;;;;;;sBAE3E,MAAM;sBACN,MAAM;2BACD,MAAM;uBACV,MAAM;;;;;;;;;;;;;;sBAHP,MAAM;sBACN,MAAM;2BACD,MAAM;uBACV,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWf,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB3B,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;EAI3B,CAAC;AAEJ,eAAO,MAAM,wBAAwB;;;EASlC,CAAC;AAGJ,MAAM,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AACpE,MAAM,MAAM,oBAAoB,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { pgTable, uuid, varchar, text, timestamp, integer, boolean, jsonb, uniqueIndex, index, } from 'drizzle-orm/pg-core';
2
+ import { relations } from 'drizzle-orm';
3
+ import { users } from './auth.js';
4
+ import { hubs } from './hub.js';
5
+ import { contentItems } from './content.js';
6
+ import { productStatusEnum, productCategoryEnum } from './enums.js';
7
+ export const products = pgTable('products', {
8
+ id: uuid('id').defaultRandom().primaryKey(),
9
+ name: varchar('name', { length: 255 }).notNull(),
10
+ slug: varchar('slug', { length: 255 }).notNull().unique(),
11
+ description: text('description'),
12
+ hubId: uuid('hub_id')
13
+ .notNull()
14
+ .references(() => hubs.id, { onDelete: 'cascade' }),
15
+ category: productCategoryEnum('category'),
16
+ specs: jsonb('specs').$type(),
17
+ imageUrl: text('image_url'),
18
+ purchaseUrl: text('purchase_url'),
19
+ datasheetUrl: text('datasheet_url'),
20
+ alternatives: jsonb('alternatives').$type(),
21
+ pricing: jsonb('pricing').$type(),
22
+ status: productStatusEnum('status').default('active').notNull(),
23
+ createdById: uuid('created_by_id')
24
+ .notNull()
25
+ .references(() => users.id, { onDelete: 'cascade' }),
26
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
27
+ updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
28
+ }, (t) => [
29
+ index('idx_products_hub_id').on(t.hubId),
30
+ index('idx_products_created_by_id').on(t.createdById),
31
+ ]);
32
+ export const contentProducts = pgTable('content_products', {
33
+ id: uuid('id').defaultRandom().primaryKey(),
34
+ contentId: uuid('content_id')
35
+ .notNull()
36
+ .references(() => contentItems.id, { onDelete: 'cascade' }),
37
+ productId: uuid('product_id')
38
+ .notNull()
39
+ .references(() => products.id, { onDelete: 'cascade' }),
40
+ quantity: integer('quantity').default(1).notNull(),
41
+ role: varchar('role', { length: 64 }),
42
+ notes: text('notes'),
43
+ required: boolean('required').default(true).notNull(),
44
+ sortOrder: integer('sort_order').default(0).notNull(),
45
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
46
+ }, (t) => [
47
+ uniqueIndex('idx_content_product_unique').on(t.contentId, t.productId),
48
+ index('idx_content_products_product_id').on(t.productId),
49
+ ]);
50
+ // --- Relations ---
51
+ export const productsRelations = relations(products, ({ one, many }) => ({
52
+ hub: one(hubs, { fields: [products.hubId], references: [hubs.id] }),
53
+ createdBy: one(users, { fields: [products.createdById], references: [users.id] }),
54
+ contentProducts: many(contentProducts),
55
+ }));
56
+ export const contentProductsRelations = relations(contentProducts, ({ one }) => ({
57
+ content: one(contentItems, {
58
+ fields: [contentProducts.contentId],
59
+ references: [contentItems.id],
60
+ }),
61
+ product: one(products, {
62
+ fields: [contentProducts.productId],
63
+ references: [products.id],
64
+ }),
65
+ }));
66
+ //# sourceMappingURL=product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../src/product.ts"],"names":[],"mappings":"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"}