@payloadcms/db-postgres 3.0.0-canary.fb81f02 → 3.0.0-canary.ff8c8fd
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +45 -2
- package/dist/connect.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -15
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +9 -116
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -8
- package/dist/connectionHelpers/nodePostgres.d.ts +0 -11
- package/dist/connectionHelpers/nodePostgres.d.ts.map +0 -1
- package/dist/connectionHelpers/nodePostgres.js +0 -6
- package/dist/connectionHelpers/nodePostgres.js.map +0 -1
- package/dist/countDistinct.d.ts +0 -3
- package/dist/countDistinct.d.ts.map +0 -1
- package/dist/countDistinct.js +0 -24
- package/dist/countDistinct.js.map +0 -1
- package/dist/createJSONQuery/convertPathToJSONTraversal.d.ts +0 -2
- package/dist/createJSONQuery/convertPathToJSONTraversal.d.ts.map +0 -1
- package/dist/createJSONQuery/convertPathToJSONTraversal.js +0 -14
- package/dist/createJSONQuery/convertPathToJSONTraversal.js.map +0 -1
- package/dist/createJSONQuery/formatJSONPathSegment.d.ts +0 -2
- package/dist/createJSONQuery/formatJSONPathSegment.d.ts.map +0 -1
- package/dist/createJSONQuery/formatJSONPathSegment.js +0 -5
- package/dist/createJSONQuery/formatJSONPathSegment.js.map +0 -1
- package/dist/createJSONQuery/index.d.ts +0 -10
- package/dist/createJSONQuery/index.d.ts.map +0 -1
- package/dist/createJSONQuery/index.js +0 -54
- package/dist/createJSONQuery/index.js.map +0 -1
- package/dist/createMigration.d.ts +0 -3
- package/dist/createMigration.d.ts.map +0 -1
- package/dist/createMigration.js +0 -91
- package/dist/createMigration.js.map +0 -1
- package/dist/defaultSnapshot.d.ts +0 -3
- package/dist/defaultSnapshot.d.ts.map +0 -1
- package/dist/defaultSnapshot.js +0 -17
- package/dist/defaultSnapshot.js.map +0 -1
- package/dist/deleteWhere.d.ts +0 -3
- package/dist/deleteWhere.d.ts.map +0 -1
- package/dist/deleteWhere.js +0 -6
- package/dist/deleteWhere.js.map +0 -1
- package/dist/dropDatabase.d.ts +0 -3
- package/dist/dropDatabase.d.ts.map +0 -1
- package/dist/dropDatabase.js +0 -9
- package/dist/dropDatabase.js.map +0 -1
- package/dist/execute.d.ts +0 -3
- package/dist/execute.d.ts.map +0 -1
- package/dist/execute.js +0 -11
- package/dist/execute.js.map +0 -1
- package/dist/getMigrationTemplate.d.ts +0 -4
- package/dist/getMigrationTemplate.d.ts.map +0 -1
- package/dist/getMigrationTemplate.js +0 -13
- package/dist/getMigrationTemplate.js.map +0 -1
- package/dist/init.d.ts +0 -3
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -83
- package/dist/init.js.map +0 -1
- package/dist/insert.d.ts +0 -3
- package/dist/insert.d.ts.map +0 -1
- package/dist/insert.js +0 -12
- package/dist/insert.js.map +0 -1
- package/dist/requireDrizzleKit.d.ts +0 -3
- package/dist/requireDrizzleKit.d.ts.map +0 -1
- package/dist/requireDrizzleKit.js +0 -5
- package/dist/requireDrizzleKit.js.map +0 -1
- package/dist/schema/build.d.ts +0 -34
- package/dist/schema/build.d.ts.map +0 -1
- package/dist/schema/build.js +0 -369
- package/dist/schema/build.js.map +0 -1
- package/dist/schema/createIndex.d.ts +0 -12
- package/dist/schema/createIndex.d.ts.map +0 -1
- package/dist/schema/createIndex.js +0 -18
- package/dist/schema/createIndex.js.map +0 -1
- package/dist/schema/idToUUID.d.ts +0 -3
- package/dist/schema/idToUUID.d.ts.map +0 -1
- package/dist/schema/idToUUID.js +0 -11
- package/dist/schema/idToUUID.js.map +0 -1
- package/dist/schema/parentIDColumnMap.d.ts +0 -4
- package/dist/schema/parentIDColumnMap.d.ts.map +0 -1
- package/dist/schema/parentIDColumnMap.js +0 -9
- package/dist/schema/parentIDColumnMap.js.map +0 -1
- package/dist/schema/setColumnID.d.ts +0 -11
- package/dist/schema/setColumnID.d.ts.map +0 -1
- package/dist/schema/setColumnID.js +0 -24
- package/dist/schema/setColumnID.js.map +0 -1
- package/dist/schema/traverseFields.d.ts +0 -36
- package/dist/schema/traverseFields.d.ts.map +0 -1
- package/dist/schema/traverseFields.js +0 -613
- package/dist/schema/traverseFields.js.map +0 -1
- package/dist/schema/withDefault.d.ts +0 -4
- package/dist/schema/withDefault.d.ts.map +0 -1
- package/dist/schema/withDefault.js +0 -10
- package/dist/schema/withDefault.js.map +0 -1
package/dist/schema/build.js
DELETED
@@ -1,369 +0,0 @@
|
|
1
|
-
import { createTableName } from '@payloadcms/drizzle';
|
2
|
-
import { relations } from 'drizzle-orm';
|
3
|
-
import { foreignKey, index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core';
|
4
|
-
import toSnakeCase from 'to-snake-case';
|
5
|
-
import { parentIDColumnMap } from './parentIDColumnMap.js';
|
6
|
-
import { setColumnID } from './setColumnID.js';
|
7
|
-
import { traverseFields } from './traverseFields.js';
|
8
|
-
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableUnique = false, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, versions })=>{
|
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
|
-
adapter,
|
25
|
-
columns,
|
26
|
-
fields
|
27
|
-
});
|
28
|
-
const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = traverseFields({
|
29
|
-
adapter,
|
30
|
-
columns,
|
31
|
-
disableNotNull,
|
32
|
-
disableUnique,
|
33
|
-
fields,
|
34
|
-
indexes,
|
35
|
-
localesColumns,
|
36
|
-
localesIndexes,
|
37
|
-
newTableName: tableName,
|
38
|
-
parentTableName: tableName,
|
39
|
-
relationsToBuild,
|
40
|
-
relationships,
|
41
|
-
rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
|
42
|
-
rootTableIDColType: rootTableIDColType || idColType,
|
43
|
-
rootTableName,
|
44
|
-
versions
|
45
|
-
});
|
46
|
-
// split the relationsToBuild by localized and non-localized
|
47
|
-
const localizedRelations = new Map();
|
48
|
-
const nonLocalizedRelations = new Map();
|
49
|
-
relationsToBuild.forEach(({ type, localized, target }, key)=>{
|
50
|
-
const map = localized ? localizedRelations : nonLocalizedRelations;
|
51
|
-
map.set(key, {
|
52
|
-
type,
|
53
|
-
target
|
54
|
-
});
|
55
|
-
});
|
56
|
-
if (timestamps) {
|
57
|
-
columns.createdAt = timestamp('created_at', {
|
58
|
-
mode: 'string',
|
59
|
-
precision: 3,
|
60
|
-
withTimezone: true
|
61
|
-
}).defaultNow().notNull();
|
62
|
-
columns.updatedAt = timestamp('updated_at', {
|
63
|
-
mode: 'string',
|
64
|
-
precision: 3,
|
65
|
-
withTimezone: true
|
66
|
-
}).defaultNow().notNull();
|
67
|
-
}
|
68
|
-
const table = adapter.pgSchema.table(tableName, columns, (cols)=>{
|
69
|
-
const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func])=>{
|
70
|
-
config[key] = func(cols);
|
71
|
-
return config;
|
72
|
-
}, {});
|
73
|
-
const result = Object.entries(indexes).reduce((acc, [colName, func])=>{
|
74
|
-
acc[colName] = func(cols);
|
75
|
-
return acc;
|
76
|
-
}, extraConfig);
|
77
|
-
return result;
|
78
|
-
});
|
79
|
-
adapter.tables[tableName] = table;
|
80
|
-
if (hasLocalizedField || localizedRelations.size) {
|
81
|
-
const localeTableName = `${tableName}${adapter.localesSuffix}`;
|
82
|
-
localesColumns.id = serial('id').primaryKey();
|
83
|
-
localesColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
84
|
-
localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull();
|
85
|
-
localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols)=>{
|
86
|
-
return Object.entries(localesIndexes).reduce((acc, [colName, func])=>{
|
87
|
-
acc[colName] = func(cols);
|
88
|
-
return acc;
|
89
|
-
}, {
|
90
|
-
_localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID),
|
91
|
-
_parentIdFk: foreignKey({
|
92
|
-
name: `${localeTableName}_parent_id_fk`,
|
93
|
-
columns: [
|
94
|
-
cols._parentID
|
95
|
-
],
|
96
|
-
foreignColumns: [
|
97
|
-
table.id
|
98
|
-
]
|
99
|
-
}).onDelete('cascade')
|
100
|
-
});
|
101
|
-
});
|
102
|
-
adapter.tables[localeTableName] = localesTable;
|
103
|
-
adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one })=>{
|
104
|
-
const result = {};
|
105
|
-
result._parentID = one(table, {
|
106
|
-
fields: [
|
107
|
-
localesTable._parentID
|
108
|
-
],
|
109
|
-
references: [
|
110
|
-
table.id
|
111
|
-
],
|
112
|
-
// name the relationship by what the many() relationName is
|
113
|
-
relationName: '_locales'
|
114
|
-
});
|
115
|
-
localizedRelations.forEach(({ type, target }, key)=>{
|
116
|
-
if (type === 'one') {
|
117
|
-
result[key] = one(adapter.tables[target], {
|
118
|
-
fields: [
|
119
|
-
localesTable[key]
|
120
|
-
],
|
121
|
-
references: [
|
122
|
-
adapter.tables[target].id
|
123
|
-
],
|
124
|
-
relationName: key
|
125
|
-
});
|
126
|
-
}
|
127
|
-
if (type === 'many') {
|
128
|
-
result[key] = many(adapter.tables[target], {
|
129
|
-
relationName: key
|
130
|
-
});
|
131
|
-
}
|
132
|
-
});
|
133
|
-
return result;
|
134
|
-
});
|
135
|
-
}
|
136
|
-
if (isRoot) {
|
137
|
-
if (hasManyTextField) {
|
138
|
-
const textsTableName = `${rootTableName}_texts`;
|
139
|
-
const columns = {
|
140
|
-
id: serial('id').primaryKey(),
|
141
|
-
order: integer('order').notNull(),
|
142
|
-
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
143
|
-
path: varchar('path').notNull(),
|
144
|
-
text: varchar('text')
|
145
|
-
};
|
146
|
-
if (hasLocalizedManyTextField) {
|
147
|
-
columns.locale = adapter.enums.enum__locales('locale');
|
148
|
-
}
|
149
|
-
textsTable = adapter.pgSchema.table(textsTableName, columns, (cols)=>{
|
150
|
-
const config = {
|
151
|
-
orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
152
|
-
parentFk: foreignKey({
|
153
|
-
name: `${textsTableName}_parent_fk`,
|
154
|
-
columns: [
|
155
|
-
cols.parent
|
156
|
-
],
|
157
|
-
foreignColumns: [
|
158
|
-
table.id
|
159
|
-
]
|
160
|
-
}).onDelete('cascade')
|
161
|
-
};
|
162
|
-
if (hasManyTextField === 'index') {
|
163
|
-
config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text);
|
164
|
-
}
|
165
|
-
if (hasLocalizedManyTextField) {
|
166
|
-
config.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
|
167
|
-
}
|
168
|
-
return config;
|
169
|
-
});
|
170
|
-
adapter.tables[textsTableName] = textsTable;
|
171
|
-
adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one })=>({
|
172
|
-
parent: one(table, {
|
173
|
-
fields: [
|
174
|
-
textsTable.parent
|
175
|
-
],
|
176
|
-
references: [
|
177
|
-
table.id
|
178
|
-
],
|
179
|
-
relationName: '_texts'
|
180
|
-
})
|
181
|
-
}));
|
182
|
-
}
|
183
|
-
if (hasManyNumberField) {
|
184
|
-
const numbersTableName = `${rootTableName}_numbers`;
|
185
|
-
const columns = {
|
186
|
-
id: serial('id').primaryKey(),
|
187
|
-
number: numeric('number'),
|
188
|
-
order: integer('order').notNull(),
|
189
|
-
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
190
|
-
path: varchar('path').notNull()
|
191
|
-
};
|
192
|
-
if (hasLocalizedManyNumberField) {
|
193
|
-
columns.locale = adapter.enums.enum__locales('locale');
|
194
|
-
}
|
195
|
-
numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols)=>{
|
196
|
-
const config = {
|
197
|
-
orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
198
|
-
parentFk: foreignKey({
|
199
|
-
name: `${numbersTableName}_parent_fk`,
|
200
|
-
columns: [
|
201
|
-
cols.parent
|
202
|
-
],
|
203
|
-
foreignColumns: [
|
204
|
-
table.id
|
205
|
-
]
|
206
|
-
}).onDelete('cascade')
|
207
|
-
};
|
208
|
-
if (hasManyNumberField === 'index') {
|
209
|
-
config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number);
|
210
|
-
}
|
211
|
-
if (hasLocalizedManyNumberField) {
|
212
|
-
config.localeParent = index(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
|
213
|
-
}
|
214
|
-
return config;
|
215
|
-
});
|
216
|
-
adapter.tables[numbersTableName] = numbersTable;
|
217
|
-
adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one })=>({
|
218
|
-
parent: one(table, {
|
219
|
-
fields: [
|
220
|
-
numbersTable.parent
|
221
|
-
],
|
222
|
-
references: [
|
223
|
-
table.id
|
224
|
-
],
|
225
|
-
relationName: '_numbers'
|
226
|
-
})
|
227
|
-
}));
|
228
|
-
}
|
229
|
-
if (relationships.size) {
|
230
|
-
const relationshipColumns = {
|
231
|
-
id: serial('id').primaryKey(),
|
232
|
-
order: integer('order'),
|
233
|
-
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
234
|
-
path: varchar('path').notNull()
|
235
|
-
};
|
236
|
-
if (hasLocalizedRelationshipField) {
|
237
|
-
relationshipColumns.locale = adapter.enums.enum__locales('locale');
|
238
|
-
}
|
239
|
-
const relationExtraConfig = {};
|
240
|
-
const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
|
241
|
-
relationships.forEach((relationTo)=>{
|
242
|
-
const relationshipConfig = adapter.payload.collections[relationTo].config;
|
243
|
-
const formattedRelationTo = createTableName({
|
244
|
-
adapter,
|
245
|
-
config: relationshipConfig,
|
246
|
-
throwValidationError: true
|
247
|
-
});
|
248
|
-
let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
|
249
|
-
const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
|
250
|
-
if (relatedCollectionCustomIDType === 'number') colType = 'numeric';
|
251
|
-
if (relatedCollectionCustomIDType === 'text') colType = 'varchar';
|
252
|
-
relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](`${formattedRelationTo}_id`);
|
253
|
-
relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
|
254
|
-
name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
|
255
|
-
columns: [
|
256
|
-
cols[`${relationTo}ID`]
|
257
|
-
],
|
258
|
-
foreignColumns: [
|
259
|
-
adapter.tables[formattedRelationTo].id
|
260
|
-
]
|
261
|
-
}).onDelete('cascade');
|
262
|
-
});
|
263
|
-
relationshipsTable = adapter.pgSchema.table(relationshipsTableName, relationshipColumns, (cols)=>{
|
264
|
-
const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
|
265
|
-
config[key] = func(cols);
|
266
|
-
return config;
|
267
|
-
}, {
|
268
|
-
order: index(`${relationshipsTableName}_order_idx`).on(cols.order),
|
269
|
-
parentFk: foreignKey({
|
270
|
-
name: `${relationshipsTableName}_parent_fk`,
|
271
|
-
columns: [
|
272
|
-
cols.parent
|
273
|
-
],
|
274
|
-
foreignColumns: [
|
275
|
-
table.id
|
276
|
-
]
|
277
|
-
}).onDelete('cascade'),
|
278
|
-
parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),
|
279
|
-
pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path)
|
280
|
-
});
|
281
|
-
if (hasLocalizedRelationshipField) {
|
282
|
-
result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale);
|
283
|
-
}
|
284
|
-
return result;
|
285
|
-
});
|
286
|
-
adapter.tables[relationshipsTableName] = relationshipsTable;
|
287
|
-
adapter.relations[`relations_${relationshipsTableName}`] = relations(relationshipsTable, ({ one })=>{
|
288
|
-
const result = {
|
289
|
-
parent: one(table, {
|
290
|
-
fields: [
|
291
|
-
relationshipsTable.parent
|
292
|
-
],
|
293
|
-
references: [
|
294
|
-
table.id
|
295
|
-
],
|
296
|
-
relationName: '_rels'
|
297
|
-
})
|
298
|
-
};
|
299
|
-
relationships.forEach((relationTo)=>{
|
300
|
-
const relatedTableName = createTableName({
|
301
|
-
adapter,
|
302
|
-
config: adapter.payload.collections[relationTo].config,
|
303
|
-
throwValidationError: true
|
304
|
-
});
|
305
|
-
const idColumnName = `${relationTo}ID`;
|
306
|
-
result[idColumnName] = one(adapter.tables[relatedTableName], {
|
307
|
-
fields: [
|
308
|
-
relationshipsTable[idColumnName]
|
309
|
-
],
|
310
|
-
references: [
|
311
|
-
adapter.tables[relatedTableName].id
|
312
|
-
],
|
313
|
-
relationName: relationTo
|
314
|
-
});
|
315
|
-
});
|
316
|
-
return result;
|
317
|
-
});
|
318
|
-
}
|
319
|
-
}
|
320
|
-
adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
|
321
|
-
const result = {};
|
322
|
-
nonLocalizedRelations.forEach(({ type, target }, key)=>{
|
323
|
-
if (type === 'one') {
|
324
|
-
result[key] = one(adapter.tables[target], {
|
325
|
-
fields: [
|
326
|
-
table[key]
|
327
|
-
],
|
328
|
-
references: [
|
329
|
-
adapter.tables[target].id
|
330
|
-
],
|
331
|
-
relationName: key
|
332
|
-
});
|
333
|
-
}
|
334
|
-
if (type === 'many') {
|
335
|
-
result[key] = many(adapter.tables[target], {
|
336
|
-
relationName: key
|
337
|
-
});
|
338
|
-
}
|
339
|
-
});
|
340
|
-
if (hasLocalizedField) {
|
341
|
-
result._locales = many(localesTable, {
|
342
|
-
relationName: '_locales'
|
343
|
-
});
|
344
|
-
}
|
345
|
-
if (hasManyTextField) {
|
346
|
-
result._texts = many(textsTable, {
|
347
|
-
relationName: '_texts'
|
348
|
-
});
|
349
|
-
}
|
350
|
-
if (hasManyNumberField) {
|
351
|
-
result._numbers = many(numbersTable, {
|
352
|
-
relationName: '_numbers'
|
353
|
-
});
|
354
|
-
}
|
355
|
-
if (relationships.size && relationshipsTable) {
|
356
|
-
result._rels = many(relationshipsTable, {
|
357
|
-
relationName: '_rels'
|
358
|
-
});
|
359
|
-
}
|
360
|
-
return result;
|
361
|
-
});
|
362
|
-
return {
|
363
|
-
hasManyNumberField,
|
364
|
-
hasManyTextField,
|
365
|
-
relationsToBuild
|
366
|
-
};
|
367
|
-
};
|
368
|
-
|
369
|
-
//# sourceMappingURL=build.js.map
|
package/dist/schema/build.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type {\n ForeignKeyBuilder,\n IndexBuilder,\n PgColumnBuilder,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { Field } from 'payload'\n\nimport { createTableName } from '@payloadcms/drizzle'\nimport { relations } from 'drizzle-orm'\nimport {\n foreignKey,\n index,\n integer,\n numeric,\n serial,\n timestamp,\n unique,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types.js'\n\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\nexport type RelationMap = Map<string, { localized: boolean; target: string; type: 'many' | 'one' }>\n\ntype Args = {\n adapter: PostgresAdapter\n baseColumns?: Record<string, PgColumnBuilder>\n baseExtraConfig?: BaseExtraConfig\n buildNumbers?: boolean\n buildRelationships?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n rootRelationsToBuild?: RelationMap\n rootRelationships?: Set<string>\n rootTableIDColType?: string\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n}\n\ntype Result = {\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 rootRelationsToBuild,\n rootRelationships,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n}: Args): Result => {\n const isRoot = !incomingRootTableName\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, PgColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n const localesColumns: Record<string, PgColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | PgTableWithColumns<any>\n let textsTable: GenericTable | PgTableWithColumns<any>\n let numbersTable: GenericTable | PgTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | PgTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: RelationMap = new Map()\n\n const idColType: IDType = setColumnID({ adapter, 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 localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\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 = timestamp('created_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n columns.updatedAt = timestamp('updated_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n }\n\n const table = adapter.pgSchema.table(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 = serial('id').primaryKey()\n localesColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull()\n\n localesTable = adapter.pgSchema.table(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, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n text: varchar('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n textsTable = adapter.pgSchema.table(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, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n numbersTable = adapter.pgSchema.table(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, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order'),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = adapter.enums.enum__locales('locale')\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 throwValidationError: true,\n })\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') colType = 'numeric'\n if (relatedCollectionCustomIDType === 'text') colType = 'varchar'\n\n relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](\n `${formattedRelationTo}_id`,\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 = adapter.pgSchema.table(\n relationshipsTableName,\n relationshipColumns,\n (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\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 throwValidationError: true,\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 { hasManyNumberField, hasManyTextField, relationsToBuild }\n}\n"],"names":["createTableName","relations","foreignKey","index","integer","numeric","serial","timestamp","unique","varchar","toSnakeCase","parentIDColumnMap","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","disableNotNull","disableUnique","fields","rootRelationsToBuild","rootRelationships","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","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","mode","precision","withTimezone","defaultNow","notNull","updatedAt","table","pgSchema","cols","extraConfig","Object","entries","reduce","config","func","result","acc","colName","tables","size","localeTableName","localesSuffix","id","primaryKey","_locale","enums","enum__locales","_parentID","_localeParent","on","_parentIdFk","name","foreignColumns","onDelete","many","one","references","relationName","textsTableName","order","parent","path","text","locale","orderParentIdx","parentFk","text_idx","localeParent","numbersTableName","number","numberIdx","relationshipColumns","relationExtraConfig","relationshipsTableName","relationshipsSuffix","relationTo","relationshipConfig","payload","collections","formattedRelationTo","throwValidationError","colType","idType","relatedCollectionCustomIDType","slug","customIDType","parentIdx","pathIdx","localeIdx","relatedTableName","idColumnName","_locales","_texts","_numbers","_rels"],"mappings":"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"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import type { GenericColumn } from '../types.js';
|
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]: GenericColumn;
|
10
|
-
}) => import("drizzle-orm/pg-core").IndexBuilder;
|
11
|
-
export {};
|
12
|
-
//# sourceMappingURL=createIndex.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../src/schema/createIndex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,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,aAAa,CAAA;CAAE,+CAc9C,CAAA"}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import { index, uniqueIndex } from 'drizzle-orm/pg-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) return uniqueIndex(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
|
14
|
-
return index(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
|
15
|
-
};
|
16
|
-
};
|
17
|
-
|
18
|
-
//# sourceMappingURL=createIndex.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/createIndex.ts"],"sourcesContent":["import { index, uniqueIndex } from 'drizzle-orm/pg-core'\n\nimport type { GenericColumn } from '../types.js'\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]: GenericColumn }) => {\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 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":"AAAA,SAASA,KAAK,EAAEC,WAAW,QAAQ,sBAAqB;AAWxD,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,QACF,OAAOL,YAAY,CAAC,EAAEI,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;QACvF,OAAOf,MAAM,CAAC,EAAEK,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;IACjF;AACF,EAAC"}
|
@@ -1 +0,0 @@
|
|
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"}
|
package/dist/schema/idToUUID.js
DELETED
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,4 +0,0 @@
|
|
1
|
-
import { integer, numeric, uuid, varchar } from 'drizzle-orm/pg-core';
|
2
|
-
import type { IDType } from '../types.js';
|
3
|
-
export declare const parentIDColumnMap: Record<IDType, typeof integer<string> | typeof numeric<string> | typeof uuid<string> | typeof varchar>;
|
4
|
-
//# sourceMappingURL=parentIDColumnMap.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"parentIDColumnMap.d.ts","sourceRoot":"","sources":["../../src/schema/parentIDColumnMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,OAAO,CAMvF,CAAA"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/parentIDColumnMap.ts"],"sourcesContent":["import { integer, numeric, uuid, varchar } from 'drizzle-orm/pg-core'\n\nimport type { IDType } from '../types.js'\n\nexport const parentIDColumnMap: Record<\n IDType,\n typeof integer<string> | typeof numeric<string> | typeof uuid<string> | typeof varchar\n> = {\n integer,\n numeric,\n uuid,\n varchar,\n}\n"],"names":["integer","numeric","uuid","varchar","parentIDColumnMap"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AAIrE,OAAO,MAAMC,oBAGT;IACFJ;IACAC;IACAC;IACAC;AACF,EAAC"}
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import type { PgColumnBuilder } from 'drizzle-orm/pg-core';
|
2
|
-
import { type Field } from 'payload';
|
3
|
-
import type { IDType, PostgresAdapter } from '../types.js';
|
4
|
-
type Args = {
|
5
|
-
adapter: PostgresAdapter;
|
6
|
-
columns: Record<string, PgColumnBuilder>;
|
7
|
-
fields: Field[];
|
8
|
-
};
|
9
|
-
export declare const setColumnID: ({ adapter, columns, fields }: Args) => IDType;
|
10
|
-
export {};
|
11
|
-
//# sourceMappingURL=setColumnID.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"setColumnID.d.ts","sourceRoot":"","sources":["../../src/schema/setColumnID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,SAAS,CAAA;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,KAAK,IAAI,GAAG;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AACnG,eAAO,MAAM,WAAW,iCAAkC,IAAI,KAAG,MAuBhE,CAAA"}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { numeric, serial, uuid, varchar } from 'drizzle-orm/pg-core';
|
2
|
-
import { flattenTopLevelFields } from 'payload';
|
3
|
-
import { fieldAffectsData } from 'payload/shared';
|
4
|
-
export const setColumnID = ({ adapter, 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 = varchar('id').primaryKey();
|
13
|
-
return 'varchar';
|
14
|
-
}
|
15
|
-
}
|
16
|
-
if (adapter.idType === 'uuid') {
|
17
|
-
columns.id = uuid('id').defaultRandom().primaryKey();
|
18
|
-
return 'uuid';
|
19
|
-
}
|
20
|
-
columns.id = serial('id').primaryKey();
|
21
|
-
return 'integer';
|
22
|
-
};
|
23
|
-
|
24
|
-
//# sourceMappingURL=setColumnID.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/setColumnID.ts"],"sourcesContent":["import type { PgColumnBuilder } from 'drizzle-orm/pg-core'\n\nimport { numeric, serial, uuid, varchar } from 'drizzle-orm/pg-core'\nimport { type Field, flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { IDType, PostgresAdapter } from '../types.js'\n\ntype Args = { adapter: PostgresAdapter; columns: Record<string, PgColumnBuilder>; fields: Field[] }\nexport const setColumnID = ({ adapter, 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 = varchar('id').primaryKey()\n return 'varchar'\n }\n }\n\n if (adapter.idType === 'uuid') {\n columns.id = uuid('id').defaultRandom().primaryKey()\n return 'uuid'\n }\n\n columns.id = serial('id').primaryKey()\n return 'integer'\n}\n"],"names":["numeric","serial","uuid","varchar","flattenTopLevelFields","fieldAffectsData","setColumnID","adapter","columns","fields","idField","find","field","name","type","id","primaryKey","idType","defaultRandom"],"mappings":"AAEA,SAASA,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AACpE,SAAqBC,qBAAqB,QAAQ,UAAS;AAC3D,SAASC,gBAAgB,QAAQ,iBAAgB;AAKjD,OAAO,MAAMC,cAAc,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAQ;IAC5D,MAAMC,UAAUN,sBAAsBK,QAAQE,IAAI,CAChD,CAACC,QAAUP,iBAAiBO,UAAUA,MAAMC,IAAI,KAAK;IAEvD,IAAIH,SAAS;QACX,IAAIA,QAAQI,IAAI,KAAK,UAAU;YAC7BN,QAAQO,EAAE,GAAGf,QAAQ,MAAMgB,UAAU;YACrC,OAAO;QACT;QAEA,IAAIN,QAAQI,IAAI,KAAK,QAAQ;YAC3BN,QAAQO,EAAE,GAAGZ,QAAQ,MAAMa,UAAU;YACrC,OAAO;QACT;IACF;IAEA,IAAIT,QAAQU,MAAM,KAAK,QAAQ;QAC7BT,QAAQO,EAAE,GAAGb,KAAK,MAAMgB,aAAa,GAAGF,UAAU;QAClD,OAAO;IACT;IAEAR,QAAQO,EAAE,GAAGd,OAAO,MAAMe,UAAU;IACpC,OAAO;AACT,EAAC"}
|
@@ -1,36 +0,0 @@
|
|
1
|
-
import type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core';
|
2
|
-
import type { Field, TabAsField } from 'payload';
|
3
|
-
import type { GenericColumns, PostgresAdapter } from '../types.js';
|
4
|
-
import type { RelationMap } from './build.js';
|
5
|
-
type Args = {
|
6
|
-
adapter: PostgresAdapter;
|
7
|
-
columnPrefix?: string;
|
8
|
-
columns: Record<string, PgColumnBuilder>;
|
9
|
-
disableNotNull: boolean;
|
10
|
-
disableUnique?: boolean;
|
11
|
-
fieldPrefix?: string;
|
12
|
-
fields: (Field | TabAsField)[];
|
13
|
-
forceLocalized?: boolean;
|
14
|
-
indexes: Record<string, (cols: GenericColumns) => IndexBuilder>;
|
15
|
-
localesColumns: Record<string, PgColumnBuilder>;
|
16
|
-
localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>;
|
17
|
-
newTableName: string;
|
18
|
-
parentTableName: string;
|
19
|
-
relationsToBuild: RelationMap;
|
20
|
-
relationships: Set<string>;
|
21
|
-
rootRelationsToBuild?: RelationMap;
|
22
|
-
rootTableIDColType: string;
|
23
|
-
rootTableName: string;
|
24
|
-
versions: boolean;
|
25
|
-
};
|
26
|
-
type Result = {
|
27
|
-
hasLocalizedField: boolean;
|
28
|
-
hasLocalizedManyNumberField: boolean;
|
29
|
-
hasLocalizedManyTextField: boolean;
|
30
|
-
hasLocalizedRelationshipField: boolean;
|
31
|
-
hasManyNumberField: 'index' | boolean;
|
32
|
-
hasManyTextField: 'index' | boolean;
|
33
|
-
};
|
34
|
-
export declare const traverseFields: ({ adapter, columnPrefix, columns, disableNotNull, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, }: Args) => Result;
|
35
|
-
export {};
|
36
|
-
//# sourceMappingURL=traverseFields.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA0BhD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAA;AAQ9D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,WAAW,CAAA;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,wRAoBxB,IAAI,KAAG,MA+rBT,CAAA"}
|