@payloadcms/drizzle 3.0.0-canary.fb81f02 → 3.0.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.
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +1 -1
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.d.ts +3 -0
- package/dist/countGlobalVersions.d.ts.map +1 -0
- package/dist/countGlobalVersions.js +27 -0
- package/dist/countGlobalVersions.js.map +1 -0
- package/dist/countVersions.d.ts +3 -0
- package/dist/countVersions.d.ts.map +1 -0
- package/dist/countVersions.js +27 -0
- package/dist/countVersions.js.map +1 -0
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +2 -1
- package/dist/create.js.map +1 -1
- package/dist/createGlobalVersion.d.ts +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +7 -2
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createTableName.d.ts.map +1 -1
- package/dist/createTableName.js +6 -2
- package/dist/createTableName.js.map +1 -1
- package/dist/createVersion.d.ts +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +22 -14
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +6 -3
- package/dist/deleteOne.js.map +1 -1
- package/dist/deleteVersions.js +1 -1
- package/dist/deleteVersions.js.map +1 -1
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +3 -1
- package/dist/destroy.js.map +1 -1
- package/dist/exports/postgres.d.ts +15 -0
- package/dist/exports/postgres.d.ts.map +1 -0
- package/dist/exports/postgres.js +16 -0
- package/dist/exports/postgres.js.map +1 -0
- package/dist/find/buildFindManyArgs.d.ts +15 -7
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildFindManyArgs.js +40 -17
- package/dist/find/buildFindManyArgs.js.map +1 -1
- package/dist/find/findMany.d.ts +2 -1
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/findMany.js +12 -7
- package/dist/find/findMany.js.map +1 -1
- package/dist/find/traverseFields.d.ts +18 -4
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +359 -69
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +4 -2
- package/dist/find.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +2 -1
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +4 -3
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findMigrationDir.d.ts.map +1 -1
- package/dist/findMigrationDir.js +3 -1
- package/dist/findMigrationDir.js.map +1 -1
- package/dist/findOne.d.ts +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +3 -1
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +4 -3
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +4 -0
- package/dist/migrate.js.map +1 -1
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +1 -1
- package/dist/migrateDown.js.map +1 -1
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +4 -0
- package/dist/migrateFresh.js.map +1 -1
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +2 -1
- package/dist/migrateRefresh.js.map +1 -1
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +5 -3
- package/dist/migrateReset.js.map +1 -1
- package/dist/migrateStatus.js +0 -1
- package/dist/migrateStatus.js.map +1 -1
- package/dist/postgres/countDistinct.d.ts +3 -0
- package/dist/postgres/countDistinct.d.ts.map +1 -0
- package/dist/postgres/countDistinct.js +23 -0
- package/dist/postgres/countDistinct.js.map +1 -0
- package/dist/postgres/createDatabase.d.ts +14 -0
- package/dist/postgres/createDatabase.d.ts.map +1 -0
- package/dist/postgres/createDatabase.js +76 -0
- package/dist/postgres/createDatabase.js.map +1 -0
- package/dist/postgres/createExtensions.d.ts +3 -0
- package/dist/postgres/createExtensions.d.ts.map +1 -0
- package/dist/postgres/createExtensions.js +16 -0
- package/dist/postgres/createExtensions.js.map +1 -0
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
- package/dist/postgres/createJSONQuery/index.d.ts +3 -0
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
- package/dist/postgres/createJSONQuery/index.js +42 -0
- package/dist/postgres/createJSONQuery/index.js.map +1 -0
- package/dist/postgres/createMigration.d.ts +3 -0
- package/dist/postgres/createMigration.d.ts.map +1 -0
- package/dist/postgres/createMigration.js +88 -0
- package/dist/postgres/createMigration.js.map +1 -0
- package/dist/postgres/defaultSnapshot.d.ts +3 -0
- package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
- package/dist/postgres/defaultSnapshot.js +20 -0
- package/dist/postgres/defaultSnapshot.js.map +1 -0
- package/dist/postgres/deleteWhere.d.ts +3 -0
- package/dist/postgres/deleteWhere.d.ts.map +1 -0
- package/dist/postgres/deleteWhere.js +6 -0
- package/dist/postgres/deleteWhere.js.map +1 -0
- package/dist/postgres/dropDatabase.d.ts +3 -0
- package/dist/postgres/dropDatabase.d.ts.map +1 -0
- package/dist/postgres/dropDatabase.js +9 -0
- package/dist/postgres/dropDatabase.js.map +1 -0
- package/dist/postgres/execute.d.ts +3 -0
- package/dist/postgres/execute.d.ts.map +1 -0
- package/dist/postgres/execute.js +11 -0
- package/dist/postgres/execute.js.map +1 -0
- package/dist/postgres/getMigrationTemplate.d.ts +4 -0
- package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
- package/dist/postgres/getMigrationTemplate.js +13 -0
- package/dist/postgres/getMigrationTemplate.js.map +1 -0
- package/dist/postgres/init.d.ts +3 -0
- package/dist/postgres/init.d.ts.map +1 -0
- package/dist/postgres/init.js +104 -0
- package/dist/postgres/init.js.map +1 -0
- package/dist/postgres/insert.d.ts +3 -0
- package/dist/postgres/insert.d.ts.map +1 -0
- package/dist/postgres/insert.js +12 -0
- package/dist/postgres/insert.js.map +1 -0
- package/dist/postgres/requireDrizzleKit.d.ts +3 -0
- package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
- package/dist/postgres/requireDrizzleKit.js +5 -0
- package/dist/postgres/requireDrizzleKit.js.map +1 -0
- package/dist/postgres/schema/build.d.ts +42 -0
- package/dist/postgres/schema/build.d.ts.map +1 -0
- package/dist/postgres/schema/build.js +404 -0
- package/dist/postgres/schema/build.js.map +1 -0
- package/dist/postgres/schema/createIndex.d.ts +11 -0
- package/dist/postgres/schema/createIndex.d.ts.map +1 -0
- package/dist/postgres/schema/createIndex.js +20 -0
- package/dist/postgres/schema/createIndex.js.map +1 -0
- package/dist/postgres/schema/geometryColumn.d.ts +12 -0
- package/dist/postgres/schema/geometryColumn.d.ts.map +1 -0
- package/dist/postgres/schema/geometryColumn.js +18 -0
- package/dist/postgres/schema/geometryColumn.js.map +1 -0
- package/dist/postgres/schema/idToUUID.d.ts +3 -0
- package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
- package/dist/postgres/schema/idToUUID.js +11 -0
- package/dist/postgres/schema/idToUUID.js.map +1 -0
- package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
- package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
- package/dist/postgres/schema/parentIDColumnMap.js +9 -0
- package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
- package/dist/postgres/schema/setColumnID.d.ts +11 -0
- package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
- package/dist/postgres/schema/setColumnID.js +24 -0
- package/dist/postgres/schema/setColumnID.js.map +1 -0
- package/dist/postgres/schema/traverseFields.d.ts +42 -0
- package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
- package/dist/postgres/schema/traverseFields.js +743 -0
- package/dist/postgres/schema/traverseFields.js.map +1 -0
- package/dist/postgres/schema/withDefault.d.ts +4 -0
- package/dist/postgres/schema/withDefault.d.ts.map +1 -0
- package/dist/postgres/schema/withDefault.js +15 -0
- package/dist/postgres/schema/withDefault.js.map +1 -0
- package/dist/postgres/types.d.ts +142 -0
- package/dist/postgres/types.d.ts.map +1 -0
- package/dist/postgres/types.js +3 -0
- package/dist/postgres/types.js.map +1 -0
- package/dist/queries/addJoinTable.d.ts +11 -0
- package/dist/queries/addJoinTable.d.ts.map +1 -0
- package/dist/queries/addJoinTable.js +13 -0
- package/dist/queries/addJoinTable.js.map +1 -0
- package/dist/queries/buildAndOrConditions.d.ts +1 -1
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +2 -4
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildOrderBy.d.ts +18 -0
- package/dist/queries/buildOrderBy.d.ts.map +1 -0
- package/dist/queries/buildOrderBy.js +56 -0
- package/dist/queries/buildOrderBy.js.map +1 -0
- package/dist/queries/buildQuery.d.ts +8 -7
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +12 -47
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +6 -2
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +271 -224
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/operatorMap.d.ts.map +1 -1
- package/dist/queries/operatorMap.js +0 -4
- package/dist/queries/operatorMap.js.map +1 -1
- package/dist/queries/parseParams.d.ts +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +85 -6
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/sanitizeQueryValue.d.ts +12 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +89 -25
- package/dist/queries/sanitizeQueryValue.js.map +1 -1
- package/dist/queries/selectDistinct.d.ts +3 -4
- package/dist/queries/selectDistinct.d.ts.map +1 -1
- package/dist/queries/selectDistinct.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +6 -6
- package/dist/queryDrafts.js.map +1 -1
- package/dist/transactions/beginTransaction.d.ts.map +1 -1
- package/dist/transactions/beginTransaction.js +5 -1
- package/dist/transactions/beginTransaction.js.map +1 -1
- package/dist/transactions/commitTransaction.d.ts.map +1 -1
- package/dist/transactions/commitTransaction.js +3 -1
- package/dist/transactions/commitTransaction.js.map +1 -1
- package/dist/transform/read/hasManyNumber.d.ts +2 -1
- package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
- package/dist/transform/read/hasManyNumber.js +12 -2
- package/dist/transform/read/hasManyNumber.js.map +1 -1
- package/dist/transform/read/hasManyText.d.ts +2 -1
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.js +12 -2
- package/dist/transform/read/hasManyText.js.map +1 -1
- package/dist/transform/read/index.d.ts +3 -2
- package/dist/transform/read/index.d.ts.map +1 -1
- package/dist/transform/read/index.js +3 -2
- package/dist/transform/read/index.js.map +1 -1
- package/dist/transform/read/relationship.d.ts +2 -1
- package/dist/transform/read/relationship.d.ts.map +1 -1
- package/dist/transform/read/relationship.js +15 -6
- package/dist/transform/read/relationship.js.map +1 -1
- package/dist/transform/read/traverseFields.d.ts +10 -2
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +185 -71
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/dist/transform/write/array.d.ts +6 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +7 -3
- package/dist/transform/write/array.js.map +1 -1
- package/dist/transform/write/blocks.d.ts +8 -3
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +19 -7
- package/dist/transform/write/blocks.js.map +1 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/index.js +1 -1
- package/dist/transform/write/index.js.map +1 -1
- package/dist/transform/write/relationships.d.ts.map +1 -1
- package/dist/transform/write/relationships.js +6 -2
- package/dist/transform/write/relationships.js.map +1 -1
- package/dist/transform/write/selects.d.ts.map +1 -1
- package/dist/transform/write/selects.js +1 -1
- package/dist/transform/write/selects.js.map +1 -1
- package/dist/transform/write/traverseFields.d.ts +6 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +62 -19
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/types.d.ts +6 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +4 -2
- package/dist/update.js.map +1 -1
- package/dist/updateGlobal.d.ts +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +2 -1
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +4 -3
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateVersion.d.ts +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +4 -3
- package/dist/updateVersion.js.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
- package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
- package/dist/upsertRow/index.d.ts +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +51 -12
- package/dist/upsertRow/index.js.map +1 -1
- package/dist/upsertRow/insertArrays.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.js +5 -2
- package/dist/upsertRow/insertArrays.js.map +1 -1
- package/dist/upsertRow/types.d.ts +10 -5
- package/dist/upsertRow/types.d.ts.map +1 -1
- package/dist/upsertRow/types.js.map +1 -1
- package/dist/utilities/buildIndexName.d.ts +7 -0
- package/dist/utilities/buildIndexName.d.ts.map +1 -0
- package/dist/utilities/buildIndexName.js +14 -0
- package/dist/utilities/buildIndexName.js.map +1 -0
- package/dist/utilities/createBlocksMap.d.ts.map +1 -1
- package/dist/utilities/createBlocksMap.js +4 -2
- package/dist/utilities/createBlocksMap.js.map +1 -1
- package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
- package/dist/utilities/createRelationshipMap.js +3 -1
- package/dist/utilities/createRelationshipMap.js.map +1 -1
- package/dist/utilities/executeSchemaHooks.d.ts +24 -0
- package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
- package/dist/utilities/executeSchemaHooks.js +21 -0
- package/dist/utilities/executeSchemaHooks.js.map +1 -0
- package/dist/utilities/extendDrizzleTable.d.ts +19 -0
- package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
- package/dist/utilities/extendDrizzleTable.js +38 -0
- package/dist/utilities/extendDrizzleTable.js.map +1 -0
- package/dist/utilities/getCollectionIdType.d.ts +7 -0
- package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
- package/dist/utilities/getCollectionIdType.js +11 -0
- package/dist/utilities/getCollectionIdType.js.map +1 -0
- package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
- package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
- package/dist/utilities/getNameFromDrizzleTable.js +6 -0
- package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
- package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
- package/dist/utilities/hasLocalesTable.js +12 -4
- package/dist/utilities/hasLocalesTable.js.map +1 -1
- package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
- package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
- package/dist/utilities/isPolymorphicRelationship.js +5 -0
- package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -1
- package/dist/utilities/pushDevSchema.js +5 -0
- package/dist/utilities/pushDevSchema.js.map +1 -1
- package/license.md +22 -0
- package/package.json +26 -10
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { uniqueIndex } from 'drizzle-orm/pg-core';
|
|
2
|
+
import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload';
|
|
3
|
+
import toSnakeCase from 'to-snake-case';
|
|
4
|
+
import { createTableName } from '../createTableName.js';
|
|
5
|
+
import { executeSchemaHooks } from '../utilities/executeSchemaHooks.js';
|
|
6
|
+
import { buildTable } from './schema/build.js';
|
|
7
|
+
export const init = async function init() {
|
|
8
|
+
await executeSchemaHooks({
|
|
9
|
+
type: 'beforeSchemaInit',
|
|
10
|
+
adapter: this
|
|
11
|
+
});
|
|
12
|
+
if (this.payload.config.localization) {
|
|
13
|
+
this.enums.enum__locales = this.pgSchema.enum('_locales', this.payload.config.localization.locales.map(({ code })=>code));
|
|
14
|
+
}
|
|
15
|
+
this.payload.config.collections.forEach((collection)=>{
|
|
16
|
+
createTableName({
|
|
17
|
+
adapter: this,
|
|
18
|
+
config: collection
|
|
19
|
+
});
|
|
20
|
+
if (collection.versions) {
|
|
21
|
+
createTableName({
|
|
22
|
+
adapter: this,
|
|
23
|
+
config: collection,
|
|
24
|
+
versions: true,
|
|
25
|
+
versionsCustomName: true
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
this.payload.config.collections.forEach((collection)=>{
|
|
30
|
+
const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
|
|
31
|
+
const baseExtraConfig = {};
|
|
32
|
+
if (collection.upload.filenameCompoundIndex) {
|
|
33
|
+
const indexName = `${tableName}_filename_compound_idx`;
|
|
34
|
+
baseExtraConfig.filename_compound_index = (cols)=>{
|
|
35
|
+
const colsConstraint = collection.upload.filenameCompoundIndex.map((f)=>{
|
|
36
|
+
return cols[f];
|
|
37
|
+
});
|
|
38
|
+
return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1));
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
buildTable({
|
|
42
|
+
adapter: this,
|
|
43
|
+
baseExtraConfig,
|
|
44
|
+
disableNotNull: !!collection?.versions?.drafts,
|
|
45
|
+
disableUnique: false,
|
|
46
|
+
fields: collection.fields,
|
|
47
|
+
tableName,
|
|
48
|
+
timestamps: collection.timestamps,
|
|
49
|
+
versions: false
|
|
50
|
+
});
|
|
51
|
+
if (collection.versions) {
|
|
52
|
+
const versionsTableName = this.tableNameMap.get(`_${toSnakeCase(collection.slug)}${this.versionsSuffix}`);
|
|
53
|
+
const versionFields = buildVersionCollectionFields(this.payload.config, collection);
|
|
54
|
+
buildTable({
|
|
55
|
+
adapter: this,
|
|
56
|
+
disableNotNull: !!collection.versions?.drafts,
|
|
57
|
+
disableUnique: true,
|
|
58
|
+
fields: versionFields,
|
|
59
|
+
tableName: versionsTableName,
|
|
60
|
+
timestamps: true,
|
|
61
|
+
versions: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
this.payload.config.globals.forEach((global)=>{
|
|
66
|
+
const tableName = createTableName({
|
|
67
|
+
adapter: this,
|
|
68
|
+
config: global
|
|
69
|
+
});
|
|
70
|
+
buildTable({
|
|
71
|
+
adapter: this,
|
|
72
|
+
disableNotNull: !!global?.versions?.drafts,
|
|
73
|
+
disableUnique: false,
|
|
74
|
+
fields: global.fields,
|
|
75
|
+
tableName,
|
|
76
|
+
timestamps: false,
|
|
77
|
+
versions: false
|
|
78
|
+
});
|
|
79
|
+
if (global.versions) {
|
|
80
|
+
const versionsTableName = createTableName({
|
|
81
|
+
adapter: this,
|
|
82
|
+
config: global,
|
|
83
|
+
versions: true,
|
|
84
|
+
versionsCustomName: true
|
|
85
|
+
});
|
|
86
|
+
const versionFields = buildVersionGlobalFields(this.payload.config, global);
|
|
87
|
+
buildTable({
|
|
88
|
+
adapter: this,
|
|
89
|
+
disableNotNull: !!global.versions?.drafts,
|
|
90
|
+
disableUnique: true,
|
|
91
|
+
fields: versionFields,
|
|
92
|
+
tableName: versionsTableName,
|
|
93
|
+
timestamps: true,
|
|
94
|
+
versions: true
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
await executeSchemaHooks({
|
|
99
|
+
type: 'afterSchemaInit',
|
|
100
|
+
adapter: this
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/init.ts"],"sourcesContent":["import type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport { uniqueIndex } from 'drizzle-orm/pg-core'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BaseExtraConfig, BasePostgresAdapter } from './types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { executeSchemaHooks } from '../utilities/executeSchemaHooks.js'\nimport { buildTable } from './schema/build.js'\n\nexport const init: Init = async function init(this: BasePostgresAdapter) {\n await executeSchemaHooks({ type: 'beforeSchemaInit', adapter: this })\n\n if (this.payload.config.localization) {\n this.enums.enum__locales = this.pgSchema.enum(\n '_locales',\n this.payload.config.localization.locales.map(({ code }) => code) as [string, ...string[]],\n )\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n createTableName({\n adapter: this,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter: this,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n\n const baseExtraConfig: BaseExtraConfig = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseExtraConfig.filename_compound_index = (cols) => {\n const colsConstraint = collection.upload.filenameCompoundIndex.map((f) => {\n return cols[f]\n })\n return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1))\n }\n }\n\n buildTable({\n adapter: this,\n baseExtraConfig,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.fields,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = this.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${this.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(this.payload.config, collection)\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n this.payload.config.globals.forEach((global) => {\n const tableName = createTableName({ adapter: this, config: global })\n\n buildTable({\n adapter: this,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.fields,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter: this,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const versionFields = buildVersionGlobalFields(this.payload.config, global)\n\n buildTable({\n adapter: this,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n await executeSchemaHooks({ type: 'afterSchemaInit', adapter: this })\n}\n"],"names":["uniqueIndex","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","executeSchemaHooks","buildTable","init","type","adapter","payload","config","localization","enums","enum__locales","pgSchema","enum","locales","map","code","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseExtraConfig","upload","filenameCompoundIndex","indexName","filename_compound_index","cols","colsConstraint","f","on","slice","disableNotNull","drafts","disableUnique","fields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/postgres/insert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,MAAM,EAAE,MAoBpB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const insert = async function insert({ db, onConflictDoUpdate, tableName, values }) {
|
|
2
|
+
const table = this.tables[tableName];
|
|
3
|
+
let result;
|
|
4
|
+
if (onConflictDoUpdate) {
|
|
5
|
+
result = await db.insert(table).values(values).onConflictDoUpdate(onConflictDoUpdate).returning();
|
|
6
|
+
} else {
|
|
7
|
+
result = await db.insert(table).values(values).returning();
|
|
8
|
+
}
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/insert.ts"],"sourcesContent":["import type { TransactionPg } from '../types.js'\nimport type { Insert } from './types.js'\n\nexport const insert: Insert = async function insert({\n db,\n onConflictDoUpdate,\n tableName,\n values,\n}): Promise<Record<string, unknown>[]> {\n const table = this.tables[tableName]\n let result\n\n if (onConflictDoUpdate) {\n result = await (db as TransactionPg)\n .insert(table)\n .values(values)\n .onConflictDoUpdate(onConflictDoUpdate)\n .returning()\n } else {\n result = await (db as TransactionPg).insert(table).values(values).returning()\n }\n\n return result\n}\n"],"names":["insert","db","onConflictDoUpdate","tableName","values","table","tables","result","returning"],"mappings":"AAGA,OAAO,MAAMA,SAAiB,eAAeA,OAAO,EAClDC,EAAE,EACFC,kBAAkB,EAClBC,SAAS,EACTC,MAAM,EACP;IACC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACH,UAAU;IACpC,IAAII;IAEJ,IAAIL,oBAAoB;QACtBK,SAAS,MAAM,AAACN,GACbD,MAAM,CAACK,OACPD,MAAM,CAACA,QACPF,kBAAkB,CAACA,oBACnBM,SAAS;IACd,OAAO;QACLD,SAAS,MAAM,AAACN,GAAqBD,MAAM,CAACK,OAAOD,MAAM,CAACA,QAAQI,SAAS;IAC7E;IAEA,OAAOD;AACT,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/postgres/requireDrizzleKit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpD,eAAO,MAAM,iBAAiB,EAAE,iBAAoD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/requireDrizzleKit.ts"],"sourcesContent":["import { createRequire } from 'module'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nconst require = createRequire(import.meta.url)\nexport const requireDrizzleKit: RequireDrizzleKit = () => require('drizzle-kit/api')\n"],"names":["createRequire","require","url","requireDrizzleKit"],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAQ;AAItC,MAAMC,UAAUD,cAAc,YAAYE,GAAG;AAC7C,OAAO,MAAMC,oBAAuC,IAAMF,QAAQ,mBAAkB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { PgColumnBuilder } from 'drizzle-orm/pg-core';
|
|
2
|
+
import type { Field } from 'payload';
|
|
3
|
+
import type { BaseExtraConfig, BasePostgresAdapter, RelationMap } from '../types.js';
|
|
4
|
+
type Args = {
|
|
5
|
+
adapter: BasePostgresAdapter;
|
|
6
|
+
baseColumns?: Record<string, PgColumnBuilder>;
|
|
7
|
+
/**
|
|
8
|
+
* After table is created, run these functions to add extra config to the table
|
|
9
|
+
* ie. indexes, multiple columns, etc
|
|
10
|
+
*/
|
|
11
|
+
baseExtraConfig?: BaseExtraConfig;
|
|
12
|
+
buildNumbers?: boolean;
|
|
13
|
+
buildRelationships?: boolean;
|
|
14
|
+
disableNotNull: boolean;
|
|
15
|
+
disableRelsTableUnique?: boolean;
|
|
16
|
+
disableUnique: boolean;
|
|
17
|
+
fields: Field[];
|
|
18
|
+
rootRelationships?: Set<string>;
|
|
19
|
+
rootRelationsToBuild?: RelationMap;
|
|
20
|
+
rootTableIDColType?: string;
|
|
21
|
+
rootTableName?: string;
|
|
22
|
+
rootUniqueRelationships?: Set<string>;
|
|
23
|
+
tableName: string;
|
|
24
|
+
timestamps?: boolean;
|
|
25
|
+
versions: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Tracks whether or not this table is built
|
|
28
|
+
* from the result of a localized array or block field at some point
|
|
29
|
+
*/
|
|
30
|
+
withinLocalizedArrayOrBlock?: boolean;
|
|
31
|
+
};
|
|
32
|
+
type Result = {
|
|
33
|
+
hasLocalizedManyNumberField: boolean;
|
|
34
|
+
hasLocalizedManyTextField: boolean;
|
|
35
|
+
hasLocalizedRelationshipField: boolean;
|
|
36
|
+
hasManyNumberField: 'index' | boolean;
|
|
37
|
+
hasManyTextField: 'index' | boolean;
|
|
38
|
+
relationsToBuild: RelationMap;
|
|
39
|
+
};
|
|
40
|
+
export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableRelsTableUnique, disableUnique, fields, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock, }: Args) => Result;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAA;AAepD,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EAInB,WAAW,EACZ,MAAM,aAAa,CAAA;AASpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,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;IACnC,gBAAgB,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,wSAiBpB,IAAI,KAAG,MA4aT,CAAA"}
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { relations } from 'drizzle-orm';
|
|
2
|
+
import { foreignKey, index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core';
|
|
3
|
+
import toSnakeCase from 'to-snake-case';
|
|
4
|
+
import { createTableName } from '../../createTableName.js';
|
|
5
|
+
import { buildIndexName } from '../../utilities/buildIndexName.js';
|
|
6
|
+
import { createIndex } from './createIndex.js';
|
|
7
|
+
import { parentIDColumnMap } from './parentIDColumnMap.js';
|
|
8
|
+
import { setColumnID } from './setColumnID.js';
|
|
9
|
+
import { traverseFields } from './traverseFields.js';
|
|
10
|
+
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableRelsTableUnique = false, disableUnique = false, fields, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
|
|
11
|
+
const isRoot = !incomingRootTableName;
|
|
12
|
+
const rootTableName = incomingRootTableName || tableName;
|
|
13
|
+
const columns = baseColumns;
|
|
14
|
+
const indexes = {};
|
|
15
|
+
const localesColumns = {};
|
|
16
|
+
const localesIndexes = {};
|
|
17
|
+
let localesTable;
|
|
18
|
+
let textsTable;
|
|
19
|
+
let numbersTable;
|
|
20
|
+
// Relationships to the base collection
|
|
21
|
+
const relationships = rootRelationships || new Set();
|
|
22
|
+
// Unique relationships to the base collection
|
|
23
|
+
const uniqueRelationships = rootUniqueRelationships || new Set();
|
|
24
|
+
let relationshipsTable;
|
|
25
|
+
// Drizzle relations
|
|
26
|
+
const relationsToBuild = new Map();
|
|
27
|
+
const idColType = setColumnID({
|
|
28
|
+
adapter,
|
|
29
|
+
columns,
|
|
30
|
+
fields
|
|
31
|
+
});
|
|
32
|
+
const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = traverseFields({
|
|
33
|
+
adapter,
|
|
34
|
+
columns,
|
|
35
|
+
disableNotNull,
|
|
36
|
+
disableRelsTableUnique,
|
|
37
|
+
disableUnique,
|
|
38
|
+
fields,
|
|
39
|
+
indexes,
|
|
40
|
+
localesColumns,
|
|
41
|
+
localesIndexes,
|
|
42
|
+
newTableName: tableName,
|
|
43
|
+
parentTableName: tableName,
|
|
44
|
+
relationships,
|
|
45
|
+
relationsToBuild,
|
|
46
|
+
rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
|
|
47
|
+
rootTableIDColType: rootTableIDColType || idColType,
|
|
48
|
+
rootTableName,
|
|
49
|
+
uniqueRelationships,
|
|
50
|
+
versions,
|
|
51
|
+
withinLocalizedArrayOrBlock
|
|
52
|
+
});
|
|
53
|
+
// split the relationsToBuild by localized and non-localized
|
|
54
|
+
const localizedRelations = new Map();
|
|
55
|
+
const nonLocalizedRelations = new Map();
|
|
56
|
+
relationsToBuild.forEach(({ type, localized, relationName, target }, key)=>{
|
|
57
|
+
const map = localized ? localizedRelations : nonLocalizedRelations;
|
|
58
|
+
map.set(key, {
|
|
59
|
+
type,
|
|
60
|
+
relationName,
|
|
61
|
+
target
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
if (timestamps) {
|
|
65
|
+
columns.createdAt = timestamp('created_at', {
|
|
66
|
+
mode: 'string',
|
|
67
|
+
precision: 3,
|
|
68
|
+
withTimezone: true
|
|
69
|
+
}).defaultNow().notNull();
|
|
70
|
+
columns.updatedAt = timestamp('updated_at', {
|
|
71
|
+
mode: 'string',
|
|
72
|
+
precision: 3,
|
|
73
|
+
withTimezone: true
|
|
74
|
+
}).defaultNow().notNull();
|
|
75
|
+
}
|
|
76
|
+
const table = adapter.pgSchema.table(tableName, columns, (cols)=>{
|
|
77
|
+
const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func])=>{
|
|
78
|
+
config[key] = func(cols);
|
|
79
|
+
return config;
|
|
80
|
+
}, {});
|
|
81
|
+
const result = Object.entries(indexes).reduce((acc, [colName, func])=>{
|
|
82
|
+
acc[colName] = func(cols);
|
|
83
|
+
return acc;
|
|
84
|
+
}, extraConfig);
|
|
85
|
+
return result;
|
|
86
|
+
});
|
|
87
|
+
adapter.tables[tableName] = table;
|
|
88
|
+
if (hasLocalizedField || localizedRelations.size) {
|
|
89
|
+
const localeTableName = `${tableName}${adapter.localesSuffix}`;
|
|
90
|
+
localesColumns.id = serial('id').primaryKey();
|
|
91
|
+
localesColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
|
92
|
+
localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull();
|
|
93
|
+
localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols)=>{
|
|
94
|
+
return Object.entries(localesIndexes).reduce((acc, [colName, func])=>{
|
|
95
|
+
acc[colName] = func(cols);
|
|
96
|
+
return acc;
|
|
97
|
+
}, {
|
|
98
|
+
_localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID),
|
|
99
|
+
_parentIdFk: foreignKey({
|
|
100
|
+
name: `${localeTableName}_parent_id_fk`,
|
|
101
|
+
columns: [
|
|
102
|
+
cols._parentID
|
|
103
|
+
],
|
|
104
|
+
foreignColumns: [
|
|
105
|
+
table.id
|
|
106
|
+
]
|
|
107
|
+
}).onDelete('cascade')
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
adapter.tables[localeTableName] = localesTable;
|
|
111
|
+
adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one })=>{
|
|
112
|
+
const result = {};
|
|
113
|
+
result._parentID = one(table, {
|
|
114
|
+
fields: [
|
|
115
|
+
localesTable._parentID
|
|
116
|
+
],
|
|
117
|
+
references: [
|
|
118
|
+
table.id
|
|
119
|
+
],
|
|
120
|
+
// name the relationship by what the many() relationName is
|
|
121
|
+
relationName: '_locales'
|
|
122
|
+
});
|
|
123
|
+
localizedRelations.forEach(({ type, target }, key)=>{
|
|
124
|
+
if (type === 'one') {
|
|
125
|
+
result[key] = one(adapter.tables[target], {
|
|
126
|
+
fields: [
|
|
127
|
+
localesTable[key]
|
|
128
|
+
],
|
|
129
|
+
references: [
|
|
130
|
+
adapter.tables[target].id
|
|
131
|
+
],
|
|
132
|
+
relationName: key
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
if (type === 'many') {
|
|
136
|
+
result[key] = many(adapter.tables[target], {
|
|
137
|
+
relationName: key
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return result;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (isRoot) {
|
|
145
|
+
if (hasManyTextField) {
|
|
146
|
+
const textsTableName = `${rootTableName}_texts`;
|
|
147
|
+
const columns = {
|
|
148
|
+
id: serial('id').primaryKey(),
|
|
149
|
+
order: integer('order').notNull(),
|
|
150
|
+
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
|
151
|
+
path: varchar('path').notNull(),
|
|
152
|
+
text: varchar('text')
|
|
153
|
+
};
|
|
154
|
+
if (hasLocalizedManyTextField) {
|
|
155
|
+
columns.locale = adapter.enums.enum__locales('locale');
|
|
156
|
+
}
|
|
157
|
+
textsTable = adapter.pgSchema.table(textsTableName, columns, (cols)=>{
|
|
158
|
+
const config = {
|
|
159
|
+
orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
|
160
|
+
parentFk: foreignKey({
|
|
161
|
+
name: `${textsTableName}_parent_fk`,
|
|
162
|
+
columns: [
|
|
163
|
+
cols.parent
|
|
164
|
+
],
|
|
165
|
+
foreignColumns: [
|
|
166
|
+
table.id
|
|
167
|
+
]
|
|
168
|
+
}).onDelete('cascade')
|
|
169
|
+
};
|
|
170
|
+
if (hasManyTextField === 'index') {
|
|
171
|
+
config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text);
|
|
172
|
+
}
|
|
173
|
+
if (hasLocalizedManyTextField) {
|
|
174
|
+
config.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
|
|
175
|
+
}
|
|
176
|
+
return config;
|
|
177
|
+
});
|
|
178
|
+
adapter.tables[textsTableName] = textsTable;
|
|
179
|
+
adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one })=>({
|
|
180
|
+
parent: one(table, {
|
|
181
|
+
fields: [
|
|
182
|
+
textsTable.parent
|
|
183
|
+
],
|
|
184
|
+
references: [
|
|
185
|
+
table.id
|
|
186
|
+
],
|
|
187
|
+
relationName: '_texts'
|
|
188
|
+
})
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
if (hasManyNumberField) {
|
|
192
|
+
const numbersTableName = `${rootTableName}_numbers`;
|
|
193
|
+
const columns = {
|
|
194
|
+
id: serial('id').primaryKey(),
|
|
195
|
+
number: numeric('number'),
|
|
196
|
+
order: integer('order').notNull(),
|
|
197
|
+
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
|
198
|
+
path: varchar('path').notNull()
|
|
199
|
+
};
|
|
200
|
+
if (hasLocalizedManyNumberField) {
|
|
201
|
+
columns.locale = adapter.enums.enum__locales('locale');
|
|
202
|
+
}
|
|
203
|
+
numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols)=>{
|
|
204
|
+
const config = {
|
|
205
|
+
orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
|
206
|
+
parentFk: foreignKey({
|
|
207
|
+
name: `${numbersTableName}_parent_fk`,
|
|
208
|
+
columns: [
|
|
209
|
+
cols.parent
|
|
210
|
+
],
|
|
211
|
+
foreignColumns: [
|
|
212
|
+
table.id
|
|
213
|
+
]
|
|
214
|
+
}).onDelete('cascade')
|
|
215
|
+
};
|
|
216
|
+
if (hasManyNumberField === 'index') {
|
|
217
|
+
config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number);
|
|
218
|
+
}
|
|
219
|
+
if (hasLocalizedManyNumberField) {
|
|
220
|
+
config.localeParent = index(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
|
|
221
|
+
}
|
|
222
|
+
return config;
|
|
223
|
+
});
|
|
224
|
+
adapter.tables[numbersTableName] = numbersTable;
|
|
225
|
+
adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one })=>({
|
|
226
|
+
parent: one(table, {
|
|
227
|
+
fields: [
|
|
228
|
+
numbersTable.parent
|
|
229
|
+
],
|
|
230
|
+
references: [
|
|
231
|
+
table.id
|
|
232
|
+
],
|
|
233
|
+
relationName: '_numbers'
|
|
234
|
+
})
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
if (relationships.size) {
|
|
238
|
+
const relationshipColumns = {
|
|
239
|
+
id: serial('id').primaryKey(),
|
|
240
|
+
order: integer('order'),
|
|
241
|
+
parent: parentIDColumnMap[idColType]('parent_id').notNull(),
|
|
242
|
+
path: varchar('path').notNull()
|
|
243
|
+
};
|
|
244
|
+
if (hasLocalizedRelationshipField) {
|
|
245
|
+
relationshipColumns.locale = adapter.enums.enum__locales('locale');
|
|
246
|
+
}
|
|
247
|
+
const relationExtraConfig = {};
|
|
248
|
+
const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
|
|
249
|
+
relationships.forEach((relationTo)=>{
|
|
250
|
+
const relationshipConfig = adapter.payload.collections[relationTo].config;
|
|
251
|
+
const formattedRelationTo = createTableName({
|
|
252
|
+
adapter,
|
|
253
|
+
config: relationshipConfig,
|
|
254
|
+
throwValidationError: true
|
|
255
|
+
});
|
|
256
|
+
let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
|
|
257
|
+
const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
|
|
258
|
+
if (relatedCollectionCustomIDType === 'number') {
|
|
259
|
+
colType = 'numeric';
|
|
260
|
+
}
|
|
261
|
+
if (relatedCollectionCustomIDType === 'text') {
|
|
262
|
+
colType = 'varchar';
|
|
263
|
+
}
|
|
264
|
+
const colName = `${relationTo}ID`;
|
|
265
|
+
relationshipColumns[colName] = parentIDColumnMap[colType](`${formattedRelationTo}_id`);
|
|
266
|
+
relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
|
|
267
|
+
name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
|
|
268
|
+
columns: [
|
|
269
|
+
cols[colName]
|
|
270
|
+
],
|
|
271
|
+
foreignColumns: [
|
|
272
|
+
adapter.tables[formattedRelationTo].id
|
|
273
|
+
]
|
|
274
|
+
}).onDelete('cascade');
|
|
275
|
+
const indexColumns = [
|
|
276
|
+
colName
|
|
277
|
+
];
|
|
278
|
+
const unique = !disableUnique && uniqueRelationships.has(relationTo);
|
|
279
|
+
if (unique) {
|
|
280
|
+
indexColumns.push('path');
|
|
281
|
+
}
|
|
282
|
+
if (hasLocalizedRelationshipField) {
|
|
283
|
+
indexColumns.push('locale');
|
|
284
|
+
}
|
|
285
|
+
const indexName = buildIndexName({
|
|
286
|
+
name: `${relationshipsTableName}_${formattedRelationTo}_id`,
|
|
287
|
+
adapter
|
|
288
|
+
});
|
|
289
|
+
relationExtraConfig[indexName] = createIndex({
|
|
290
|
+
name: indexColumns,
|
|
291
|
+
indexName,
|
|
292
|
+
unique
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
relationshipsTable = adapter.pgSchema.table(relationshipsTableName, relationshipColumns, (cols)=>{
|
|
296
|
+
const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
|
|
297
|
+
config[key] = func(cols);
|
|
298
|
+
return config;
|
|
299
|
+
}, {
|
|
300
|
+
order: index(`${relationshipsTableName}_order_idx`).on(cols.order),
|
|
301
|
+
parentFk: foreignKey({
|
|
302
|
+
name: `${relationshipsTableName}_parent_fk`,
|
|
303
|
+
columns: [
|
|
304
|
+
cols.parent
|
|
305
|
+
],
|
|
306
|
+
foreignColumns: [
|
|
307
|
+
table.id
|
|
308
|
+
]
|
|
309
|
+
}).onDelete('cascade'),
|
|
310
|
+
parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),
|
|
311
|
+
pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path)
|
|
312
|
+
});
|
|
313
|
+
if (hasLocalizedRelationshipField) {
|
|
314
|
+
result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale);
|
|
315
|
+
}
|
|
316
|
+
return result;
|
|
317
|
+
});
|
|
318
|
+
adapter.tables[relationshipsTableName] = relationshipsTable;
|
|
319
|
+
adapter.relations[`relations_${relationshipsTableName}`] = relations(relationshipsTable, ({ one })=>{
|
|
320
|
+
const result = {
|
|
321
|
+
parent: one(table, {
|
|
322
|
+
fields: [
|
|
323
|
+
relationshipsTable.parent
|
|
324
|
+
],
|
|
325
|
+
references: [
|
|
326
|
+
table.id
|
|
327
|
+
],
|
|
328
|
+
relationName: '_rels'
|
|
329
|
+
})
|
|
330
|
+
};
|
|
331
|
+
relationships.forEach((relationTo)=>{
|
|
332
|
+
const relatedTableName = createTableName({
|
|
333
|
+
adapter,
|
|
334
|
+
config: adapter.payload.collections[relationTo].config,
|
|
335
|
+
throwValidationError: true
|
|
336
|
+
});
|
|
337
|
+
const idColumnName = `${relationTo}ID`;
|
|
338
|
+
result[idColumnName] = one(adapter.tables[relatedTableName], {
|
|
339
|
+
fields: [
|
|
340
|
+
relationshipsTable[idColumnName]
|
|
341
|
+
],
|
|
342
|
+
references: [
|
|
343
|
+
adapter.tables[relatedTableName].id
|
|
344
|
+
],
|
|
345
|
+
relationName: relationTo
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
return result;
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
|
|
353
|
+
const result = {};
|
|
354
|
+
nonLocalizedRelations.forEach(({ type, relationName, target }, key)=>{
|
|
355
|
+
if (type === 'one') {
|
|
356
|
+
result[key] = one(adapter.tables[target], {
|
|
357
|
+
fields: [
|
|
358
|
+
table[key]
|
|
359
|
+
],
|
|
360
|
+
references: [
|
|
361
|
+
adapter.tables[target].id
|
|
362
|
+
],
|
|
363
|
+
relationName: key
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
if (type === 'many') {
|
|
367
|
+
result[key] = many(adapter.tables[target], {
|
|
368
|
+
relationName: relationName || key
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
if (hasLocalizedField) {
|
|
373
|
+
result._locales = many(localesTable, {
|
|
374
|
+
relationName: '_locales'
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
if (hasManyTextField) {
|
|
378
|
+
result._texts = many(textsTable, {
|
|
379
|
+
relationName: '_texts'
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
if (hasManyNumberField) {
|
|
383
|
+
result._numbers = many(numbersTable, {
|
|
384
|
+
relationName: '_numbers'
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
if (relationships.size && relationshipsTable) {
|
|
388
|
+
result._rels = many(relationshipsTable, {
|
|
389
|
+
relationName: '_rels'
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
return result;
|
|
393
|
+
});
|
|
394
|
+
return {
|
|
395
|
+
hasLocalizedManyNumberField,
|
|
396
|
+
hasLocalizedManyTextField,
|
|
397
|
+
hasLocalizedRelationshipField,
|
|
398
|
+
hasManyNumberField,
|
|
399
|
+
hasManyTextField,
|
|
400
|
+
relationsToBuild
|
|
401
|
+
};
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
//# sourceMappingURL=build.js.map
|