@payloadcms/db-sqlite 3.0.0-beta.100

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 (90) hide show
  1. package/README.md +30 -0
  2. package/dist/connect.d.ts +3 -0
  3. package/dist/connect.d.ts.map +1 -0
  4. package/dist/connect.js +51 -0
  5. package/dist/connect.js.map +1 -0
  6. package/dist/countDistinct.d.ts +3 -0
  7. package/dist/countDistinct.d.ts.map +1 -0
  8. package/dist/countDistinct.js +24 -0
  9. package/dist/countDistinct.js.map +1 -0
  10. package/dist/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  11. package/dist/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  12. package/dist/createJSONQuery/convertPathToJSONTraversal.js +12 -0
  13. package/dist/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  14. package/dist/createJSONQuery/index.d.ts +3 -0
  15. package/dist/createJSONQuery/index.d.ts.map +1 -0
  16. package/dist/createJSONQuery/index.js +54 -0
  17. package/dist/createJSONQuery/index.js.map +1 -0
  18. package/dist/createMigration.d.ts +3 -0
  19. package/dist/createMigration.d.ts.map +1 -0
  20. package/dist/createMigration.js +84 -0
  21. package/dist/createMigration.js.map +1 -0
  22. package/dist/defaultSnapshot.d.ts +3 -0
  23. package/dist/defaultSnapshot.d.ts.map +1 -0
  24. package/dist/defaultSnapshot.js +14 -0
  25. package/dist/defaultSnapshot.js.map +1 -0
  26. package/dist/deleteWhere.d.ts +3 -0
  27. package/dist/deleteWhere.d.ts.map +1 -0
  28. package/dist/deleteWhere.js +6 -0
  29. package/dist/deleteWhere.js.map +1 -0
  30. package/dist/dropDatabase.d.ts +3 -0
  31. package/dist/dropDatabase.d.ts.map +1 -0
  32. package/dist/dropDatabase.js +19 -0
  33. package/dist/dropDatabase.js.map +1 -0
  34. package/dist/execute.d.ts +3 -0
  35. package/dist/execute.d.ts.map +1 -0
  36. package/dist/execute.js +13 -0
  37. package/dist/execute.js.map +1 -0
  38. package/dist/getMigrationTemplate.d.ts +4 -0
  39. package/dist/getMigrationTemplate.d.ts.map +1 -0
  40. package/dist/getMigrationTemplate.js +13 -0
  41. package/dist/getMigrationTemplate.js.map +1 -0
  42. package/dist/index.d.ts +6 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +116 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/init.d.ts +3 -0
  47. package/dist/init.d.ts.map +1 -0
  48. package/dist/init.js +99 -0
  49. package/dist/init.js.map +1 -0
  50. package/dist/insert.d.ts +3 -0
  51. package/dist/insert.d.ts.map +1 -0
  52. package/dist/insert.js +13 -0
  53. package/dist/insert.js.map +1 -0
  54. package/dist/requireDrizzleKit.d.ts +6 -0
  55. package/dist/requireDrizzleKit.d.ts.map +1 -0
  56. package/dist/requireDrizzleKit.js +13 -0
  57. package/dist/requireDrizzleKit.js.map +1 -0
  58. package/dist/schema/build.d.ts +49 -0
  59. package/dist/schema/build.d.ts.map +1 -0
  60. package/dist/schema/build.js +415 -0
  61. package/dist/schema/build.js.map +1 -0
  62. package/dist/schema/createIndex.d.ts +12 -0
  63. package/dist/schema/createIndex.d.ts.map +1 -0
  64. package/dist/schema/createIndex.js +20 -0
  65. package/dist/schema/createIndex.js.map +1 -0
  66. package/dist/schema/getIDColumn.d.ts +8 -0
  67. package/dist/schema/getIDColumn.d.ts.map +1 -0
  68. package/dist/schema/getIDColumn.js +24 -0
  69. package/dist/schema/getIDColumn.js.map +1 -0
  70. package/dist/schema/idToUUID.d.ts +3 -0
  71. package/dist/schema/idToUUID.d.ts.map +1 -0
  72. package/dist/schema/idToUUID.js +11 -0
  73. package/dist/schema/idToUUID.js.map +1 -0
  74. package/dist/schema/setColumnID.d.ts +10 -0
  75. package/dist/schema/setColumnID.d.ts.map +1 -0
  76. package/dist/schema/setColumnID.js +20 -0
  77. package/dist/schema/setColumnID.js.map +1 -0
  78. package/dist/schema/traverseFields.d.ts +42 -0
  79. package/dist/schema/traverseFields.d.ts.map +1 -0
  80. package/dist/schema/traverseFields.js +731 -0
  81. package/dist/schema/traverseFields.js.map +1 -0
  82. package/dist/schema/withDefault.d.ts +4 -0
  83. package/dist/schema/withDefault.d.ts.map +1 -0
  84. package/dist/schema/withDefault.js +12 -0
  85. package/dist/schema/withDefault.js.map +1 -0
  86. package/dist/types.d.ts +138 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +3 -0
  89. package/dist/types.js.map +1 -0
  90. package/package.json +64 -0
@@ -0,0 +1,415 @@
1
+ import { createTableName } from '@payloadcms/drizzle';
2
+ import { relations, sql } from 'drizzle-orm';
3
+ import { foreignKey, index, integer, numeric, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core';
4
+ import toSnakeCase from 'to-snake-case';
5
+ import { getIDColumn } from './getIDColumn.js';
6
+ import { setColumnID } from './setColumnID.js';
7
+ import { traverseFields } from './traverseFields.js';
8
+ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableUnique = false, fields, locales, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
9
+ const isRoot = !incomingRootTableName;
10
+ const rootTableName = incomingRootTableName || tableName;
11
+ const columns = baseColumns;
12
+ const indexes = {};
13
+ const localesColumns = {};
14
+ const localesIndexes = {};
15
+ let localesTable;
16
+ let textsTable;
17
+ let numbersTable;
18
+ // Relationships to the base collection
19
+ const relationships = rootRelationships || new Set();
20
+ let relationshipsTable;
21
+ // Drizzle relations
22
+ const relationsToBuild = new Map();
23
+ const idColType = setColumnID({
24
+ columns,
25
+ fields
26
+ });
27
+ const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = traverseFields({
28
+ adapter,
29
+ columns,
30
+ disableNotNull,
31
+ disableUnique,
32
+ fields,
33
+ indexes,
34
+ locales,
35
+ localesColumns,
36
+ localesIndexes,
37
+ newTableName: tableName,
38
+ parentTableName: tableName,
39
+ relationships,
40
+ relationsToBuild,
41
+ rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
42
+ rootTableIDColType: rootTableIDColType || idColType,
43
+ rootTableName,
44
+ versions,
45
+ withinLocalizedArrayOrBlock
46
+ });
47
+ // split the relationsToBuild by localized and non-localized
48
+ const localizedRelations = new Map();
49
+ const nonLocalizedRelations = new Map();
50
+ relationsToBuild.forEach(({ type, localized, target }, key)=>{
51
+ const map = localized ? localizedRelations : nonLocalizedRelations;
52
+ map.set(key, {
53
+ type,
54
+ target
55
+ });
56
+ });
57
+ if (timestamps) {
58
+ columns.createdAt = text('created_at').default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`).notNull();
59
+ columns.updatedAt = text('updated_at').default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`).notNull();
60
+ }
61
+ const table = sqliteTable(tableName, columns, (cols)=>{
62
+ const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func])=>{
63
+ config[key] = func(cols);
64
+ return config;
65
+ }, {});
66
+ const result = Object.entries(indexes).reduce((acc, [colName, func])=>{
67
+ acc[colName] = func(cols);
68
+ return acc;
69
+ }, extraConfig);
70
+ return result;
71
+ });
72
+ adapter.tables[tableName] = table;
73
+ if (hasLocalizedField || localizedRelations.size) {
74
+ const localeTableName = `${tableName}${adapter.localesSuffix}`;
75
+ localesColumns.id = integer('id', {
76
+ mode: 'number'
77
+ }).primaryKey({
78
+ autoIncrement: true
79
+ });
80
+ localesColumns._locale = text('_locale', {
81
+ enum: locales
82
+ }).notNull();
83
+ localesColumns._parentID = getIDColumn({
84
+ name: '_parent_id',
85
+ type: idColType,
86
+ notNull: true,
87
+ primaryKey: false
88
+ });
89
+ localesTable = sqliteTable(localeTableName, localesColumns, (cols)=>{
90
+ return Object.entries(localesIndexes).reduce((acc, [colName, func])=>{
91
+ acc[colName] = func(cols);
92
+ return acc;
93
+ }, {
94
+ _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID),
95
+ _parentIdFk: foreignKey({
96
+ name: `${localeTableName}_parent_id_fk`,
97
+ columns: [
98
+ cols._parentID
99
+ ],
100
+ foreignColumns: [
101
+ table.id
102
+ ]
103
+ }).onDelete('cascade')
104
+ });
105
+ });
106
+ adapter.tables[localeTableName] = localesTable;
107
+ adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one })=>{
108
+ const result = {};
109
+ result._parentID = one(table, {
110
+ fields: [
111
+ localesTable._parentID
112
+ ],
113
+ references: [
114
+ table.id
115
+ ],
116
+ // name the relationship by what the many() relationName is
117
+ relationName: '_locales'
118
+ });
119
+ localizedRelations.forEach(({ type, target }, key)=>{
120
+ if (type === 'one') {
121
+ result[key] = one(adapter.tables[target], {
122
+ fields: [
123
+ localesTable[key]
124
+ ],
125
+ references: [
126
+ adapter.tables[target].id
127
+ ],
128
+ relationName: key
129
+ });
130
+ }
131
+ if (type === 'many') {
132
+ result[key] = many(adapter.tables[target], {
133
+ relationName: key
134
+ });
135
+ }
136
+ });
137
+ return result;
138
+ });
139
+ }
140
+ if (isRoot) {
141
+ if (hasManyTextField) {
142
+ const textsTableName = `${rootTableName}_texts`;
143
+ const columns = {
144
+ id: integer('id', {
145
+ mode: 'number'
146
+ }).primaryKey({
147
+ autoIncrement: true
148
+ }),
149
+ order: integer('order').notNull(),
150
+ parent: getIDColumn({
151
+ name: 'parent_id',
152
+ type: idColType,
153
+ notNull: true,
154
+ primaryKey: false
155
+ }),
156
+ path: text('path').notNull(),
157
+ text: text('text')
158
+ };
159
+ if (hasLocalizedManyTextField) {
160
+ columns.locale = text('locale', {
161
+ enum: locales
162
+ });
163
+ }
164
+ textsTable = sqliteTable(textsTableName, columns, (cols)=>{
165
+ const config = {
166
+ orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),
167
+ parentFk: foreignKey({
168
+ name: `${textsTableName}_parent_fk`,
169
+ columns: [
170
+ cols.parent
171
+ ],
172
+ foreignColumns: [
173
+ table.id
174
+ ]
175
+ }).onDelete('cascade')
176
+ };
177
+ if (hasManyTextField === 'index') {
178
+ config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text);
179
+ }
180
+ if (hasLocalizedManyTextField) {
181
+ config.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
182
+ }
183
+ return config;
184
+ });
185
+ adapter.tables[textsTableName] = textsTable;
186
+ adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one })=>({
187
+ parent: one(table, {
188
+ fields: [
189
+ textsTable.parent
190
+ ],
191
+ references: [
192
+ table.id
193
+ ],
194
+ relationName: '_texts'
195
+ })
196
+ }));
197
+ }
198
+ if (hasManyNumberField) {
199
+ const numbersTableName = `${rootTableName}_numbers`;
200
+ const columns = {
201
+ id: integer('id', {
202
+ mode: 'number'
203
+ }).primaryKey({
204
+ autoIncrement: true
205
+ }),
206
+ number: numeric('number'),
207
+ order: integer('order').notNull(),
208
+ parent: getIDColumn({
209
+ name: 'parent_id',
210
+ type: idColType,
211
+ notNull: true,
212
+ primaryKey: false
213
+ }),
214
+ path: text('path').notNull()
215
+ };
216
+ if (hasLocalizedManyNumberField) {
217
+ columns.locale = text('locale', {
218
+ enum: locales
219
+ });
220
+ }
221
+ numbersTable = sqliteTable(numbersTableName, columns, (cols)=>{
222
+ const config = {
223
+ orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),
224
+ parentFk: foreignKey({
225
+ name: `${numbersTableName}_parent_fk`,
226
+ columns: [
227
+ cols.parent
228
+ ],
229
+ foreignColumns: [
230
+ table.id
231
+ ]
232
+ }).onDelete('cascade')
233
+ };
234
+ if (hasManyNumberField === 'index') {
235
+ config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number);
236
+ }
237
+ if (hasLocalizedManyNumberField) {
238
+ config.localeParent = index(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
239
+ }
240
+ return config;
241
+ });
242
+ adapter.tables[numbersTableName] = numbersTable;
243
+ adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one })=>({
244
+ parent: one(table, {
245
+ fields: [
246
+ numbersTable.parent
247
+ ],
248
+ references: [
249
+ table.id
250
+ ],
251
+ relationName: '_numbers'
252
+ })
253
+ }));
254
+ }
255
+ if (relationships.size) {
256
+ const relationshipColumns = {
257
+ id: integer('id', {
258
+ mode: 'number'
259
+ }).primaryKey({
260
+ autoIncrement: true
261
+ }),
262
+ order: integer('order'),
263
+ parent: getIDColumn({
264
+ name: 'parent_id',
265
+ type: idColType,
266
+ notNull: true,
267
+ primaryKey: false
268
+ }),
269
+ path: text('path').notNull()
270
+ };
271
+ if (hasLocalizedRelationshipField) {
272
+ relationshipColumns.locale = text('locale', {
273
+ enum: locales
274
+ });
275
+ }
276
+ const relationExtraConfig = {};
277
+ const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
278
+ relationships.forEach((relationTo)=>{
279
+ const relationshipConfig = adapter.payload.collections[relationTo].config;
280
+ const formattedRelationTo = createTableName({
281
+ adapter,
282
+ config: relationshipConfig
283
+ });
284
+ let colType = 'integer';
285
+ const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
286
+ if (relatedCollectionCustomIDType === 'number') {
287
+ colType = 'numeric';
288
+ }
289
+ if (relatedCollectionCustomIDType === 'text') {
290
+ colType = 'text';
291
+ }
292
+ relationshipColumns[`${relationTo}ID`] = getIDColumn({
293
+ name: `${formattedRelationTo}_id`,
294
+ type: colType,
295
+ primaryKey: false
296
+ });
297
+ relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
298
+ name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
299
+ columns: [
300
+ cols[`${relationTo}ID`]
301
+ ],
302
+ foreignColumns: [
303
+ adapter.tables[formattedRelationTo].id
304
+ ]
305
+ }).onDelete('cascade');
306
+ });
307
+ relationshipsTable = sqliteTable(relationshipsTableName, relationshipColumns, (cols)=>{
308
+ const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
309
+ config[key] = func(cols);
310
+ return config;
311
+ }, {
312
+ order: index(`${relationshipsTableName}_order_idx`).on(cols.order),
313
+ parentFk: foreignKey({
314
+ name: `${relationshipsTableName}_parent_fk`,
315
+ columns: [
316
+ cols.parent
317
+ ],
318
+ foreignColumns: [
319
+ table.id
320
+ ]
321
+ }).onDelete('cascade'),
322
+ parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),
323
+ pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path)
324
+ });
325
+ if (hasLocalizedRelationshipField) {
326
+ result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale);
327
+ }
328
+ return result;
329
+ });
330
+ adapter.tables[relationshipsTableName] = relationshipsTable;
331
+ adapter.relations[`relations_${relationshipsTableName}`] = relations(relationshipsTable, ({ one })=>{
332
+ const result = {
333
+ parent: one(table, {
334
+ fields: [
335
+ relationshipsTable.parent
336
+ ],
337
+ references: [
338
+ table.id
339
+ ],
340
+ relationName: '_rels'
341
+ })
342
+ };
343
+ relationships.forEach((relationTo)=>{
344
+ const relatedTableName = createTableName({
345
+ adapter,
346
+ config: adapter.payload.collections[relationTo].config
347
+ });
348
+ const idColumnName = `${relationTo}ID`;
349
+ result[idColumnName] = one(adapter.tables[relatedTableName], {
350
+ fields: [
351
+ relationshipsTable[idColumnName]
352
+ ],
353
+ references: [
354
+ adapter.tables[relatedTableName].id
355
+ ],
356
+ relationName: relationTo
357
+ });
358
+ });
359
+ return result;
360
+ });
361
+ }
362
+ }
363
+ adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
364
+ const result = {};
365
+ nonLocalizedRelations.forEach(({ type, target }, key)=>{
366
+ if (type === 'one') {
367
+ result[key] = one(adapter.tables[target], {
368
+ fields: [
369
+ table[key]
370
+ ],
371
+ references: [
372
+ adapter.tables[target].id
373
+ ],
374
+ relationName: key
375
+ });
376
+ }
377
+ if (type === 'many') {
378
+ result[key] = many(adapter.tables[target], {
379
+ relationName: key
380
+ });
381
+ }
382
+ });
383
+ if (hasLocalizedField) {
384
+ result._locales = many(localesTable, {
385
+ relationName: '_locales'
386
+ });
387
+ }
388
+ if (hasManyTextField) {
389
+ result._texts = many(textsTable, {
390
+ relationName: '_texts'
391
+ });
392
+ }
393
+ if (hasManyNumberField) {
394
+ result._numbers = many(numbersTable, {
395
+ relationName: '_numbers'
396
+ });
397
+ }
398
+ if (relationships.size && relationshipsTable) {
399
+ result._rels = many(relationshipsTable, {
400
+ relationName: '_rels'
401
+ });
402
+ }
403
+ return result;
404
+ });
405
+ return {
406
+ hasLocalizedManyNumberField,
407
+ hasLocalizedManyTextField,
408
+ hasLocalizedRelationshipField,
409
+ hasManyNumberField,
410
+ hasManyTextField,
411
+ relationsToBuild
412
+ };
413
+ };
414
+
415
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type {\n AnySQLiteColumn,\n ForeignKeyBuilder,\n IndexBuilder,\n SQLiteColumnBuilder,\n SQLiteTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/sqlite-core'\nimport type { Field } from 'payload'\n\nimport { createTableName } from '@payloadcms/drizzle'\nimport { relations, sql } from 'drizzle-orm'\nimport {\n foreignKey,\n index,\n integer,\n numeric,\n sqliteTable,\n text,\n unique,\n} from 'drizzle-orm/sqlite-core'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, GenericTable, IDType, SQLiteAdapter } from '../types.js'\n\nimport { getIDColumn } from './getIDColumn.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: {\n [x: string]: AnySQLiteColumn\n }) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\nexport type RelationMap = Map<string, { localized: boolean; target: string; type: 'many' | 'one' }>\n\ntype Args = {\n adapter: SQLiteAdapter\n baseColumns?: Record<string, SQLiteColumnBuilder>\n /**\n * After table is created, run these functions to add extra config to the table\n * ie. indexes, multiple columns, etc\n */\n baseExtraConfig?: BaseExtraConfig\n buildNumbers?: boolean\n buildRelationships?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n locales?: [string, ...string[]]\n rootRelationships?: Set<string>\n rootRelationsToBuild?: RelationMap\n rootTableIDColType?: IDType\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n relationsToBuild: RelationMap\n}\n\nexport const buildTable = ({\n adapter,\n baseColumns = {},\n baseExtraConfig = {},\n disableNotNull,\n disableUnique = false,\n fields,\n locales,\n rootRelationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n const isRoot = !incomingRootTableName\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, SQLiteColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n const localesColumns: Record<string, SQLiteColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | SQLiteTableWithColumns<any>\n let textsTable: GenericTable | SQLiteTableWithColumns<any>\n let numbersTable: GenericTable | SQLiteTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | SQLiteTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: RelationMap = new Map()\n\n const idColType: IDType = setColumnID({ columns, fields })\n\n const {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n } = traverseFields({\n adapter,\n columns,\n disableNotNull,\n disableUnique,\n fields,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n // split the relationsToBuild by localized and non-localized\n const localizedRelations = new Map()\n const nonLocalizedRelations = new Map()\n\n relationsToBuild.forEach(({ type, localized, target }, key) => {\n const map = localized ? localizedRelations : nonLocalizedRelations\n map.set(key, { type, target })\n })\n\n if (timestamps) {\n columns.createdAt = text('created_at')\n .default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`)\n .notNull()\n columns.updatedAt = text('updated_at')\n .default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`)\n .notNull()\n }\n\n const table = sqliteTable(tableName, columns, (cols) => {\n const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func]) => {\n config[key] = func(cols)\n return config\n }, {})\n\n const result = Object.entries(indexes).reduce((acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n }, extraConfig)\n\n return result\n })\n\n adapter.tables[tableName] = table\n\n if (hasLocalizedField || localizedRelations.size) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n localesColumns.id = integer('id', { mode: 'number' }).primaryKey({ autoIncrement: true })\n localesColumns._locale = text('_locale', { enum: locales }).notNull()\n localesColumns._parentID = getIDColumn({\n name: '_parent_id',\n type: idColType,\n notNull: true,\n primaryKey: false,\n })\n\n localesTable = sqliteTable(localeTableName, localesColumns, (cols) => {\n return Object.entries(localesIndexes).reduce(\n (acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n },\n {\n _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(\n cols._locale,\n cols._parentID,\n ),\n _parentIdFk: foreignKey({\n name: `${localeTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n },\n )\n })\n\n adapter.tables[localeTableName] = localesTable\n\n adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one }) => {\n const result: Record<string, Relation<string>> = {}\n\n result._parentID = one(table, {\n fields: [localesTable._parentID],\n references: [table.id],\n // name the relationship by what the many() relationName is\n relationName: '_locales',\n })\n\n localizedRelations.forEach(({ type, target }, key) => {\n if (type === 'one') {\n result[key] = one(adapter.tables[target], {\n fields: [localesTable[key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], {\n relationName: key,\n })\n }\n })\n\n return result\n })\n }\n\n if (isRoot) {\n if (hasManyTextField) {\n const textsTableName = `${rootTableName}_texts`\n const columns: Record<string, SQLiteColumnBuilder> = {\n id: integer('id', { mode: 'number' }).primaryKey({ autoIncrement: true }),\n order: integer('order').notNull(),\n parent: getIDColumn({\n name: 'parent_id',\n type: idColType,\n notNull: true,\n primaryKey: false,\n }),\n path: text('path').notNull(),\n text: text('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = text('locale', { enum: locales })\n }\n\n textsTable = sqliteTable(textsTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${textsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyTextField === 'index') {\n config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text)\n }\n\n if (hasLocalizedManyTextField) {\n config.localeParent = index(`${textsTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return config\n })\n\n adapter.tables[textsTableName] = textsTable\n\n adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one }) => ({\n parent: one(table, {\n fields: [textsTable.parent],\n references: [table.id],\n relationName: '_texts',\n }),\n }))\n }\n\n if (hasManyNumberField) {\n const numbersTableName = `${rootTableName}_numbers`\n const columns: Record<string, SQLiteColumnBuilder> = {\n id: integer('id', { mode: 'number' }).primaryKey({ autoIncrement: true }),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: getIDColumn({\n name: 'parent_id',\n type: idColType,\n notNull: true,\n primaryKey: false,\n }),\n path: text('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = text('locale', { enum: locales })\n }\n\n numbersTable = sqliteTable(numbersTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${numbersTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyNumberField === 'index') {\n config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number)\n }\n\n if (hasLocalizedManyNumberField) {\n config.localeParent = index(`${numbersTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return config\n })\n\n adapter.tables[numbersTableName] = numbersTable\n\n adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one }) => ({\n parent: one(table, {\n fields: [numbersTable.parent],\n references: [table.id],\n relationName: '_numbers',\n }),\n }))\n }\n\n if (relationships.size) {\n const relationshipColumns: Record<string, SQLiteColumnBuilder> = {\n id: integer('id', { mode: 'number' }).primaryKey({ autoIncrement: true }),\n order: integer('order'),\n parent: getIDColumn({\n name: 'parent_id',\n type: idColType,\n notNull: true,\n primaryKey: false,\n }),\n path: text('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = text('locale', { enum: locales })\n }\n\n const relationExtraConfig: BaseExtraConfig = {}\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n relationships.forEach((relationTo) => {\n const relationshipConfig = adapter.payload.collections[relationTo].config\n const formattedRelationTo = createTableName({\n adapter,\n config: relationshipConfig,\n })\n let colType: IDType = 'integer'\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') {\n colType = 'numeric'\n }\n if (relatedCollectionCustomIDType === 'text') {\n colType = 'text'\n }\n\n relationshipColumns[`${relationTo}ID`] = getIDColumn({\n name: `${formattedRelationTo}_id`,\n type: colType,\n primaryKey: false,\n })\n\n relationExtraConfig[`${relationTo}IdFk`] = (cols) =>\n foreignKey({\n name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,\n columns: [cols[`${relationTo}ID`]],\n foreignColumns: [adapter.tables[formattedRelationTo].id],\n }).onDelete('cascade')\n })\n\n relationshipsTable = sqliteTable(relationshipsTableName, relationshipColumns, (cols) => {\n const result: Record<string, ForeignKeyBuilder | IndexBuilder> = Object.entries(\n relationExtraConfig,\n ).reduce(\n (config, [key, func]) => {\n config[key] = func(cols)\n return config\n },\n {\n order: index(`${relationshipsTableName}_order_idx`).on(cols.order),\n parentFk: foreignKey({\n name: `${relationshipsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),\n pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path),\n },\n )\n\n if (hasLocalizedRelationshipField) {\n result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale)\n }\n\n return result\n })\n\n adapter.tables[relationshipsTableName] = relationshipsTable\n\n adapter.relations[`relations_${relationshipsTableName}`] = relations(\n relationshipsTable,\n ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(table, {\n fields: [relationshipsTable.parent],\n references: [table.id],\n relationName: '_rels',\n }),\n }\n\n relationships.forEach((relationTo) => {\n const relatedTableName = createTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n })\n const idColumnName = `${relationTo}ID`\n result[idColumnName] = one(adapter.tables[relatedTableName], {\n fields: [relationshipsTable[idColumnName]],\n references: [adapter.tables[relatedTableName].id],\n relationName: relationTo,\n })\n })\n\n return result\n },\n )\n }\n }\n\n adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one }) => {\n const result: Record<string, Relation<string>> = {}\n\n nonLocalizedRelations.forEach(({ type, target }, key) => {\n if (type === 'one') {\n result[key] = one(adapter.tables[target], {\n fields: [table[key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n if (hasLocalizedField) {\n result._locales = many(localesTable, { relationName: '_locales' })\n }\n\n if (hasManyTextField) {\n result._texts = many(textsTable, { relationName: '_texts' })\n }\n\n if (hasManyNumberField) {\n result._numbers = many(numbersTable, { relationName: '_numbers' })\n }\n\n if (relationships.size && relationshipsTable) {\n result._rels = many(relationshipsTable, {\n relationName: '_rels',\n })\n }\n\n return result\n })\n\n return {\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n relationsToBuild,\n }\n}\n"],"names":["createTableName","relations","sql","foreignKey","index","integer","numeric","sqliteTable","text","unique","toSnakeCase","getIDColumn","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","disableNotNull","disableUnique","fields","locales","rootRelationships","rootRelationsToBuild","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","withinLocalizedArrayOrBlock","isRoot","columns","indexes","localesColumns","localesIndexes","localesTable","textsTable","numbersTable","relationships","Set","relationshipsTable","relationsToBuild","Map","idColType","hasLocalizedField","hasLocalizedManyNumberField","hasLocalizedManyTextField","hasLocalizedRelationshipField","hasManyNumberField","hasManyTextField","newTableName","parentTableName","localizedRelations","nonLocalizedRelations","forEach","type","localized","target","key","map","set","createdAt","default","notNull","updatedAt","table","cols","extraConfig","Object","entries","reduce","config","func","result","acc","colName","tables","size","localeTableName","localesSuffix","id","mode","primaryKey","autoIncrement","_locale","enum","_parentID","name","_localeParent","on","_parentIdFk","foreignColumns","onDelete","many","one","references","relationName","textsTableName","order","parent","path","locale","orderParentIdx","parentFk","text_idx","localeParent","numbersTableName","number","numberIdx","relationshipColumns","relationExtraConfig","relationshipsTableName","relationshipsSuffix","relationTo","relationshipConfig","payload","collections","formattedRelationTo","colType","relatedCollectionCustomIDType","slug","customIDType","parentIdx","pathIdx","localeIdx","relatedTableName","idColumnName","_locales","_texts","_numbers","_rels"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AnySQLiteColumn } from 'drizzle-orm/sqlite-core';
2
+ type CreateIndexArgs = {
3
+ columnName: string;
4
+ name: string | string[];
5
+ tableName: string;
6
+ unique?: boolean;
7
+ };
8
+ export declare const createIndex: ({ name, columnName, tableName, unique }: CreateIndexArgs) => (table: {
9
+ [x: string]: AnySQLiteColumn;
10
+ }) => import("drizzle-orm/sqlite-core").IndexBuilder;
11
+ export {};
12
+ //# sourceMappingURL=createIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../src/schema/createIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAI9D,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,4CAA6C,eAAe,aACnE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,mDAehD,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { index, uniqueIndex } from 'drizzle-orm/sqlite-core';
2
+ export const createIndex = ({ name, columnName, tableName, unique })=>{
3
+ return (table)=>{
4
+ let columns;
5
+ if (Array.isArray(name)) {
6
+ columns = name.map((columnName)=>table[columnName])// exclude fields were included in compound indexes but do not exist on the table
7
+ .filter((col)=>typeof col !== 'undefined');
8
+ } else {
9
+ columns = [
10
+ table[name]
11
+ ];
12
+ }
13
+ if (unique) {
14
+ return uniqueIndex(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
15
+ }
16
+ return index(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
17
+ };
18
+ };
19
+
20
+ //# sourceMappingURL=createIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/createIndex.ts"],"sourcesContent":["import type { AnySQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport { index, uniqueIndex } from 'drizzle-orm/sqlite-core'\n\ntype CreateIndexArgs = {\n columnName: string\n name: string | string[]\n tableName: string\n unique?: boolean\n}\n\nexport const createIndex = ({ name, columnName, tableName, unique }: CreateIndexArgs) => {\n return (table: { [x: string]: AnySQLiteColumn }) => {\n let columns\n if (Array.isArray(name)) {\n columns = name\n .map((columnName) => table[columnName])\n // exclude fields were included in compound indexes but do not exist on the table\n .filter((col) => typeof col !== 'undefined')\n } else {\n columns = [table[name]]\n }\n if (unique) {\n return uniqueIndex(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n }\n return index(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n }\n}\n"],"names":["index","uniqueIndex","createIndex","name","columnName","tableName","unique","table","columns","Array","isArray","map","filter","col","on","slice"],"mappings":"AAEA,SAASA,KAAK,EAAEC,WAAW,QAAQ,0BAAyB;AAS5D,OAAO,MAAMC,cAAc,CAAC,EAAEC,IAAI,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAmB;IAClF,OAAO,CAACC;QACN,IAAIC;QACJ,IAAIC,MAAMC,OAAO,CAACP,OAAO;YACvBK,UAAUL,KACPQ,GAAG,CAAC,CAACP,aAAeG,KAAK,CAACH,WAAW,CACtC,iFAAiF;aAChFQ,MAAM,CAAC,CAACC,MAAQ,OAAOA,QAAQ;QACpC,OAAO;YACLL,UAAU;gBAACD,KAAK,CAACJ,KAAK;aAAC;QACzB;QACA,IAAIG,QAAQ;YACV,OAAOL,YAAY,CAAC,EAAEI,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;QACvF;QACA,OAAOf,MAAM,CAAC,EAAEK,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;IACjF;AACF,EAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IDType } from '../types.js';
2
+ export declare const getIDColumn: ({ name, type, notNull, primaryKey, }: {
3
+ name: string;
4
+ notNull?: boolean;
5
+ primaryKey: boolean;
6
+ type: IDType;
7
+ }) => any;
8
+ //# sourceMappingURL=getIDColumn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIDColumn.d.ts","sourceRoot":"","sources":["../../src/schema/getIDColumn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,eAAO,MAAM,WAAW,yCAKrB;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,QAuBA,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { integer, numeric, text } from 'drizzle-orm/sqlite-core';
2
+ export const getIDColumn = ({ name, type, notNull, primaryKey })=>{
3
+ let column;
4
+ switch(type){
5
+ case 'integer':
6
+ column = integer(name);
7
+ break;
8
+ case 'numeric':
9
+ column = numeric(name);
10
+ break;
11
+ case 'text':
12
+ column = text(name);
13
+ break;
14
+ }
15
+ if (notNull) {
16
+ column.notNull();
17
+ }
18
+ if (primaryKey) {
19
+ column.primaryKey();
20
+ }
21
+ return column;
22
+ };
23
+
24
+ //# sourceMappingURL=getIDColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/getIDColumn.ts"],"sourcesContent":["import { integer, numeric, text } from 'drizzle-orm/sqlite-core'\n\nimport type { IDType } from '../types.js'\n\nexport const getIDColumn = ({\n name,\n type,\n notNull,\n primaryKey,\n}: {\n name: string\n notNull?: boolean\n primaryKey: boolean\n type: IDType\n}) => {\n let column\n switch (type) {\n case 'integer':\n column = integer(name)\n break\n case 'numeric':\n column = numeric(name)\n break\n case 'text':\n column = text(name)\n break\n }\n\n if (notNull) {\n column.notNull()\n }\n\n if (primaryKey) {\n column.primaryKey()\n }\n\n return column\n}\n"],"names":["integer","numeric","text","getIDColumn","name","type","notNull","primaryKey","column"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,IAAI,QAAQ,0BAAyB;AAIhE,OAAO,MAAMC,cAAc,CAAC,EAC1BC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,UAAU,EAMX;IACC,IAAIC;IACJ,OAAQH;QACN,KAAK;YACHG,SAASR,QAAQI;YACjB;QACF,KAAK;YACHI,SAASP,QAAQG;YACjB;QACF,KAAK;YACHI,SAASN,KAAKE;YACd;IACJ;IAEA,IAAIE,SAAS;QACXE,OAAOF,OAAO;IAChB;IAEA,IAAIC,YAAY;QACdC,OAAOD,UAAU;IACnB;IAEA,OAAOC;AACT,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Field } from 'payload';
2
+ export declare const idToUUID: (fields: Field[]) => Field[];
3
+ //# sourceMappingURL=idToUUID.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idToUUID.d.ts","sourceRoot":"","sources":["../../src/schema/idToUUID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,QAAQ,WAAY,KAAK,EAAE,KAAG,KAAK,EAU5C,CAAA"}
@@ -0,0 +1,11 @@
1
+ export const idToUUID = (fields)=>fields.map((field)=>{
2
+ if ('name' in field && field.name === 'id') {
3
+ return {
4
+ ...field,
5
+ name: '_uuid'
6
+ };
7
+ }
8
+ return field;
9
+ });
10
+
11
+ //# sourceMappingURL=idToUUID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/idToUUID.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nexport const idToUUID = (fields: Field[]): Field[] =>\n fields.map((field) => {\n if ('name' in field && field.name === 'id') {\n return {\n ...field,\n name: '_uuid',\n }\n }\n\n return field\n })\n"],"names":["idToUUID","fields","map","field","name"],"mappings":"AAEA,OAAO,MAAMA,WAAW,CAACC,SACvBA,OAAOC,GAAG,CAAC,CAACC;QACV,IAAI,UAAUA,SAASA,MAAMC,IAAI,KAAK,MAAM;YAC1C,OAAO;gBACL,GAAGD,KAAK;gBACRC,MAAM;YACR;QACF;QAEA,OAAOD;IACT,GAAE"}
@@ -0,0 +1,10 @@
1
+ import type { SQLiteColumnBuilder } from 'drizzle-orm/sqlite-core';
2
+ import { type Field } from 'payload';
3
+ import type { IDType } from '../types.js';
4
+ type Args = {
5
+ columns: Record<string, SQLiteColumnBuilder>;
6
+ fields: Field[];
7
+ };
8
+ export declare const setColumnID: ({ columns, fields }: Args) => IDType;
9
+ export {};
10
+ //# sourceMappingURL=setColumnID.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setColumnID.d.ts","sourceRoot":"","sources":["../../src/schema/setColumnID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAGlE,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,SAAS,CAAA;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC5C,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CAAA;AACD,eAAO,MAAM,WAAW,wBAAyB,IAAI,KAAG,MAkBvD,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { integer, numeric, text } from 'drizzle-orm/sqlite-core';
2
+ import { flattenTopLevelFields } from 'payload';
3
+ import { fieldAffectsData } from 'payload/shared';
4
+ export const setColumnID = ({ columns, fields })=>{
5
+ const idField = flattenTopLevelFields(fields).find((field)=>fieldAffectsData(field) && field.name === 'id');
6
+ if (idField) {
7
+ if (idField.type === 'number') {
8
+ columns.id = numeric('id').primaryKey();
9
+ return 'numeric';
10
+ }
11
+ if (idField.type === 'text') {
12
+ columns.id = text('id').primaryKey();
13
+ return 'text';
14
+ }
15
+ }
16
+ columns.id = integer('id').primaryKey();
17
+ return 'integer';
18
+ };
19
+
20
+ //# sourceMappingURL=setColumnID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/setColumnID.ts"],"sourcesContent":["import type { SQLiteColumnBuilder } from 'drizzle-orm/sqlite-core'\n\nimport { integer, numeric, text } from 'drizzle-orm/sqlite-core'\nimport { type Field, flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { IDType } from '../types.js'\n\ntype Args = {\n columns: Record<string, SQLiteColumnBuilder>\n fields: Field[]\n}\nexport const setColumnID = ({ columns, fields }: Args): IDType => {\n const idField = flattenTopLevelFields(fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (idField) {\n if (idField.type === 'number') {\n columns.id = numeric('id').primaryKey()\n return 'numeric'\n }\n\n if (idField.type === 'text') {\n columns.id = text('id').primaryKey()\n return 'text'\n }\n }\n\n columns.id = integer('id').primaryKey()\n return 'integer'\n}\n"],"names":["integer","numeric","text","flattenTopLevelFields","fieldAffectsData","setColumnID","columns","fields","idField","find","field","name","type","id","primaryKey"],"mappings":"AAEA,SAASA,OAAO,EAAEC,OAAO,EAAEC,IAAI,QAAQ,0BAAyB;AAChE,SAAqBC,qBAAqB,QAAQ,UAAS;AAC3D,SAASC,gBAAgB,QAAQ,iBAAgB;AAQjD,OAAO,MAAMC,cAAc,CAAC,EAAEC,OAAO,EAAEC,MAAM,EAAQ;IACnD,MAAMC,UAAUL,sBAAsBI,QAAQE,IAAI,CAChD,CAACC,QAAUN,iBAAiBM,UAAUA,MAAMC,IAAI,KAAK;IAEvD,IAAIH,SAAS;QACX,IAAIA,QAAQI,IAAI,KAAK,UAAU;YAC7BN,QAAQO,EAAE,GAAGZ,QAAQ,MAAMa,UAAU;YACrC,OAAO;QACT;QAEA,IAAIN,QAAQI,IAAI,KAAK,QAAQ;YAC3BN,QAAQO,EAAE,GAAGX,KAAK,MAAMY,UAAU;YAClC,OAAO;QACT;IACF;IAEAR,QAAQO,EAAE,GAAGb,QAAQ,MAAMc,UAAU;IACrC,OAAO;AACT,EAAC"}