@payloadcms/drizzle 3.0.0-canary.d894ac7 → 3.0.0-canary.dc8b1fe
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 +2 -0
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +2 -0
- package/dist/exports/postgres.js.map +1 -1
- 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 +353 -63
- 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.map +1 -1
- package/dist/postgres/countDistinct.js +2 -3
- package/dist/postgres/countDistinct.js.map +1 -1
- 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.map +1 -1
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +3 -1
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
- package/dist/postgres/createMigration.d.ts.map +1 -1
- package/dist/postgres/createMigration.js +1 -0
- package/dist/postgres/createMigration.js.map +1 -1
- package/dist/postgres/defaultSnapshot.d.ts.map +1 -1
- package/dist/postgres/defaultSnapshot.js +4 -1
- package/dist/postgres/defaultSnapshot.js.map +1 -1
- package/dist/postgres/getMigrationTemplate.d.ts +1 -1
- package/dist/postgres/getMigrationTemplate.d.ts.map +1 -1
- package/dist/postgres/getMigrationTemplate.js +1 -1
- package/dist/postgres/getMigrationTemplate.js.map +1 -1
- package/dist/postgres/init.d.ts.map +1 -1
- package/dist/postgres/init.js +12 -3
- package/dist/postgres/init.js.map +1 -1
- package/dist/postgres/schema/build.d.ts +12 -2
- package/dist/postgres/schema/build.d.ts.map +1 -1
- package/dist/postgres/schema/build.js +45 -10
- package/dist/postgres/schema/build.js.map +1 -1
- package/dist/postgres/schema/createIndex.d.ts +2 -3
- package/dist/postgres/schema/createIndex.d.ts.map +1 -1
- package/dist/postgres/schema/createIndex.js +5 -3
- package/dist/postgres/schema/createIndex.js.map +1 -1
- 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/traverseFields.d.ts +9 -2
- package/dist/postgres/schema/traverseFields.d.ts.map +1 -1
- package/dist/postgres/schema/traverseFields.js +200 -72
- package/dist/postgres/schema/traverseFields.js.map +1 -1
- package/dist/postgres/schema/withDefault.d.ts.map +1 -1
- package/dist/postgres/schema/withDefault.js +6 -1
- package/dist/postgres/schema/withDefault.js.map +1 -1
- package/dist/postgres/types.d.ts +37 -7
- package/dist/postgres/types.d.ts.map +1 -1
- package/dist/postgres/types.js.map +1 -1
- 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 +134 -87
- 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 +79 -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 +170 -56
- 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 +3 -2
- 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/package.json +10 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import { count } from 'drizzle-orm'\n\nimport type { ChainedMethods, TransactionPg } from '../types.js'\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: (db as TransactionPg)\n .select({\n count: count(),\n })\n .from(this.tables[tableName])\n .where(where),\n })\n\n return Number(countResult[0].count)\n}\n"],"names":["count","chainMethods","countDistinct","db","joins","tableName","where","chainedMethods","forEach","condition","table","push","args","method","countResult","methods","query","select","from","tables","Number"],"mappings":"AAAA,SAASA,KAAK,QAAQ,cAAa;AAKnC,SAASC,YAAY,QAAQ,0BAAyB;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,MAAMC,iBAAiC,EAAE;IAEzCH,MAAMI,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACjCH,eAAeI,IAAI,CAAC;YAClBC,MAAM;gBAACF;gBAAOD;aAAU;YACxBI,QAAQ;QACV;IACF;IAEA,MAAMC,cAAc,MAAMb,aAAa;QACrCc,SAASR;QACTS,OAAO,AAACb,GACLc,MAAM,CAAC;YACNjB,OAAOA;QACT,GACCkB,IAAI,CAAC,IAAI,CAACC,MAAM,CAACd,UAAU,EAC3BC,KAAK,CAACA;IACX;IAEA,OAAOc,OAAON,WAAW,CAAC,EAAE,CAACd,KAAK;AACpC,EAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BasePostgresAdapter } from './types.js';
|
|
2
|
+
type Args = {
|
|
3
|
+
/**
|
|
4
|
+
* Name of a database, defaults to the current one
|
|
5
|
+
*/
|
|
6
|
+
name?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Schema to create in addition to 'public'. Defaults to adapter.schemaName if exists.
|
|
9
|
+
*/
|
|
10
|
+
schemaName?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const createDatabase: (this: BasePostgresAdapter, args?: Args) => Promise<boolean>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=createDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../src/postgres/createDatabase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAgBrD,KAAK,IAAI,GAAG;IACV;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,cAAc,SAAyB,mBAAmB,SAAQ,IAAI,qBAkFlF,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const setConnectionStringDatabase = ({ connectionString, database })=>{
|
|
2
|
+
const connectionURL = new URL(connectionString);
|
|
3
|
+
const newConnectionURL = new URL(connectionURL);
|
|
4
|
+
newConnectionURL.pathname = `/${database}`;
|
|
5
|
+
return newConnectionURL.toString();
|
|
6
|
+
};
|
|
7
|
+
export const createDatabase = async function(args = {}) {
|
|
8
|
+
// POSTGRES_URL - default Vercel env
|
|
9
|
+
const connectionString = this.poolOptions?.connectionString ?? process.env.POSTGRES_URL ?? process.env.DATABASE_URL;
|
|
10
|
+
let managementClientConfig = {};
|
|
11
|
+
let dbName = args.name;
|
|
12
|
+
const schemaName = this.schemaName || 'public';
|
|
13
|
+
if (connectionString) {
|
|
14
|
+
if (!dbName) {
|
|
15
|
+
dbName = new URL(connectionString).pathname.slice(1);
|
|
16
|
+
}
|
|
17
|
+
managementClientConfig.connectionString = setConnectionStringDatabase({
|
|
18
|
+
connectionString,
|
|
19
|
+
database: 'postgres'
|
|
20
|
+
});
|
|
21
|
+
} else {
|
|
22
|
+
if (!dbName) {
|
|
23
|
+
dbName = this.poolOptions.database;
|
|
24
|
+
}
|
|
25
|
+
managementClientConfig = {
|
|
26
|
+
...this.poolOptions,
|
|
27
|
+
database: 'postgres'
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// import pg only when createDatabase is used
|
|
31
|
+
const pg = await import('pg').then((mod)=>mod.default);
|
|
32
|
+
const managementClient = new pg.Client(managementClientConfig);
|
|
33
|
+
try {
|
|
34
|
+
await managementClient.connect();
|
|
35
|
+
await managementClient.query(`CREATE DATABASE "${dbName}"`);
|
|
36
|
+
this.payload.logger.info(`Created database "${dbName}"`);
|
|
37
|
+
if (schemaName !== 'public') {
|
|
38
|
+
let createdDatabaseConfig = {};
|
|
39
|
+
if (connectionString) {
|
|
40
|
+
createdDatabaseConfig.connectionString = setConnectionStringDatabase({
|
|
41
|
+
connectionString,
|
|
42
|
+
database: dbName
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
createdDatabaseConfig = {
|
|
46
|
+
...this.poolOptions,
|
|
47
|
+
database: dbName
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const createdDatabaseClient = new pg.Client(createdDatabaseConfig);
|
|
51
|
+
try {
|
|
52
|
+
await createdDatabaseClient.connect();
|
|
53
|
+
await createdDatabaseClient.query(`CREATE SCHEMA ${schemaName}`);
|
|
54
|
+
this.payload.logger.info(`Created schema "${dbName}.${schemaName}"`);
|
|
55
|
+
} catch (err) {
|
|
56
|
+
this.payload.logger.error({
|
|
57
|
+
err,
|
|
58
|
+
msg: `Error: failed to create schema "${dbName}.${schemaName}". Details: ${err.message}`
|
|
59
|
+
});
|
|
60
|
+
} finally{
|
|
61
|
+
await createdDatabaseClient.end();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
} catch (err) {
|
|
66
|
+
this.payload.logger.error({
|
|
67
|
+
err,
|
|
68
|
+
msg: `Error: failed to create database ${dbName}. Details: ${err.message}`
|
|
69
|
+
});
|
|
70
|
+
return false;
|
|
71
|
+
} finally{
|
|
72
|
+
await managementClient.end();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=createDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/createDatabase.ts"],"sourcesContent":["import type { ClientConfig } from 'pg'\n\nimport type { BasePostgresAdapter } from './types.js'\n\nconst setConnectionStringDatabase = ({\n connectionString,\n database,\n}: {\n connectionString: string\n database: string\n}): string => {\n const connectionURL = new URL(connectionString)\n const newConnectionURL = new URL(connectionURL)\n newConnectionURL.pathname = `/${database}`\n\n return newConnectionURL.toString()\n}\n\ntype Args = {\n /**\n * Name of a database, defaults to the current one\n */\n name?: string\n /**\n * Schema to create in addition to 'public'. Defaults to adapter.schemaName if exists.\n */\n schemaName?: string\n}\nexport const createDatabase = async function (this: BasePostgresAdapter, args: Args = {}) {\n // POSTGRES_URL - default Vercel env\n const connectionString =\n this.poolOptions?.connectionString ?? process.env.POSTGRES_URL ?? process.env.DATABASE_URL\n let managementClientConfig: ClientConfig = {}\n let dbName = args.name\n const schemaName = this.schemaName || 'public'\n\n if (connectionString) {\n if (!dbName) {\n dbName = new URL(connectionString).pathname.slice(1)\n }\n\n managementClientConfig.connectionString = setConnectionStringDatabase({\n connectionString,\n database: 'postgres',\n })\n } else {\n if (!dbName) {\n dbName = this.poolOptions.database\n }\n\n managementClientConfig = {\n ...this.poolOptions,\n database: 'postgres',\n }\n }\n\n // import pg only when createDatabase is used\n const pg = await import('pg').then((mod) => mod.default)\n\n const managementClient = new pg.Client(managementClientConfig)\n\n try {\n await managementClient.connect()\n await managementClient.query(`CREATE DATABASE \"${dbName}\"`)\n\n this.payload.logger.info(`Created database \"${dbName}\"`)\n\n if (schemaName !== 'public') {\n let createdDatabaseConfig: ClientConfig = {}\n\n if (connectionString) {\n createdDatabaseConfig.connectionString = setConnectionStringDatabase({\n connectionString,\n database: dbName,\n })\n } else {\n createdDatabaseConfig = {\n ...this.poolOptions,\n database: dbName,\n }\n }\n\n const createdDatabaseClient = new pg.Client(createdDatabaseConfig)\n\n try {\n await createdDatabaseClient.connect()\n\n await createdDatabaseClient.query(`CREATE SCHEMA ${schemaName}`)\n this.payload.logger.info(`Created schema \"${dbName}.${schemaName}\"`)\n } catch (err) {\n this.payload.logger.error({\n err,\n msg: `Error: failed to create schema \"${dbName}.${schemaName}\". Details: ${err.message}`,\n })\n } finally {\n await createdDatabaseClient.end()\n }\n }\n\n return true\n } catch (err) {\n this.payload.logger.error({\n err,\n msg: `Error: failed to create database ${dbName}. Details: ${err.message}`,\n })\n\n return false\n } finally {\n await managementClient.end()\n }\n}\n"],"names":["setConnectionStringDatabase","connectionString","database","connectionURL","URL","newConnectionURL","pathname","toString","createDatabase","args","poolOptions","process","env","POSTGRES_URL","DATABASE_URL","managementClientConfig","dbName","name","schemaName","slice","pg","then","mod","default","managementClient","Client","connect","query","payload","logger","info","createdDatabaseConfig","createdDatabaseClient","err","error","msg","message","end"],"mappings":"AAIA,MAAMA,8BAA8B,CAAC,EACnCC,gBAAgB,EAChBC,QAAQ,EAIT;IACC,MAAMC,gBAAgB,IAAIC,IAAIH;IAC9B,MAAMI,mBAAmB,IAAID,IAAID;IACjCE,iBAAiBC,QAAQ,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC;IAE1C,OAAOG,iBAAiBE,QAAQ;AAClC;AAYA,OAAO,MAAMC,iBAAiB,eAA2CC,OAAa,CAAC,CAAC;IACtF,oCAAoC;IACpC,MAAMR,mBACJ,IAAI,CAACS,WAAW,EAAET,oBAAoBU,QAAQC,GAAG,CAACC,YAAY,IAAIF,QAAQC,GAAG,CAACE,YAAY;IAC5F,IAAIC,yBAAuC,CAAC;IAC5C,IAAIC,SAASP,KAAKQ,IAAI;IACtB,MAAMC,aAAa,IAAI,CAACA,UAAU,IAAI;IAEtC,IAAIjB,kBAAkB;QACpB,IAAI,CAACe,QAAQ;YACXA,SAAS,IAAIZ,IAAIH,kBAAkBK,QAAQ,CAACa,KAAK,CAAC;QACpD;QAEAJ,uBAAuBd,gBAAgB,GAAGD,4BAA4B;YACpEC;YACAC,UAAU;QACZ;IACF,OAAO;QACL,IAAI,CAACc,QAAQ;YACXA,SAAS,IAAI,CAACN,WAAW,CAACR,QAAQ;QACpC;QAEAa,yBAAyB;YACvB,GAAG,IAAI,CAACL,WAAW;YACnBR,UAAU;QACZ;IACF;IAEA,6CAA6C;IAC7C,MAAMkB,KAAK,MAAM,MAAM,CAAC,MAAMC,IAAI,CAAC,CAACC,MAAQA,IAAIC,OAAO;IAEvD,MAAMC,mBAAmB,IAAIJ,GAAGK,MAAM,CAACV;IAEvC,IAAI;QACF,MAAMS,iBAAiBE,OAAO;QAC9B,MAAMF,iBAAiBG,KAAK,CAAC,CAAC,iBAAiB,EAAEX,OAAO,CAAC,CAAC;QAE1D,IAAI,CAACY,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,kBAAkB,EAAEd,OAAO,CAAC,CAAC;QAEvD,IAAIE,eAAe,UAAU;YAC3B,IAAIa,wBAAsC,CAAC;YAE3C,IAAI9B,kBAAkB;gBACpB8B,sBAAsB9B,gBAAgB,GAAGD,4BAA4B;oBACnEC;oBACAC,UAAUc;gBACZ;YACF,OAAO;gBACLe,wBAAwB;oBACtB,GAAG,IAAI,CAACrB,WAAW;oBACnBR,UAAUc;gBACZ;YACF;YAEA,MAAMgB,wBAAwB,IAAIZ,GAAGK,MAAM,CAACM;YAE5C,IAAI;gBACF,MAAMC,sBAAsBN,OAAO;gBAEnC,MAAMM,sBAAsBL,KAAK,CAAC,CAAC,cAAc,EAAET,WAAW,CAAC;gBAC/D,IAAI,CAACU,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,gBAAgB,EAAEd,OAAO,CAAC,EAAEE,WAAW,CAAC,CAAC;YACrE,EAAE,OAAOe,KAAK;gBACZ,IAAI,CAACL,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC;oBACxBD;oBACAE,KAAK,CAAC,gCAAgC,EAAEnB,OAAO,CAAC,EAAEE,WAAW,YAAY,EAAEe,IAAIG,OAAO,CAAC,CAAC;gBAC1F;YACF,SAAU;gBACR,MAAMJ,sBAAsBK,GAAG;YACjC;QACF;QAEA,OAAO;IACT,EAAE,OAAOJ,KAAK;QACZ,IAAI,CAACL,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC;YACxBD;YACAE,KAAK,CAAC,iCAAiC,EAAEnB,OAAO,WAAW,EAAEiB,IAAIG,OAAO,CAAC,CAAC;QAC5E;QAEA,OAAO;IACT,SAAU;QACR,MAAMZ,iBAAiBa,GAAG;IAC5B;AACF,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createExtensions.d.ts","sourceRoot":"","sources":["../../src/postgres/createExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,eAAO,MAAM,gBAAgB,SAAyB,mBAAmB,KAAG,OAAO,CAAC,IAAI,CAUvF,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const createExtensions = async function() {
|
|
2
|
+
for(const extension in this.extensions){
|
|
3
|
+
if (this.extensions[extension]) {
|
|
4
|
+
try {
|
|
5
|
+
await this.drizzle.execute(`CREATE EXTENSION IF NOT EXISTS "${extension}"`);
|
|
6
|
+
} catch (err) {
|
|
7
|
+
this.payload.logger.error({
|
|
8
|
+
err,
|
|
9
|
+
msg: `Failed to create extension ${extension}`
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=createExtensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/createExtensions.ts"],"sourcesContent":["import type { BasePostgresAdapter } from './types.js'\n\nexport const createExtensions = async function (this: BasePostgresAdapter): Promise<void> {\n for (const extension in this.extensions) {\n if (this.extensions[extension]) {\n try {\n await this.drizzle.execute(`CREATE EXTENSION IF NOT EXISTS \"${extension}\"`)\n } catch (err) {\n this.payload.logger.error({ err, msg: `Failed to create extension ${extension}` })\n }\n }\n }\n}\n"],"names":["createExtensions","extension","extensions","drizzle","execute","err","payload","logger","error","msg"],"mappings":"AAEA,OAAO,MAAMA,mBAAmB;IAC9B,IAAK,MAAMC,aAAa,IAAI,CAACC,UAAU,CAAE;QACvC,IAAI,IAAI,CAACA,UAAU,CAACD,UAAU,EAAE;YAC9B,IAAI;gBACF,MAAM,IAAI,CAACE,OAAO,CAACC,OAAO,CAAC,CAAC,gCAAgC,EAAEH,UAAU,CAAC,CAAC;YAC5E,EAAE,OAAOI,KAAK;gBACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;oBAAEH;oBAAKI,KAAK,CAAC,2BAA2B,EAAER,UAAU,CAAC;gBAAC;YAClF;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertPathToJSONTraversal.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,qBAAsB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"convertPathToJSONTraversal.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,qBAAsB,MAAM,EAAE,WAYpE,CAAA"}
|
|
@@ -6,7 +6,9 @@ export const convertPathToJSONTraversal = (incomingSegments)=>{
|
|
|
6
6
|
segments.shift();
|
|
7
7
|
return segments.reduce((res, segment, i)=>{
|
|
8
8
|
const formattedSegment = formatJSONPathSegment(segment);
|
|
9
|
-
if (i + 1 === segments.length)
|
|
9
|
+
if (i + 1 === segments.length) {
|
|
10
|
+
return `${res}->>${formattedSegment}`;
|
|
11
|
+
}
|
|
10
12
|
return `${res}->${formattedSegment}`;
|
|
11
13
|
}, '');
|
|
12
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"sourcesContent":["import { formatJSONPathSegment } from './formatJSONPathSegment.js'\n\nexport const convertPathToJSONTraversal = (incomingSegments: string[]) => {\n const segments = [...incomingSegments]\n segments.shift()\n\n return segments.reduce((res, segment, i) => {\n const formattedSegment = formatJSONPathSegment(segment)\n\n if (i + 1 === segments.length) return `${res}->>${formattedSegment}`\n return `${res}->${formattedSegment}`\n }, '')\n}\n"],"names":["formatJSONPathSegment","convertPathToJSONTraversal","incomingSegments","segments","shift","reduce","res","segment","i","formattedSegment","length"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,6BAA4B;AAElE,OAAO,MAAMC,6BAA6B,CAACC;IACzC,MAAMC,WAAW;WAAID;KAAiB;IACtCC,SAASC,KAAK;IAEd,OAAOD,SAASE,MAAM,CAAC,CAACC,KAAKC,SAASC;QACpC,MAAMC,mBAAmBT,sBAAsBO;QAE/C,IAAIC,IAAI,MAAML,SAASO,MAAM,EAAE,OAAO,CAAC,EAAEJ,IAAI,GAAG,EAAEG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"sourcesContent":["import { formatJSONPathSegment } from './formatJSONPathSegment.js'\n\nexport const convertPathToJSONTraversal = (incomingSegments: string[]) => {\n const segments = [...incomingSegments]\n segments.shift()\n\n return segments.reduce((res, segment, i) => {\n const formattedSegment = formatJSONPathSegment(segment)\n\n if (i + 1 === segments.length) {\n return `${res}->>${formattedSegment}`\n }\n return `${res}->${formattedSegment}`\n }, '')\n}\n"],"names":["formatJSONPathSegment","convertPathToJSONTraversal","incomingSegments","segments","shift","reduce","res","segment","i","formattedSegment","length"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,6BAA4B;AAElE,OAAO,MAAMC,6BAA6B,CAACC;IACzC,MAAMC,WAAW;WAAID;KAAiB;IACtCC,SAASC,KAAK;IAEd,OAAOD,SAASE,MAAM,CAAC,CAACC,KAAKC,SAASC;QACpC,MAAMC,mBAAmBT,sBAAsBO;QAE/C,IAAIC,IAAI,MAAML,SAASO,MAAM,EAAE;YAC7B,OAAO,CAAC,EAAEJ,IAAI,GAAG,EAAEG,iBAAiB,CAAC;QACvC;QACA,OAAO,CAAC,EAAEH,IAAI,EAAE,EAAEG,iBAAiB,CAAC;IACtC,GAAG;AACL,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../../src/postgres/createMigration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../../src/postgres/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAgB9C,eAAO,MAAM,eAAe,EAAE,eAyG7B,CAAA"}
|
|
@@ -78,6 +78,7 @@ export const createMigration = async function createMigration({ file, forceAccep
|
|
|
78
78
|
fs.writeFileSync(`${filePath}.ts`, getMigrationTemplate({
|
|
79
79
|
downSQL: downSQL || ` // Migration code`,
|
|
80
80
|
imports,
|
|
81
|
+
packageName: payload.db.packageName,
|
|
81
82
|
upSQL: upSQL || ` // Migration code`
|
|
82
83
|
}));
|
|
83
84
|
writeMigrationIndex({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/createMigration.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/createMigration.ts"],"sourcesContent":["import type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\nimport { fileURLToPath } from 'url'\n\nimport type { BasePostgresAdapter } from './types.js'\n\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nconst require = createRequire(import.meta.url)\n\nexport const createMigration: CreateMigration = async function createMigration(\n this: BasePostgresAdapter,\n { file, forceAcceptWarning, migrationName, payload },\n) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const { generateDrizzleJson, generateMigration, upPgSnapshot } = require('drizzle-kit/api')\n const drizzleJsonAfter = generateDrizzleJson(this.schema)\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n ;({ downSQL, imports, upSQL } = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n }))\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n let drizzleJsonBefore = defaultDrizzleSnapshot\n\n if (this.schemaName) {\n drizzleJsonBefore.schemas = {\n [this.schemaName]: this.schemaName,\n }\n }\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'))\n\n if (drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upPgSnapshot(drizzleJsonBefore)\n }\n }\n\n const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore)\n const sqlExecute = 'await payload.db.drizzle.execute(sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = `${sqlExecute}\\n ${sqlStatementsUp?.join('\\n')}\\`)`\n }\n if (sqlStatementsDown?.length) {\n downSQL = `${sqlExecute}\\n ${sqlStatementsDown?.join('\\n')}\\`)`\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n const { confirm: shouldCreateBlankMigration } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!shouldCreateBlankMigration) {\n process.exit(0)\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n // write migration\n fs.writeFileSync(\n `${filePath}.ts`,\n getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n packageName: payload.db.packageName,\n upSQL: upSQL || ` // Migration code`,\n }),\n )\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}.ts` })\n}\n"],"names":["fs","createRequire","path","getPredefinedMigration","writeMigrationIndex","prompts","fileURLToPath","defaultDrizzleSnapshot","getMigrationTemplate","require","url","createMigration","file","forceAcceptWarning","migrationName","payload","filename","dirname","dir","db","migrationDir","existsSync","mkdirSync","generateDrizzleJson","generateMigration","upPgSnapshot","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","timestamp","name","slice","join","fileName","filePath","drizzleJsonBefore","schemaName","schemas","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","version","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","confirm","shouldCreateBlankMigration","type","initial","message","onCancel","process","exit","writeFileSync","stringify","packageName","migrationsDir","logger","info","msg"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../../src/postgres/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../../src/postgres/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,eAAO,MAAM,sBAAsB,EAAE,mBAiBpC,CAAA"}
|
|
@@ -7,11 +7,14 @@ export const defaultDrizzleSnapshot = {
|
|
|
7
7
|
},
|
|
8
8
|
dialect: 'postgresql',
|
|
9
9
|
enums: {},
|
|
10
|
+
policies: {},
|
|
10
11
|
prevId: '00000000-0000-0000-0000-00000000000',
|
|
12
|
+
roles: {},
|
|
11
13
|
schemas: {},
|
|
12
14
|
sequences: {},
|
|
13
15
|
tables: {},
|
|
14
|
-
version: '7'
|
|
16
|
+
version: '7',
|
|
17
|
+
views: {}
|
|
15
18
|
};
|
|
16
19
|
|
|
17
20
|
//# sourceMappingURL=defaultSnapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/defaultSnapshot.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\n\nexport const defaultDrizzleSnapshot: DrizzleSnapshotJSON = {\n id: '00000000-0000-0000-0000-000000000000',\n _meta: {\n columns: {},\n schemas: {},\n tables: {},\n },\n dialect: 'postgresql',\n enums: {},\n prevId: '00000000-0000-0000-0000-00000000000',\n schemas: {},\n sequences: {},\n tables: {},\n version: '7',\n}\n"],"names":["defaultDrizzleSnapshot","id","_meta","columns","schemas","tables","dialect","enums","prevId","sequences","version"],"mappings":"AAEA,OAAO,MAAMA,yBAA8C;IACzDC,IAAI;IACJC,OAAO;QACLC,SAAS,CAAC;QACVC,SAAS,CAAC;QACVC,QAAQ,CAAC;IACX;IACAC,SAAS;IACTC,OAAO,CAAC;IACRC,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/defaultSnapshot.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\n\nexport const defaultDrizzleSnapshot: DrizzleSnapshotJSON = {\n id: '00000000-0000-0000-0000-000000000000',\n _meta: {\n columns: {},\n schemas: {},\n tables: {},\n },\n dialect: 'postgresql',\n enums: {},\n policies: {},\n prevId: '00000000-0000-0000-0000-00000000000',\n roles: {},\n schemas: {},\n sequences: {},\n tables: {},\n version: '7',\n views: {},\n}\n"],"names":["defaultDrizzleSnapshot","id","_meta","columns","schemas","tables","dialect","enums","policies","prevId","roles","sequences","version","views"],"mappings":"AAEA,OAAO,MAAMA,yBAA8C;IACzDC,IAAI;IACJC,OAAO;QACLC,SAAS,CAAC;QACVC,SAAS,CAAC;QACVC,QAAQ,CAAC;IACX;IACAC,SAAS;IACTC,OAAO,CAAC;IACRC,UAAU,CAAC;IACXC,QAAQ;IACRC,OAAO,CAAC;IACRN,SAAS,CAAC;IACVO,WAAW,CAAC;IACZN,QAAQ,CAAC;IACTO,SAAS;IACTC,OAAO,CAAC;AACV,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { MigrationTemplateArgs } from 'payload';
|
|
2
2
|
export declare const indent: (text: string) => string;
|
|
3
|
-
export declare const getMigrationTemplate: ({ downSQL, imports, upSQL, }: MigrationTemplateArgs) => string;
|
|
3
|
+
export declare const getMigrationTemplate: ({ downSQL, imports, packageName, upSQL, }: MigrationTemplateArgs) => string;
|
|
4
4
|
//# sourceMappingURL=getMigrationTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMigrationTemplate.d.ts","sourceRoot":"","sources":["../../src/postgres/getMigrationTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,eAAO,MAAM,MAAM,SAAU,MAAM,WAIpB,CAAA;AAEf,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"getMigrationTemplate.d.ts","sourceRoot":"","sources":["../../src/postgres/getMigrationTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,eAAO,MAAM,MAAM,SAAU,MAAM,WAIpB,CAAA;AAEf,eAAO,MAAM,oBAAoB,8CAK9B,qBAAqB,KAAG,MAS1B,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const indent = (text)=>text.split('\n').map((line)=>` ${line}`).join('\n');
|
|
2
|
-
export const getMigrationTemplate = ({ downSQL, imports, upSQL })=>`import { MigrateUpArgs, MigrateDownArgs, sql } from '
|
|
2
|
+
export const getMigrationTemplate = ({ downSQL, imports, packageName, upSQL })=>`import { MigrateUpArgs, MigrateDownArgs, sql } from '${packageName}'
|
|
3
3
|
${imports ? `${imports}\n` : ''}
|
|
4
4
|
export async function up({ payload, req }: MigrateUpArgs): Promise<void> {
|
|
5
5
|
${indent(upSQL)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/getMigrationTemplate.ts"],"sourcesContent":["import type { MigrationTemplateArgs } from 'payload'\n\nexport const indent = (text: string) =>\n text\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n')\n\nexport const getMigrationTemplate = ({\n downSQL,\n imports,\n upSQL,\n}: MigrationTemplateArgs): string => `import { MigrateUpArgs, MigrateDownArgs, sql } from '
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/getMigrationTemplate.ts"],"sourcesContent":["import type { MigrationTemplateArgs } from 'payload'\n\nexport const indent = (text: string) =>\n text\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n')\n\nexport const getMigrationTemplate = ({\n downSQL,\n imports,\n packageName,\n upSQL,\n}: MigrationTemplateArgs): string => `import { MigrateUpArgs, MigrateDownArgs, sql } from '${packageName}'\n${imports ? `${imports}\\n` : ''}\nexport async function up({ payload, req }: MigrateUpArgs): Promise<void> {\n${indent(upSQL)}\n}\n\nexport async function down({ payload, req }: MigrateDownArgs): Promise<void> {\n${indent(downSQL)}\n}\n`\n"],"names":["indent","text","split","map","line","join","getMigrationTemplate","downSQL","imports","packageName","upSQL"],"mappings":"AAEA,OAAO,MAAMA,SAAS,CAACC,OACrBA,KACGC,KAAK,CAAC,MACNC,GAAG,CAAC,CAACC,OAAS,CAAC,EAAE,EAAEA,KAAK,CAAC,EACzBC,IAAI,CAAC,MAAK;AAEf,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,OAAO,EACPC,OAAO,EACPC,WAAW,EACXC,KAAK,EACiB,GAAa,CAAC,qDAAqD,EAAED,YAAY;AACzG,EAAED,UAAU,CAAC,EAAEA,QAAQ,EAAE,CAAC,GAAG,GAAG;;AAEhC,EAAER,OAAOU,OAAO;;;;AAIhB,EAAEV,OAAOO,SAAS;;AAElB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/postgres/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/postgres/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAY9D,eAAO,MAAM,IAAI,EAAE,IAyGlB,CAAA"}
|
package/dist/postgres/init.js
CHANGED
|
@@ -2,8 +2,13 @@ import { uniqueIndex } from 'drizzle-orm/pg-core';
|
|
|
2
2
|
import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
4
|
import { createTableName } from '../createTableName.js';
|
|
5
|
+
import { executeSchemaHooks } from '../utilities/executeSchemaHooks.js';
|
|
5
6
|
import { buildTable } from './schema/build.js';
|
|
6
|
-
export const init = function init() {
|
|
7
|
+
export const init = async function init() {
|
|
8
|
+
await executeSchemaHooks({
|
|
9
|
+
type: 'beforeSchemaInit',
|
|
10
|
+
adapter: this
|
|
11
|
+
});
|
|
7
12
|
if (this.payload.config.localization) {
|
|
8
13
|
this.enums.enum__locales = this.pgSchema.enum('_locales', this.payload.config.localization.locales.map(({ code })=>code));
|
|
9
14
|
}
|
|
@@ -45,7 +50,7 @@ export const init = function init() {
|
|
|
45
50
|
});
|
|
46
51
|
if (collection.versions) {
|
|
47
52
|
const versionsTableName = this.tableNameMap.get(`_${toSnakeCase(collection.slug)}${this.versionsSuffix}`);
|
|
48
|
-
const versionFields = buildVersionCollectionFields(collection);
|
|
53
|
+
const versionFields = buildVersionCollectionFields(this.payload.config, collection);
|
|
49
54
|
buildTable({
|
|
50
55
|
adapter: this,
|
|
51
56
|
disableNotNull: !!collection.versions?.drafts,
|
|
@@ -78,7 +83,7 @@ export const init = function init() {
|
|
|
78
83
|
versions: true,
|
|
79
84
|
versionsCustomName: true
|
|
80
85
|
});
|
|
81
|
-
const versionFields = buildVersionGlobalFields(global);
|
|
86
|
+
const versionFields = buildVersionGlobalFields(this.payload.config, global);
|
|
82
87
|
buildTable({
|
|
83
88
|
adapter: this,
|
|
84
89
|
disableNotNull: !!global.versions?.drafts,
|
|
@@ -90,6 +95,10 @@ export const init = function init() {
|
|
|
90
95
|
});
|
|
91
96
|
}
|
|
92
97
|
});
|
|
98
|
+
await executeSchemaHooks({
|
|
99
|
+
type: 'afterSchemaInit',
|
|
100
|
+
adapter: this
|
|
101
|
+
});
|
|
93
102
|
};
|
|
94
103
|
|
|
95
104
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +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 { buildTable } from './schema/build.js'\n\nexport const init: Init = function init(this: BasePostgresAdapter) {\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(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(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"],"names":["uniqueIndex","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","buildTable","init","payload","config","localization","enums","enum__locales","pgSchema","enum","locales","map","code","collections","forEach","collection","
|
|
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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"}
|
|
@@ -12,21 +12,31 @@ type Args = {
|
|
|
12
12
|
buildNumbers?: boolean;
|
|
13
13
|
buildRelationships?: boolean;
|
|
14
14
|
disableNotNull: boolean;
|
|
15
|
+
disableRelsTableUnique?: boolean;
|
|
15
16
|
disableUnique: boolean;
|
|
16
17
|
fields: Field[];
|
|
17
|
-
rootRelationsToBuild?: RelationMap;
|
|
18
18
|
rootRelationships?: Set<string>;
|
|
19
|
+
rootRelationsToBuild?: RelationMap;
|
|
19
20
|
rootTableIDColType?: string;
|
|
20
21
|
rootTableName?: string;
|
|
22
|
+
rootUniqueRelationships?: Set<string>;
|
|
21
23
|
tableName: string;
|
|
22
24
|
timestamps?: boolean;
|
|
23
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;
|
|
24
31
|
};
|
|
25
32
|
type Result = {
|
|
33
|
+
hasLocalizedManyNumberField: boolean;
|
|
34
|
+
hasLocalizedManyTextField: boolean;
|
|
35
|
+
hasLocalizedRelationshipField: boolean;
|
|
26
36
|
hasManyNumberField: 'index' | boolean;
|
|
27
37
|
hasManyTextField: 'index' | boolean;
|
|
28
38
|
relationsToBuild: RelationMap;
|
|
29
39
|
};
|
|
30
|
-
export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableUnique, fields,
|
|
40
|
+
export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableRelsTableUnique, disableUnique, fields, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock, }: Args) => Result;
|
|
31
41
|
export {};
|
|
32
42
|
//# sourceMappingURL=build.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -2,10 +2,12 @@ import { relations } from 'drizzle-orm';
|
|
|
2
2
|
import { foreignKey, index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
4
|
import { createTableName } from '../../createTableName.js';
|
|
5
|
+
import { buildIndexName } from '../../utilities/buildIndexName.js';
|
|
6
|
+
import { createIndex } from './createIndex.js';
|
|
5
7
|
import { parentIDColumnMap } from './parentIDColumnMap.js';
|
|
6
8
|
import { setColumnID } from './setColumnID.js';
|
|
7
9
|
import { traverseFields } from './traverseFields.js';
|
|
8
|
-
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableUnique = false, fields,
|
|
10
|
+
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableRelsTableUnique = false, disableUnique = false, fields, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
|
|
9
11
|
const isRoot = !incomingRootTableName;
|
|
10
12
|
const rootTableName = incomingRootTableName || tableName;
|
|
11
13
|
const columns = baseColumns;
|
|
@@ -17,6 +19,8 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
17
19
|
let numbersTable;
|
|
18
20
|
// Relationships to the base collection
|
|
19
21
|
const relationships = rootRelationships || new Set();
|
|
22
|
+
// Unique relationships to the base collection
|
|
23
|
+
const uniqueRelationships = rootUniqueRelationships || new Set();
|
|
20
24
|
let relationshipsTable;
|
|
21
25
|
// Drizzle relations
|
|
22
26
|
const relationsToBuild = new Map();
|
|
@@ -29,6 +33,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
29
33
|
adapter,
|
|
30
34
|
columns,
|
|
31
35
|
disableNotNull,
|
|
36
|
+
disableRelsTableUnique,
|
|
32
37
|
disableUnique,
|
|
33
38
|
fields,
|
|
34
39
|
indexes,
|
|
@@ -36,20 +41,23 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
36
41
|
localesIndexes,
|
|
37
42
|
newTableName: tableName,
|
|
38
43
|
parentTableName: tableName,
|
|
39
|
-
relationsToBuild,
|
|
40
44
|
relationships,
|
|
45
|
+
relationsToBuild,
|
|
41
46
|
rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
|
|
42
47
|
rootTableIDColType: rootTableIDColType || idColType,
|
|
43
48
|
rootTableName,
|
|
44
|
-
|
|
49
|
+
uniqueRelationships,
|
|
50
|
+
versions,
|
|
51
|
+
withinLocalizedArrayOrBlock
|
|
45
52
|
});
|
|
46
53
|
// split the relationsToBuild by localized and non-localized
|
|
47
54
|
const localizedRelations = new Map();
|
|
48
55
|
const nonLocalizedRelations = new Map();
|
|
49
|
-
relationsToBuild.forEach(({ type, localized, target }, key)=>{
|
|
56
|
+
relationsToBuild.forEach(({ type, localized, relationName, target }, key)=>{
|
|
50
57
|
const map = localized ? localizedRelations : nonLocalizedRelations;
|
|
51
58
|
map.set(key, {
|
|
52
59
|
type,
|
|
60
|
+
relationName,
|
|
53
61
|
target
|
|
54
62
|
});
|
|
55
63
|
});
|
|
@@ -247,18 +255,42 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
247
255
|
});
|
|
248
256
|
let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
|
|
249
257
|
const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
|
|
250
|
-
if (relatedCollectionCustomIDType === 'number')
|
|
251
|
-
|
|
252
|
-
|
|
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`);
|
|
253
266
|
relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
|
|
254
267
|
name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
|
|
255
268
|
columns: [
|
|
256
|
-
cols[
|
|
269
|
+
cols[colName]
|
|
257
270
|
],
|
|
258
271
|
foreignColumns: [
|
|
259
272
|
adapter.tables[formattedRelationTo].id
|
|
260
273
|
]
|
|
261
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
|
+
});
|
|
262
294
|
});
|
|
263
295
|
relationshipsTable = adapter.pgSchema.table(relationshipsTableName, relationshipColumns, (cols)=>{
|
|
264
296
|
const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
|
|
@@ -319,7 +351,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
319
351
|
}
|
|
320
352
|
adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
|
|
321
353
|
const result = {};
|
|
322
|
-
nonLocalizedRelations.forEach(({ type, target }, key)=>{
|
|
354
|
+
nonLocalizedRelations.forEach(({ type, relationName, target }, key)=>{
|
|
323
355
|
if (type === 'one') {
|
|
324
356
|
result[key] = one(adapter.tables[target], {
|
|
325
357
|
fields: [
|
|
@@ -333,7 +365,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
333
365
|
}
|
|
334
366
|
if (type === 'many') {
|
|
335
367
|
result[key] = many(adapter.tables[target], {
|
|
336
|
-
relationName: key
|
|
368
|
+
relationName: relationName || key
|
|
337
369
|
});
|
|
338
370
|
}
|
|
339
371
|
});
|
|
@@ -360,6 +392,9 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
360
392
|
return result;
|
|
361
393
|
});
|
|
362
394
|
return {
|
|
395
|
+
hasLocalizedManyNumberField,
|
|
396
|
+
hasLocalizedManyTextField,
|
|
397
|
+
hasLocalizedRelationshipField,
|
|
363
398
|
hasManyNumberField,
|
|
364
399
|
hasManyTextField,
|
|
365
400
|
relationsToBuild
|