@payloadcms/db-postgres 3.0.0-beta.10 → 3.0.0-beta.12
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/count.d.ts +3 -0
- package/dist/count.d.ts.map +1 -0
- package/dist/count.js +53 -0
- package/dist/count.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +91 -28
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +2 -8
- package/dist/schema/build.js.map +1 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +5 -6
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.d.ts +2 -1
- package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js +13 -7
- package/dist/schema/validateExistingBlockIsIdentical.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +0 -156
package/dist/count.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../src/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAY7C,eAAO,MAAM,KAAK,EAAE,KAoDnB,CAAA"}
|
package/dist/count.js
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
2
|
+
import { chainMethods } from './find/chainMethods.js';
|
3
|
+
import buildQuery from './queries/buildQuery.js';
|
4
|
+
import { getTableName } from './schema/getTableName.js';
|
5
|
+
export const count = async function count({ collection, locale, req, where: whereArg }) {
|
6
|
+
const collectionConfig = this.payload.collections[collection].config;
|
7
|
+
const tableName = getTableName({
|
8
|
+
adapter: this,
|
9
|
+
config: collectionConfig
|
10
|
+
});
|
11
|
+
const db = this.sessions[req.transactionID]?.db || this.drizzle;
|
12
|
+
const table = this.tables[tableName];
|
13
|
+
const { joinAliases, joins, where } = await buildQuery({
|
14
|
+
adapter: this,
|
15
|
+
fields: collectionConfig.fields,
|
16
|
+
locale,
|
17
|
+
tableName,
|
18
|
+
where: whereArg
|
19
|
+
});
|
20
|
+
const selectCountMethods = [];
|
21
|
+
joinAliases.forEach(({ condition, table })=>{
|
22
|
+
selectCountMethods.push({
|
23
|
+
args: [
|
24
|
+
table,
|
25
|
+
condition
|
26
|
+
],
|
27
|
+
method: 'leftJoin'
|
28
|
+
});
|
29
|
+
});
|
30
|
+
Object.entries(joins).forEach(([joinTable, condition])=>{
|
31
|
+
if (joinTable) {
|
32
|
+
selectCountMethods.push({
|
33
|
+
args: [
|
34
|
+
this.tables[joinTable],
|
35
|
+
condition
|
36
|
+
],
|
37
|
+
method: 'leftJoin'
|
38
|
+
});
|
39
|
+
}
|
40
|
+
});
|
41
|
+
const countResult = await chainMethods({
|
42
|
+
methods: selectCountMethods,
|
43
|
+
query: db.select({
|
44
|
+
count: sql`count
|
45
|
+
(DISTINCT ${this.tables[tableName].id})`
|
46
|
+
}).from(table).where(where)
|
47
|
+
});
|
48
|
+
return {
|
49
|
+
totalDocs: Number(countResult[0].count)
|
50
|
+
};
|
51
|
+
};
|
52
|
+
|
53
|
+
//# sourceMappingURL=count.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/count.ts"],"sourcesContent":["import type { Count } from 'payload/database'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { sql } from 'drizzle-orm'\n\nimport type { ChainedMethods } from './find/chainMethods.js'\nimport type { PostgresAdapter } from './types.js'\n\nimport { chainMethods } from './find/chainMethods.js'\nimport buildQuery from './queries/buildQuery.js'\nimport { getTableName } from './schema/getTableName.js'\n\nexport const count: Count = async function count(\n this: PostgresAdapter,\n { collection, locale, req, where: whereArg },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = getTableName({\n adapter: this,\n config: collectionConfig,\n })\n\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const table = this.tables[tableName]\n\n const { joinAliases, joins, where } = await buildQuery({\n adapter: this,\n fields: collectionConfig.fields,\n locale,\n tableName,\n where: whereArg,\n })\n\n const selectCountMethods: ChainedMethods = []\n\n joinAliases.forEach(({ condition, table }) => {\n selectCountMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n Object.entries(joins).forEach(([joinTable, condition]) => {\n if (joinTable) {\n selectCountMethods.push({\n args: [this.tables[joinTable], condition],\n method: 'leftJoin',\n })\n }\n })\n\n const countResult = await chainMethods({\n methods: selectCountMethods,\n query: db\n .select({\n count: sql<number>`count\n (DISTINCT ${this.tables[tableName].id})`,\n })\n .from(table)\n .where(where),\n })\n\n return { totalDocs: Number(countResult[0].count) }\n}\n"],"names":["sql","chainMethods","buildQuery","getTableName","count","collection","locale","req","where","whereArg","collectionConfig","payload","collections","config","tableName","adapter","db","sessions","transactionID","drizzle","table","tables","joinAliases","joins","fields","selectCountMethods","forEach","condition","push","args","method","Object","entries","joinTable","countResult","methods","query","select","id","from","totalDocs","Number"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,GAAG,QAAQ,cAAa;AAKjC,SAASC,YAAY,QAAQ,yBAAwB;AACrD,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,YAAY,QAAQ,2BAA0B;AAEvD,OAAO,MAAMC,QAAe,eAAeA,MAEzC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE5C,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACP,WAAW,CAACQ,MAAM;IAE/F,MAAMC,YAAYX,aAAa;QAC7BY,SAAS,IAAI;QACbF,QAAQH;IACV;IAEA,MAAMM,KAAK,IAAI,CAACC,QAAQ,CAACV,IAAIW,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACP,UAAU;IAEpC,MAAM,EAAEQ,WAAW,EAAEC,KAAK,EAAEf,KAAK,EAAE,GAAG,MAAMN,WAAW;QACrDa,SAAS,IAAI;QACbS,QAAQd,iBAAiBc,MAAM;QAC/BlB;QACAQ;QACAN,OAAOC;IACT;IAEA,MAAMgB,qBAAqC,EAAE;IAE7CH,YAAYI,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEP,KAAK,EAAE;QACvCK,mBAAmBG,IAAI,CAAC;YACtBC,MAAM;gBAACT;gBAAOO;aAAU;YACxBG,QAAQ;QACV;IACF;IAEAC,OAAOC,OAAO,CAACT,OAAOG,OAAO,CAAC,CAAC,CAACO,WAAWN,UAAU;QACnD,IAAIM,WAAW;YACbR,mBAAmBG,IAAI,CAAC;gBACtBC,MAAM;oBAAC,IAAI,CAACR,MAAM,CAACY,UAAU;oBAAEN;iBAAU;gBACzCG,QAAQ;YACV;QACF;IACF;IAEA,MAAMI,cAAc,MAAMjC,aAAa;QACrCkC,SAASV;QACTW,OAAOpB,GACJqB,MAAM,CAAC;YACNjC,OAAOJ,GAAW,CAAC;sBACL,EAAE,IAAI,CAACqB,MAAM,CAACP,UAAU,CAACwB,EAAE,CAAC,CAAC,CAAC;QAC9C,GACCC,IAAI,CAACnB,OACLZ,KAAK,CAACA;IACX;IAEA,OAAO;QAAEgC,WAAWC,OAAOP,WAAW,CAAC,EAAE,CAAC9B,KAAK;IAAE;AACnD,EAAC"}
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAM1D,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAM1D,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkCvD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAwE/E"}
|
package/dist/index.js
CHANGED
@@ -2,6 +2,7 @@ import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
3
3
|
import { createDatabaseAdapter } from 'payload/database';
|
4
4
|
import { connect } from './connect.js';
|
5
|
+
import { count } from './count.js';
|
5
6
|
import { create } from './create.js';
|
6
7
|
import { createGlobal } from './createGlobal.js';
|
7
8
|
import { createGlobalVersion } from './createGlobalVersion.js';
|
@@ -33,9 +34,10 @@ import { updateGlobalVersion } from './updateGlobalVersion.js';
|
|
33
34
|
import { updateVersion } from './updateVersion.js';
|
34
35
|
export { sql } from 'drizzle-orm';
|
35
36
|
export function postgresAdapter(args) {
|
37
|
+
const postgresIDType = args.idType || 'serial';
|
38
|
+
const payloadIDType = postgresIDType ? 'number' : 'text';
|
36
39
|
function adapter({ payload }) {
|
37
40
|
const migrationDir = findMigrationDir(args.migrationDir);
|
38
|
-
const idType = args.idType || 'serial';
|
39
41
|
return createDatabaseAdapter({
|
40
42
|
name: 'postgres',
|
41
43
|
// Postgres-specific
|
@@ -43,7 +45,7 @@ export function postgresAdapter(args) {
|
|
43
45
|
drizzle: undefined,
|
44
46
|
enums: {},
|
45
47
|
fieldConstraints: {},
|
46
|
-
idType,
|
48
|
+
idType: postgresIDType,
|
47
49
|
localesSuffix: args.localesSuffix || '_locales',
|
48
50
|
logger: args.logger,
|
49
51
|
pgSchema: undefined,
|
@@ -61,14 +63,13 @@ export function postgresAdapter(args) {
|
|
61
63
|
beginTransaction,
|
62
64
|
commitTransaction,
|
63
65
|
connect,
|
66
|
+
count,
|
64
67
|
create,
|
65
68
|
createGlobal,
|
66
69
|
createGlobalVersion,
|
67
70
|
createMigration,
|
68
71
|
createVersion,
|
69
|
-
|
70
|
-
* This represents how a default ID is treated in Payload as were a field type
|
71
|
-
*/ defaultIDType: idType === 'serial' ? 'number' : 'text',
|
72
|
+
defaultIDType: payloadIDType,
|
72
73
|
deleteMany,
|
73
74
|
deleteOne,
|
74
75
|
deleteVersions,
|
@@ -96,7 +97,7 @@ export function postgresAdapter(args) {
|
|
96
97
|
});
|
97
98
|
}
|
98
99
|
return {
|
99
|
-
defaultIDType:
|
100
|
+
defaultIDType: payloadIDType,
|
100
101
|
init: adapter
|
101
102
|
};
|
102
103
|
}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\nimport type { DatabaseAdapterObj } from 'payload/database'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { createDatabaseAdapter } from 'payload/database'\n\nimport type { Args, PostgresAdapter } from './types.js'\n\nimport { connect } from './connect.js'\nimport { create } from './create.js'\nimport { createGlobal } from './createGlobal.js'\nimport { createGlobalVersion } from './createGlobalVersion.js'\nimport { createMigration } from './createMigration.js'\nimport { createVersion } from './createVersion.js'\nimport { deleteMany } from './deleteMany.js'\nimport { deleteOne } from './deleteOne.js'\nimport { deleteVersions } from './deleteVersions.js'\nimport { destroy } from './destroy.js'\nimport { find } from './find.js'\nimport { findGlobal } from './findGlobal.js'\nimport { findGlobalVersions } from './findGlobalVersions.js'\nimport { findOne } from './findOne.js'\nimport { findVersions } from './findVersions.js'\nimport { init } from './init.js'\nimport { migrate } from './migrate.js'\nimport { migrateDown } from './migrateDown.js'\nimport { migrateFresh } from './migrateFresh.js'\nimport { migrateRefresh } from './migrateRefresh.js'\nimport { migrateReset } from './migrateReset.js'\nimport { migrateStatus } from './migrateStatus.js'\nimport { queryDrafts } from './queryDrafts.js'\nimport { beginTransaction } from './transactions/beginTransaction.js'\nimport { commitTransaction } from './transactions/commitTransaction.js'\nimport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nimport { updateOne } from './update.js'\nimport { updateGlobal } from './updateGlobal.js'\nimport { updateGlobalVersion } from './updateGlobalVersion.js'\nimport { updateVersion } from './updateVersion.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport { sql } from 'drizzle-orm'\n\nexport function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\nimport type { DatabaseAdapterObj } from 'payload/database'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { createDatabaseAdapter } from 'payload/database'\n\nimport type { Args, PostgresAdapter } from './types.js'\n\nimport { connect } from './connect.js'\nimport { count } from './count.js'\nimport { create } from './create.js'\nimport { createGlobal } from './createGlobal.js'\nimport { createGlobalVersion } from './createGlobalVersion.js'\nimport { createMigration } from './createMigration.js'\nimport { createVersion } from './createVersion.js'\nimport { deleteMany } from './deleteMany.js'\nimport { deleteOne } from './deleteOne.js'\nimport { deleteVersions } from './deleteVersions.js'\nimport { destroy } from './destroy.js'\nimport { find } from './find.js'\nimport { findGlobal } from './findGlobal.js'\nimport { findGlobalVersions } from './findGlobalVersions.js'\nimport { findOne } from './findOne.js'\nimport { findVersions } from './findVersions.js'\nimport { init } from './init.js'\nimport { migrate } from './migrate.js'\nimport { migrateDown } from './migrateDown.js'\nimport { migrateFresh } from './migrateFresh.js'\nimport { migrateRefresh } from './migrateRefresh.js'\nimport { migrateReset } from './migrateReset.js'\nimport { migrateStatus } from './migrateStatus.js'\nimport { queryDrafts } from './queryDrafts.js'\nimport { beginTransaction } from './transactions/beginTransaction.js'\nimport { commitTransaction } from './transactions/commitTransaction.js'\nimport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nimport { updateOne } from './update.js'\nimport { updateGlobal } from './updateGlobal.js'\nimport { updateGlobalVersion } from './updateGlobalVersion.js'\nimport { updateVersion } from './updateVersion.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport { sql } from 'drizzle-orm'\n\nexport function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {\n const postgresIDType = args.idType || 'serial'\n const payloadIDType = postgresIDType ? 'number' : 'text'\n\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n\n return createDatabaseAdapter<PostgresAdapter>({\n name: 'postgres',\n\n // Postgres-specific\n blockTableNames: {},\n drizzle: undefined,\n enums: {},\n fieldConstraints: {},\n idType: postgresIDType,\n localesSuffix: args.localesSuffix || '_locales',\n logger: args.logger,\n pgSchema: undefined,\n pool: undefined,\n poolOptions: args.pool,\n push: args.push,\n relations: {},\n relationshipsSuffix: args.relationshipsSuffix || '_rels',\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tables: {},\n versionsSuffix: args.versionsSuffix || '_v',\n\n // DatabaseAdapter\n beginTransaction,\n commitTransaction,\n connect,\n count,\n create,\n createGlobal,\n createGlobalVersion,\n createMigration,\n createVersion,\n defaultIDType: payloadIDType,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n init,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n migrationDir,\n payload,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n })\n }\n\n return {\n defaultIDType: payloadIDType,\n init: adapter,\n }\n}\n\n/**\n * Attempt to find migrations directory.\n *\n * Checks for the following directories in order:\n * - `migrationDir` argument from Payload config\n * - `src/migrations`\n * - `dist/migrations`\n * - `migrations`\n *\n * Defaults to `src/migrations`\n *\n * @param migrationDir\n * @returns\n */\nfunction findMigrationDir(migrationDir?: string): string {\n const cwd = process.cwd()\n const srcDir = path.resolve(cwd, 'src/migrations')\n const distDir = path.resolve(cwd, 'dist/migrations')\n const relativeMigrations = path.resolve(cwd, 'migrations')\n\n // Use arg if provided\n if (migrationDir) return migrationDir\n\n // Check other common locations\n if (fs.existsSync(srcDir)) {\n return srcDir\n }\n\n if (fs.existsSync(distDir)) {\n return distDir\n }\n\n if (fs.existsSync(relativeMigrations)) {\n return relativeMigrations\n }\n\n return srcDir\n}\n"],"names":["fs","path","createDatabaseAdapter","connect","count","create","createGlobal","createGlobalVersion","createMigration","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findGlobal","findGlobalVersions","findOne","findVersions","init","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateOne","updateGlobal","updateGlobalVersion","updateVersion","sql","postgresAdapter","args","postgresIDType","idType","payloadIDType","adapter","payload","migrationDir","findMigrationDir","name","blockTableNames","drizzle","undefined","enums","fieldConstraints","localesSuffix","logger","pgSchema","pool","poolOptions","push","relations","relationshipsSuffix","schema","schemaName","sessions","tables","versionsSuffix","defaultIDType","cwd","process","srcDir","resolve","distDir","relativeMigrations","existsSync"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,qBAAqB,QAAQ,mBAAkB;AAIxD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,KAAK,QAAQ,aAAY;AAClC,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,SAAS,QAAQ,cAAa;AACvC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAIlD,SAASC,GAAG,QAAQ,cAAa;AAEjC,OAAO,SAASC,gBAAgBC,IAAU;IACxC,MAAMC,iBAAiBD,KAAKE,MAAM,IAAI;IACtC,MAAMC,gBAAgBF,iBAAiB,WAAW;IAElD,SAASG,QAAQ,EAAEC,OAAO,EAAwB;QAChD,MAAMC,eAAeC,iBAAiBP,KAAKM,YAAY;QAEvD,OAAOxC,sBAAuC;YAC5C0C,MAAM;YAEN,oBAAoB;YACpBC,iBAAiB,CAAC;YAClBC,SAASC;YACTC,OAAO,CAAC;YACRC,kBAAkB,CAAC;YACnBX,QAAQD;YACRa,eAAed,KAAKc,aAAa,IAAI;YACrCC,QAAQf,KAAKe,MAAM;YACnBC,UAAUL;YACVM,MAAMN;YACNO,aAAalB,KAAKiB,IAAI;YACtBE,MAAMnB,KAAKmB,IAAI;YACfC,WAAW,CAAC;YACZC,qBAAqBrB,KAAKqB,mBAAmB,IAAI;YACjDC,QAAQ,CAAC;YACTC,YAAYvB,KAAKuB,UAAU;YAC3BC,UAAU,CAAC;YACXC,QAAQ,CAAC;YACTC,gBAAgB1B,KAAK0B,cAAc,IAAI;YAEvC,kBAAkB;YAClBnC;YACAC;YACAzB;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAsD,eAAexB;YACf7B;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAiB;YACAD;YACAf;YACAG;YACAE;YACAC;YACAF;YACAG;QACF;IACF;IAEA,OAAO;QACL8B,eAAexB;QACfpB,MAAMqB;IACR;AACF;AAEA;;;;;;;;;;;;;CAaC,GACD,SAASG,iBAAiBD,YAAqB;IAC7C,MAAMsB,MAAMC,QAAQD,GAAG;IACvB,MAAME,SAASjE,KAAKkE,OAAO,CAACH,KAAK;IACjC,MAAMI,UAAUnE,KAAKkE,OAAO,CAACH,KAAK;IAClC,MAAMK,qBAAqBpE,KAAKkE,OAAO,CAACH,KAAK;IAE7C,sBAAsB;IACtB,IAAItB,cAAc,OAAOA;IAEzB,+BAA+B;IAC/B,IAAI1C,GAAGsE,UAAU,CAACJ,SAAS;QACzB,OAAOA;IACT;IAEA,IAAIlE,GAAGsE,UAAU,CAACF,UAAU;QAC1B,OAAOA;IACT;IAEA,IAAIpE,GAAGsE,UAAU,CAACD,qBAAqB;QACrC,OAAOA;IACT;IAEA,OAAOH;AACT"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAe,UAAU,EAAa,MAAM,eAAe,CAAA;AAUlG,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAI7E,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,kBAAkB,CAAA;IACzB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;CAC9C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,CAAC,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACnD,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,WAAW,EAAE,qBAAqB,CAAA;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2RAiBhC,IAAI,KAAG,
|
1
|
+
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAe,UAAU,EAAa,MAAM,eAAe,CAAA;AAUlG,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAI7E,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,kBAAkB,CAAA;IACzB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;CAC9C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,CAAC,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACnD,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,WAAW,EAAE,qBAAqB,CAAA;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2RAiBhC,IAAI,KAAG,WA6gBT,CAAA"}
|
@@ -146,6 +146,72 @@ import { getTableName } from '../schema/getTableName.js';
|
|
146
146
|
value
|
147
147
|
});
|
148
148
|
}
|
149
|
+
case 'select':
|
150
|
+
{
|
151
|
+
if (field.hasMany) {
|
152
|
+
newTableName = getTableName({
|
153
|
+
adapter,
|
154
|
+
config: field,
|
155
|
+
parentTableName: `${tableName}_${tableNameSuffix}`,
|
156
|
+
prefix: `${tableName}_${tableNameSuffix}`
|
157
|
+
});
|
158
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
159
|
+
joins[newTableName] = and(eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent), eq(adapter.tables[newTableName]._locale, locale));
|
160
|
+
if (locale !== 'all') {
|
161
|
+
constraints.push({
|
162
|
+
columnName: '_locale',
|
163
|
+
table: adapter.tables[newTableName],
|
164
|
+
value: locale
|
165
|
+
});
|
166
|
+
}
|
167
|
+
} else {
|
168
|
+
joins[newTableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent);
|
169
|
+
}
|
170
|
+
return {
|
171
|
+
columnName: 'value',
|
172
|
+
constraints,
|
173
|
+
field,
|
174
|
+
table: adapter.tables[newTableName]
|
175
|
+
};
|
176
|
+
}
|
177
|
+
break;
|
178
|
+
}
|
179
|
+
case 'text':
|
180
|
+
case 'number':
|
181
|
+
{
|
182
|
+
if (field.hasMany) {
|
183
|
+
let tableType = 'texts';
|
184
|
+
let columnName = 'text';
|
185
|
+
if (field.type === 'number') {
|
186
|
+
tableType = 'numbers';
|
187
|
+
columnName = 'number';
|
188
|
+
}
|
189
|
+
newTableName = `${tableName}_${tableType}`;
|
190
|
+
const joinConstraints = [
|
191
|
+
eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
192
|
+
eq(adapter.tables[newTableName].path, `${constraintPath}${field.name}`)
|
193
|
+
];
|
194
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
195
|
+
joins[newTableName] = and(...joinConstraints, eq(adapter.tables[newTableName]._locale, locale));
|
196
|
+
if (locale !== 'all') {
|
197
|
+
constraints.push({
|
198
|
+
columnName: 'locale',
|
199
|
+
table: adapter.tables[newTableName],
|
200
|
+
value: locale
|
201
|
+
});
|
202
|
+
}
|
203
|
+
} else {
|
204
|
+
joins[newTableName] = and(...joinConstraints);
|
205
|
+
}
|
206
|
+
return {
|
207
|
+
columnName,
|
208
|
+
constraints,
|
209
|
+
field,
|
210
|
+
table: adapter.tables[newTableName]
|
211
|
+
};
|
212
|
+
}
|
213
|
+
break;
|
214
|
+
}
|
149
215
|
case 'array':
|
150
216
|
{
|
151
217
|
newTableName = getTableName({
|
@@ -375,35 +441,32 @@ import { getTableName } from '../schema/getTableName.js';
|
|
375
441
|
value
|
376
442
|
});
|
377
443
|
}
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
});
|
394
|
-
}
|
395
|
-
}
|
396
|
-
const targetTable = aliasTable || adapter.tables[newTableName];
|
397
|
-
selectFields[`${newTableName}.${columnPrefix}${field.name}`] = targetTable[`${columnPrefix}${field.name}`];
|
398
|
-
return {
|
399
|
-
columnName: `${columnPrefix}${field.name}`,
|
400
|
-
constraints,
|
401
|
-
field,
|
402
|
-
pathSegments,
|
403
|
-
table: targetTable
|
404
|
-
};
|
405
|
-
}
|
444
|
+
}
|
445
|
+
if (fieldAffectsData(field)) {
|
446
|
+
if (field.localized && adapter.payload.config.localization) {
|
447
|
+
// If localized, we go to localized table and set aliasTable to undefined
|
448
|
+
// so it is not picked up below to be used as targetTable
|
449
|
+
newTableName = `${tableName}${adapter.localesSuffix}`;
|
450
|
+
const parentTable = aliasTable || adapter.tables[tableName];
|
451
|
+
joins[newTableName] = eq(parentTable.id, adapter.tables[newTableName]._parentID);
|
452
|
+
aliasTable = undefined;
|
453
|
+
if (locale !== 'all') {
|
454
|
+
constraints.push({
|
455
|
+
columnName: '_locale',
|
456
|
+
table: adapter.tables[newTableName],
|
457
|
+
value: locale
|
458
|
+
});
|
406
459
|
}
|
460
|
+
}
|
461
|
+
const targetTable = aliasTable || adapter.tables[newTableName];
|
462
|
+
selectFields[`${newTableName}.${columnPrefix}${field.name}`] = targetTable[`${columnPrefix}${field.name}`];
|
463
|
+
return {
|
464
|
+
columnName: `${columnPrefix}${field.name}`,
|
465
|
+
constraints,
|
466
|
+
field,
|
467
|
+
pathSegments,
|
468
|
+
table: targetTable
|
469
|
+
};
|
407
470
|
}
|
408
471
|
}
|
409
472
|
throw new APIError(`Cannot find field for path at ${fieldPath}`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { Field, FieldAffectingData, NumberField, TabAsField, TextField } from 'payload/types'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { alias } from 'drizzle-orm/pg-core'\nimport { APIError } from 'payload/errors'\nimport { fieldAffectsData, tabHasName } from 'payload/types'\nimport { flattenTopLevelFields } from 'payload/utilities'\nimport toSnakeCase from 'to-snake-case'\nimport { v4 as uuid } from 'uuid'\n\nimport type { GenericColumn, GenericTable, PostgresAdapter } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryJoins } from './buildQuery.js'\n\nimport { getTableName } from '../schema/getTableName.js'\n\ntype Constraint = {\n columnName: string\n table: GenericTable | PgTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n constraints: Constraint[]\n field: FieldAffectingData\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: GenericTable | PgTableWithColumns<any>\n}\n\ntype Args = {\n adapter: PostgresAdapter\n aliasTable?: GenericTable | PgTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: (Field | TabAsField)[]\n joinAliases: BuildQueryJoinAliases\n joins: BuildQueryJoins\n locale?: string\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joinAliases,\n joins,\n locale: incomingLocale,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = flattenTopLevelFields(fields as Field[]).find(\n (fieldToFind) => fieldAffectsData(fieldToFind) && fieldToFind.name === fieldPath,\n ) as Field | TabAsField\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if ('localized' in field && field.localized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'tabs': {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.tabs.map((tab) => ({\n ...tab,\n type: 'tab',\n })),\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n case 'group': {\n if (locale && field.localized && adapter.payload.config.localization) {\n newTableName = getTableName({\n adapter,\n config: field,\n locales: true,\n parentTableName: tableName,\n prefix: `${tableName}_`,\n })\n\n joins[tableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'array': {\n newTableName = getTableName({\n adapter,\n config: field,\n parentTableName: `${tableName}_${tableNameSuffix}`,\n prefix: `${tableName}_${tableNameSuffix}`,\n })\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block = field.blocks.find((block) => block.slug === blockType)\n newTableName = getTableName({\n adapter,\n config: block,\n parentTableName: tableName,\n prefix: `${tableName}_blocks_`,\n })\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n constraints.push({\n columnName: '_path',\n table: adapter.tables[newTableName],\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = field.blocks.some((block) => {\n newTableName = getTableName({\n adapter,\n config: block,\n parentTableName: tableName,\n prefix: `${tableName}_blocks_`,\n })\n constraintPath = `${constraintPath}${field.name}.%.`\n let result\n const blockConstraints = []\n const blockSelectFields = {}\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n if (field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale) {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n let relationshipFields\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const newCollectionPath = pathSegments.slice(1).join('.')\n const aliasRelationshipTableName = uuid()\n const aliasRelationshipTable = alias(\n adapter.tables[relationTableName],\n aliasRelationshipTableName,\n )\n\n // Join in the relationships table\n if (locale && field.localized && adapter.payload.config.localization) {\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n eq(aliasRelationshipTable.locale, locale),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: aliasRelationshipTable,\n value: locale,\n })\n }\n } else {\n // Join in the relationships table\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n newTableName = getTableName({\n adapter,\n config: relationshipConfig,\n })\n // parent to relationship join table\n relationshipFields = relationshipConfig.fields\n\n newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()))\n\n joinAliases.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const tableColumnsNames = field.relationTo.map(\n (relationTo) =>\n `\"${aliasRelationshipTableName}\".\"${getTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n })}_id\"`,\n )\n return {\n constraints,\n field,\n rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) return `${matchedRelation}ID`\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n fields: relationshipFields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n\n default: {\n if (fieldAffectsData(field)) {\n if (field.localized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n const parentTable = aliasTable || adapter.tables[tableName]\n\n joins[newTableName] = eq(parentTable.id, adapter.tables[newTableName]._parentID)\n\n aliasTable = undefined\n\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n\n const targetTable = aliasTable || adapter.tables[newTableName]\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n }\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","alias","APIError","fieldAffectsData","tabHasName","flattenTopLevelFields","toSnakeCase","v4","uuid","getTableName","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joinAliases","joins","locale","incomingLocale","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","localized","payload","config","localization","matchedLocale","localeCodes","splice","tabs","map","tab","slice","locales","parentTableName","prefix","_parentID","push","_locale","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","slug","getNotNullColumnByValue","hasBlockField","some","result","blockConstraints","blockSelectFields","error","concat","rawColumn","relationshipFields","relationTableName","relationshipsSuffix","newCollectionPath","join","aliasRelationshipTableName","aliasRelationshipTable","condition","parent","path","newAliasTable","relationTo","relationshipConfig","collections","tableColumnsNames","raw","val","matchedRelation","relation","undefined","localesSuffix","parentTable","targetTable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
1
|
+
{"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { Field, FieldAffectingData, NumberField, TabAsField, TextField } from 'payload/types'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { alias } from 'drizzle-orm/pg-core'\nimport { APIError } from 'payload/errors'\nimport { fieldAffectsData, tabHasName } from 'payload/types'\nimport { flattenTopLevelFields } from 'payload/utilities'\nimport toSnakeCase from 'to-snake-case'\nimport { v4 as uuid } from 'uuid'\n\nimport type { GenericColumn, GenericTable, PostgresAdapter } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryJoins } from './buildQuery.js'\n\nimport { getTableName } from '../schema/getTableName.js'\n\ntype Constraint = {\n columnName: string\n table: GenericTable | PgTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n constraints: Constraint[]\n field: FieldAffectingData\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: GenericTable | PgTableWithColumns<any>\n}\n\ntype Args = {\n adapter: PostgresAdapter\n aliasTable?: GenericTable | PgTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: (Field | TabAsField)[]\n joinAliases: BuildQueryJoinAliases\n joins: BuildQueryJoins\n locale?: string\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joinAliases,\n joins,\n locale: incomingLocale,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = flattenTopLevelFields(fields as Field[]).find(\n (fieldToFind) => fieldAffectsData(fieldToFind) && fieldToFind.name === fieldPath,\n ) as Field | TabAsField\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if ('localized' in field && field.localized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'tabs': {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.tabs.map((tab) => ({\n ...tab,\n type: 'tab',\n })),\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n case 'group': {\n if (locale && field.localized && adapter.payload.config.localization) {\n newTableName = getTableName({\n adapter,\n config: field,\n locales: true,\n parentTableName: tableName,\n prefix: `${tableName}_`,\n })\n\n joins[tableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'select': {\n if (field.hasMany) {\n newTableName = getTableName({\n adapter,\n config: field,\n parentTableName: `${tableName}_${tableNameSuffix}`,\n prefix: `${tableName}_${tableNameSuffix}`,\n })\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName].parent,\n )\n }\n\n return {\n columnName: 'value',\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'text':\n case 'number': {\n if (field.hasMany) {\n let tableType = 'texts'\n let columnName = 'text'\n if (field.type === 'number') {\n tableType = 'numbers'\n columnName = 'number'\n }\n newTableName = `${tableName}_${tableType}`\n const joinConstraints = [\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName].path, `${constraintPath}${field.name}`),\n ]\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n ...joinConstraints,\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = and(...joinConstraints)\n }\n\n return {\n columnName,\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'array': {\n newTableName = getTableName({\n adapter,\n config: field,\n parentTableName: `${tableName}_${tableNameSuffix}`,\n prefix: `${tableName}_${tableNameSuffix}`,\n })\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block = field.blocks.find((block) => block.slug === blockType)\n newTableName = getTableName({\n adapter,\n config: block,\n parentTableName: tableName,\n prefix: `${tableName}_blocks_`,\n })\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n constraints.push({\n columnName: '_path',\n table: adapter.tables[newTableName],\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = field.blocks.some((block) => {\n newTableName = getTableName({\n adapter,\n config: block,\n parentTableName: tableName,\n prefix: `${tableName}_blocks_`,\n })\n constraintPath = `${constraintPath}${field.name}.%.`\n let result\n const blockConstraints = []\n const blockSelectFields = {}\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n if (field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale) {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n let relationshipFields\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const newCollectionPath = pathSegments.slice(1).join('.')\n const aliasRelationshipTableName = uuid()\n const aliasRelationshipTable = alias(\n adapter.tables[relationTableName],\n aliasRelationshipTableName,\n )\n\n // Join in the relationships table\n if (locale && field.localized && adapter.payload.config.localization) {\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n eq(aliasRelationshipTable.locale, locale),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: aliasRelationshipTable,\n value: locale,\n })\n }\n } else {\n // Join in the relationships table\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n newTableName = getTableName({\n adapter,\n config: relationshipConfig,\n })\n // parent to relationship join table\n relationshipFields = relationshipConfig.fields\n\n newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()))\n\n joinAliases.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const tableColumnsNames = field.relationTo.map(\n (relationTo) =>\n `\"${aliasRelationshipTableName}\".\"${getTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n })}_id\"`,\n )\n return {\n constraints,\n field,\n rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) return `${matchedRelation}ID`\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n fields: relationshipFields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n }\n\n if (fieldAffectsData(field)) {\n if (field.localized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n const parentTable = aliasTable || adapter.tables[tableName]\n\n joins[newTableName] = eq(parentTable.id, adapter.tables[newTableName]._parentID)\n\n aliasTable = undefined\n\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n\n const targetTable = aliasTable || adapter.tables[newTableName]\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","alias","APIError","fieldAffectsData","tabHasName","flattenTopLevelFields","toSnakeCase","v4","uuid","getTableName","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joinAliases","joins","locale","incomingLocale","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","localized","payload","config","localization","matchedLocale","localeCodes","splice","tabs","map","tab","slice","locales","parentTableName","prefix","_parentID","push","hasMany","parent","_locale","tableType","joinConstraints","path","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","slug","getNotNullColumnByValue","hasBlockField","some","result","blockConstraints","blockSelectFields","error","concat","rawColumn","relationshipFields","relationTableName","relationshipsSuffix","newCollectionPath","join","aliasRelationshipTableName","aliasRelationshipTable","condition","newAliasTable","relationTo","relationshipConfig","collections","tableColumnsNames","raw","val","matchedRelation","relation","undefined","localesSuffix","parentTable","targetTable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAM1C,OAAO,KAAK,EAAE,cAAc,EAAwB,eAAe,EAAE,MAAM,aAAa,CAAA;AAOxF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,wQAiBpB,IAAI,KAAG,
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAM1C,OAAO,KAAK,EAAE,cAAc,EAAwB,eAAe,EAAE,MAAM,aAAa,CAAA;AAOxF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,wQAiBpB,IAAI,KAAG,MAmUT,CAAA"}
|
package/dist/schema/build.js
CHANGED
@@ -8,12 +8,6 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, bu
|
|
8
8
|
const rootTableName = incomingRootTableName || tableName;
|
9
9
|
const columns = baseColumns;
|
10
10
|
const indexes = {};
|
11
|
-
let hasLocalizedField = false;
|
12
|
-
let hasLocalizedRelationshipField = false;
|
13
|
-
let hasManyTextField = false;
|
14
|
-
let hasManyNumberField = false;
|
15
|
-
let hasLocalizedManyTextField = false;
|
16
|
-
let hasLocalizedManyNumberField = false;
|
17
11
|
const localesColumns = {};
|
18
12
|
const localesIndexes = {};
|
19
13
|
let localesTable;
|
@@ -29,7 +23,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, bu
|
|
29
23
|
columns,
|
30
24
|
fields
|
31
25
|
});
|
32
|
-
|
26
|
+
const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = traverseFields({
|
33
27
|
adapter,
|
34
28
|
buildNumbers,
|
35
29
|
buildRelationships,
|
@@ -49,7 +43,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, bu
|
|
49
43
|
rootTableIDColType: rootTableIDColType || idColType,
|
50
44
|
rootTableName,
|
51
45
|
versions
|
52
|
-
})
|
46
|
+
});
|
53
47
|
if (timestamps) {
|
54
48
|
columns.createdAt = timestamp('created_at', {
|
55
49
|
mode: 'string',
|
package/dist/schema/build.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type {\n IndexBuilder,\n PgColumnBuilder,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { Field } from 'payload/types'\n\nimport { relations } from 'drizzle-orm'\nimport { index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core'\nimport { fieldAffectsData } from 'payload/types'\n\nimport type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types.js'\n\nimport { getTableName } from './getTableName.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: PostgresAdapter\n baseColumns?: Record<string, PgColumnBuilder>\n baseExtraConfig?: Record<string, (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder>\n buildNumbers?: boolean\n buildRelationships?: boolean\n buildTexts?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n rootRelationsToBuild?: Map<string, string>\n rootRelationships?: Set<string>\n rootTableIDColType?: string\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n}\n\ntype Result = {\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n relationsToBuild: Map<string, string>\n}\n\nexport const buildTable = ({\n adapter,\n baseColumns = {},\n baseExtraConfig = {},\n buildNumbers,\n buildRelationships,\n buildTexts,\n disableNotNull,\n disableUnique = false,\n fields,\n rootRelationsToBuild,\n rootRelationships,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n}: Args): Result => {\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, PgColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasLocalizedManyNumberField = false\n\n const localesColumns: Record<string, PgColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | PgTableWithColumns<any>\n let textsTable: GenericTable | PgTableWithColumns<any>\n let numbersTable: GenericTable | PgTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | PgTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: Map<string, string> = new Map()\n\n const idColType: IDType = setColumnID({ adapter, columns, fields })\n\n ;({\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columns,\n disableNotNull,\n disableUnique,\n fields,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\n }))\n\n if (timestamps) {\n columns.createdAt = timestamp('created_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n columns.updatedAt = timestamp('updated_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n }\n\n const table = adapter.pgSchema.table(tableName, columns, (cols) => {\n const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func]) => {\n config[key] = func(cols)\n return config\n }, {})\n\n return Object.entries(indexes).reduce((acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n }, extraConfig)\n })\n\n adapter.tables[tableName] = table\n\n if (hasLocalizedField) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n localesColumns.id = serial('id').primaryKey()\n localesColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull()\n\n localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols) => {\n return Object.entries(localesIndexes).reduce(\n (acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n },\n {\n _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(\n cols._locale,\n cols._parentID,\n ),\n },\n )\n })\n\n adapter.tables[localeTableName] = localesTable\n\n const localesTableRelations = relations(localesTable, ({ one }) => ({\n _parentID: one(table, {\n fields: [localesTable._parentID],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${localeTableName}`] = localesTableRelations\n }\n\n if (hasManyTextField && buildTexts) {\n const textsTableName = `${rootTableName}_texts`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n text: varchar('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n textsTable = adapter.pgSchema.table(textsTableName, columns, (cols) => {\n const indexes: Record<string, IndexBuilder> = {\n orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),\n }\n\n if (hasManyTextField === 'index') {\n indexes.text_idx = index(`${textsTableName}_text_idx`).on(cols.text)\n }\n\n if (hasLocalizedManyTextField) {\n indexes.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent)\n }\n\n return indexes\n })\n\n adapter.tables[textsTableName] = textsTable\n\n const textsTableRelations = relations(textsTable, ({ one }) => ({\n parent: one(table, {\n fields: [textsTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${textsTableName}`] = textsTableRelations\n }\n\n if (hasManyNumberField && buildNumbers) {\n const numbersTableName = `${rootTableName}_numbers`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols) => {\n const indexes: Record<string, IndexBuilder> = {\n orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),\n }\n\n if (hasManyNumberField === 'index') {\n indexes.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number)\n }\n\n if (hasLocalizedManyNumberField) {\n indexes.localeParent = index(`${numbersTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return indexes\n })\n\n adapter.tables[numbersTableName] = numbersTable\n\n const numbersTableRelations = relations(numbersTable, ({ one }) => ({\n parent: one(table, {\n fields: [numbersTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${numbersTableName}`] = numbersTableRelations\n }\n\n if (buildRelationships) {\n if (relationships.size) {\n const relationshipColumns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order'),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = adapter.enums.enum__locales('locale')\n }\n\n relationships.forEach((relationTo) => {\n const relationshipConfig = adapter.payload.collections[relationTo].config\n const formattedRelationTo = getTableName({\n adapter,\n config: relationshipConfig,\n throwValidationError: true,\n })\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') colType = 'numeric'\n if (relatedCollectionCustomIDType === 'text') colType = 'varchar'\n\n relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](\n `${formattedRelationTo}_id`,\n ).references(() => adapter.tables[formattedRelationTo].id, { onDelete: 'cascade' })\n })\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n relationshipsTable = adapter.pgSchema.table(\n relationshipsTableName,\n relationshipColumns,\n (cols) => {\n const result: Record<string, unknown> = {\n order: index(`${relationshipsTableName}_order_idx`).on(cols.order),\n parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),\n pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path),\n }\n\n if (hasLocalizedRelationshipField) {\n result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale)\n }\n\n return result\n },\n )\n\n adapter.tables[relationshipsTableName] = relationshipsTable\n\n const relationshipsTableRelations = relations(relationshipsTable, ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(table, {\n fields: [relationshipsTable.parent],\n references: [table.id],\n relationName: '_rels',\n }),\n }\n\n relationships.forEach((relationTo) => {\n const relatedTableName = getTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n throwValidationError: true,\n })\n const idColumnName = `${relationTo}ID`\n result[idColumnName] = one(adapter.tables[relatedTableName], {\n fields: [relationshipsTable[idColumnName]],\n references: [adapter.tables[relatedTableName].id],\n })\n })\n\n return result\n })\n\n adapter.relations[`relations_${relationshipsTableName}`] = relationshipsTableRelations\n }\n }\n\n const tableRelations = relations(table, ({ many }) => {\n const result: Record<string, Relation<string>> = {}\n\n relationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n if (hasLocalizedField) {\n result._locales = many(localesTable)\n }\n\n if (hasManyTextField) {\n result._texts = many(textsTable)\n }\n if (hasManyNumberField) {\n result._numbers = many(numbersTable)\n }\n\n if (relationships.size && relationshipsTable) {\n result._rels = many(relationshipsTable, {\n relationName: '_rels',\n })\n }\n\n return result\n })\n\n adapter.relations[`relations_${tableName}`] = tableRelations\n\n return { hasManyNumberField, hasManyTextField, relationsToBuild }\n}\n"],"names":["relations","index","integer","numeric","serial","timestamp","unique","varchar","getTableName","parentIDColumnMap","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","buildNumbers","buildRelationships","buildTexts","disableNotNull","disableUnique","fields","rootRelationsToBuild","rootRelationships","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","columns","indexes","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasManyNumberField","hasLocalizedManyTextField","hasLocalizedManyNumberField","localesColumns","localesIndexes","localesTable","textsTable","numbersTable","relationships","Set","relationshipsTable","relationsToBuild","Map","idColType","newTableName","parentTableName","createdAt","mode","precision","withTimezone","defaultNow","notNull","updatedAt","table","pgSchema","cols","extraConfig","Object","entries","reduce","config","key","func","acc","colName","tables","localeTableName","localesSuffix","id","primaryKey","_locale","enums","enum__locales","_parentID","references","onDelete","_localeParent","on","localesTableRelations","one","textsTableName","order","parent","path","text","locale","orderParentIdx","text_idx","localeParent","textsTableRelations","numbersTableName","number","numberIdx","numbersTableRelations","size","relationshipColumns","forEach","relationTo","relationshipConfig","payload","collections","formattedRelationTo","throwValidationError","colType","idType","relatedCollectionCustomIDType","slug","customIDType","relationshipsTableName","relationshipsSuffix","result","parentIdx","pathIdx","localeIdx","relationshipsTableRelations","relationName","relatedTableName","idColumnName","tableRelations","many","val","_locales","_texts","_numbers","_rels"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
1
|
+
{"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type {\n IndexBuilder,\n PgColumnBuilder,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { Field } from 'payload/types'\n\nimport { relations } from 'drizzle-orm'\nimport { index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core'\nimport { fieldAffectsData } from 'payload/types'\n\nimport type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types.js'\n\nimport { getTableName } from './getTableName.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: PostgresAdapter\n baseColumns?: Record<string, PgColumnBuilder>\n baseExtraConfig?: Record<string, (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder>\n buildNumbers?: boolean\n buildRelationships?: boolean\n buildTexts?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n rootRelationsToBuild?: Map<string, string>\n rootRelationships?: Set<string>\n rootTableIDColType?: string\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n}\n\ntype Result = {\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n relationsToBuild: Map<string, string>\n}\n\nexport const buildTable = ({\n adapter,\n baseColumns = {},\n baseExtraConfig = {},\n buildNumbers,\n buildRelationships,\n buildTexts,\n disableNotNull,\n disableUnique = false,\n fields,\n rootRelationsToBuild,\n rootRelationships,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n}: Args): Result => {\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, PgColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n const localesColumns: Record<string, PgColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | PgTableWithColumns<any>\n let textsTable: GenericTable | PgTableWithColumns<any>\n let numbersTable: GenericTable | PgTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | PgTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: Map<string, string> = new Map()\n\n const idColType: IDType = setColumnID({ adapter, columns, fields })\n\n const {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columns,\n disableNotNull,\n disableUnique,\n fields,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\n })\n\n if (timestamps) {\n columns.createdAt = timestamp('created_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n columns.updatedAt = timestamp('updated_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n }\n\n const table = adapter.pgSchema.table(tableName, columns, (cols) => {\n const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func]) => {\n config[key] = func(cols)\n return config\n }, {})\n\n return Object.entries(indexes).reduce((acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n }, extraConfig)\n })\n\n adapter.tables[tableName] = table\n\n if (hasLocalizedField) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n localesColumns.id = serial('id').primaryKey()\n localesColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull()\n\n localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols) => {\n return Object.entries(localesIndexes).reduce(\n (acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n },\n {\n _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(\n cols._locale,\n cols._parentID,\n ),\n },\n )\n })\n\n adapter.tables[localeTableName] = localesTable\n\n const localesTableRelations = relations(localesTable, ({ one }) => ({\n _parentID: one(table, {\n fields: [localesTable._parentID],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${localeTableName}`] = localesTableRelations\n }\n\n if (hasManyTextField && buildTexts) {\n const textsTableName = `${rootTableName}_texts`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n text: varchar('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n textsTable = adapter.pgSchema.table(textsTableName, columns, (cols) => {\n const indexes: Record<string, IndexBuilder> = {\n orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),\n }\n\n if (hasManyTextField === 'index') {\n indexes.text_idx = index(`${textsTableName}_text_idx`).on(cols.text)\n }\n\n if (hasLocalizedManyTextField) {\n indexes.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent)\n }\n\n return indexes\n })\n\n adapter.tables[textsTableName] = textsTable\n\n const textsTableRelations = relations(textsTable, ({ one }) => ({\n parent: one(table, {\n fields: [textsTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${textsTableName}`] = textsTableRelations\n }\n\n if (hasManyNumberField && buildNumbers) {\n const numbersTableName = `${rootTableName}_numbers`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols) => {\n const indexes: Record<string, IndexBuilder> = {\n orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),\n }\n\n if (hasManyNumberField === 'index') {\n indexes.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number)\n }\n\n if (hasLocalizedManyNumberField) {\n indexes.localeParent = index(`${numbersTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return indexes\n })\n\n adapter.tables[numbersTableName] = numbersTable\n\n const numbersTableRelations = relations(numbersTable, ({ one }) => ({\n parent: one(table, {\n fields: [numbersTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${numbersTableName}`] = numbersTableRelations\n }\n\n if (buildRelationships) {\n if (relationships.size) {\n const relationshipColumns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order'),\n parent: parentIDColumnMap[idColType]('parent_id')\n .references(() => table.id, { onDelete: 'cascade' })\n .notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = adapter.enums.enum__locales('locale')\n }\n\n relationships.forEach((relationTo) => {\n const relationshipConfig = adapter.payload.collections[relationTo].config\n const formattedRelationTo = getTableName({\n adapter,\n config: relationshipConfig,\n throwValidationError: true,\n })\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') colType = 'numeric'\n if (relatedCollectionCustomIDType === 'text') colType = 'varchar'\n\n relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](\n `${formattedRelationTo}_id`,\n ).references(() => adapter.tables[formattedRelationTo].id, { onDelete: 'cascade' })\n })\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n relationshipsTable = adapter.pgSchema.table(\n relationshipsTableName,\n relationshipColumns,\n (cols) => {\n const result: Record<string, unknown> = {\n order: index(`${relationshipsTableName}_order_idx`).on(cols.order),\n parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),\n pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path),\n }\n\n if (hasLocalizedRelationshipField) {\n result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale)\n }\n\n return result\n },\n )\n\n adapter.tables[relationshipsTableName] = relationshipsTable\n\n const relationshipsTableRelations = relations(relationshipsTable, ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(table, {\n fields: [relationshipsTable.parent],\n references: [table.id],\n relationName: '_rels',\n }),\n }\n\n relationships.forEach((relationTo) => {\n const relatedTableName = getTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n throwValidationError: true,\n })\n const idColumnName = `${relationTo}ID`\n result[idColumnName] = one(adapter.tables[relatedTableName], {\n fields: [relationshipsTable[idColumnName]],\n references: [adapter.tables[relatedTableName].id],\n })\n })\n\n return result\n })\n\n adapter.relations[`relations_${relationshipsTableName}`] = relationshipsTableRelations\n }\n }\n\n const tableRelations = relations(table, ({ many }) => {\n const result: Record<string, Relation<string>> = {}\n\n relationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n if (hasLocalizedField) {\n result._locales = many(localesTable)\n }\n\n if (hasManyTextField) {\n result._texts = many(textsTable)\n }\n if (hasManyNumberField) {\n result._numbers = many(numbersTable)\n }\n\n if (relationships.size && relationshipsTable) {\n result._rels = many(relationshipsTable, {\n relationName: '_rels',\n })\n }\n\n return result\n })\n\n adapter.relations[`relations_${tableName}`] = tableRelations\n\n return { hasManyNumberField, hasManyTextField, relationsToBuild }\n}\n"],"names":["relations","index","integer","numeric","serial","timestamp","unique","varchar","getTableName","parentIDColumnMap","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","buildNumbers","buildRelationships","buildTexts","disableNotNull","disableUnique","fields","rootRelationsToBuild","rootRelationships","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","columns","indexes","localesColumns","localesIndexes","localesTable","textsTable","numbersTable","relationships","Set","relationshipsTable","relationsToBuild","Map","idColType","hasLocalizedField","hasLocalizedManyNumberField","hasLocalizedManyTextField","hasLocalizedRelationshipField","hasManyNumberField","hasManyTextField","newTableName","parentTableName","createdAt","mode","precision","withTimezone","defaultNow","notNull","updatedAt","table","pgSchema","cols","extraConfig","Object","entries","reduce","config","key","func","acc","colName","tables","localeTableName","localesSuffix","id","primaryKey","_locale","enums","enum__locales","_parentID","references","onDelete","_localeParent","on","localesTableRelations","one","textsTableName","order","parent","path","text","locale","orderParentIdx","text_idx","localeParent","textsTableRelations","numbersTableName","number","numberIdx","numbersTableRelations","size","relationshipColumns","forEach","relationTo","relationshipConfig","payload","collections","formattedRelationTo","throwValidationError","colType","idType","relatedCollectionCustomIDType","slug","customIDType","relationshipsTableName","relationshipsSuffix","result","parentIdx","pathIdx","localeIdx","relationshipsTableRelations","relationName","relatedTableName","idColumnName","tableRelations","many","val","_locales","_texts","_numbers","_rels"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAqBtD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,aAAa,CAAA;AAU1E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,sUAuBxB,IAAI,KAAG,
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAqBtD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,aAAa,CAAA;AAU1E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,sUAuBxB,IAAI,KAAG,MAinBT,CAAA"}
|
@@ -136,8 +136,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
|
|
136
136
|
parentTableName: newTableName,
|
137
137
|
prefix: `enum_${newTableName}_`,
|
138
138
|
target: 'enumName',
|
139
|
-
throwValidationError
|
140
|
-
versions
|
139
|
+
throwValidationError
|
141
140
|
});
|
142
141
|
adapter.enums[enumName] = pgEnum(enumName, field.options.map((option)=>{
|
143
142
|
if (optionIsObject(option)) {
|
@@ -151,8 +150,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
|
|
151
150
|
config: field,
|
152
151
|
parentTableName: newTableName,
|
153
152
|
prefix: `${newTableName}_`,
|
154
|
-
throwValidationError
|
155
|
-
versions
|
153
|
+
throwValidationError
|
156
154
|
});
|
157
155
|
const baseColumns = {
|
158
156
|
order: integer('order').notNull(),
|
@@ -347,7 +345,8 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
|
|
347
345
|
block,
|
348
346
|
localized: field.localized,
|
349
347
|
rootTableName,
|
350
|
-
table: adapter.tables[blockTableName]
|
348
|
+
table: adapter.tables[blockTableName],
|
349
|
+
tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`]
|
351
350
|
});
|
352
351
|
}
|
353
352
|
adapter.blockTableNames[`${rootTableName}.${toSnakeCase(block.slug)}`] = blockTableName;
|
@@ -481,7 +480,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
|
|
481
480
|
indexes,
|
482
481
|
localesColumns,
|
483
482
|
localesIndexes,
|
484
|
-
newTableName
|
483
|
+
newTableName,
|
485
484
|
parentTableName,
|
486
485
|
relationsToBuild,
|
487
486
|
relationships,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder, UniqueConstraintBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, TabAsField } from 'payload/types'\n\nimport { relations } from 'drizzle-orm'\nimport {\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n boolean,\n index,\n integer,\n jsonb,\n numeric,\n pgEnum,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload/errors'\nimport { fieldAffectsData, optionIsObject } from 'payload/types'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, IDType, PostgresAdapter } from '../types.js'\n\nimport { hasLocalesTable } from '../utilities/hasLocalesTable.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { getTableName } from './getTableName.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { validateExistingBlockIsIdentical } from './validateExistingBlockIsIdentical.js'\n\ntype Args = {\n adapter: PostgresAdapter\n buildNumbers: boolean\n buildRelationships: boolean\n buildTexts: boolean\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationsToBuild: Map<string, string>\n relationships: Set<string>\n rootRelationsToBuild?: Map<string, string>\n rootTableIDColType: string\n rootTableName: string\n versions: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof PgUUIDBuilder) parentIDColType = 'uuid'\n if (columns.id instanceof PgNumericBuilder) parentIDColType = 'numeric'\n if (columns.id instanceof PgVarcharBuilder) parentIDColType = 'varchar'\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') return\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (adapter.payload.config.localization && (field.localized || forceLocalized)) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index) &&\n !['array', 'blocks', 'group', 'point', 'relationship', 'upload'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true)\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({\n name: fieldName,\n columnName,\n tableName: newTableName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = varchar(columnName)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = varchar(columnName)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = numeric(columnName)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = jsonb(columnName)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n versions,\n })\n\n adapter.enums[enumName] = pgEnum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versions,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id')\n .references(() => adapter.tables[parentTableName].id, { onDelete: 'cascade' })\n .notNull(),\n value: adapter.enums[enumName]('value'),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n if (field.localized) {\n baseColumns.locale = adapter.enums.enum__locales('locale').notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, selectTableName)\n\n const selectTableRelations = relations(adapter.tables[selectTableName], ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n }),\n }\n\n return result\n })\n\n adapter.relations[`relation_${selectTableName}`] = selectTableRelations\n } else {\n targetTable[fieldName] = adapter.enums[enumName](fieldName)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = boolean(columnName)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id')\n .references(() => adapter.tables[parentTableName].id, { onDelete: 'cascade' })\n .notNull(),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: arrayTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n relationsToBuild.set(fieldName, arrayTableName)\n\n const arrayTableRelations = relations(adapter.tables[arrayTableName], ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`])\n }\n\n subRelationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n return result\n })\n\n adapter.relations[`relations_${arrayTableName}`] = arrayTableRelations\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = getTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id')\n .references(() => adapter.tables[rootTableName].id, { onDelete: 'cascade' })\n .notNull(),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: blockTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n const blockTableRelations = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n )\n }\n\n subRelationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n return result\n },\n )\n\n adapter.relations[`relations_${blockTableName}`] = blockTableRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n })\n }\n adapter.blockTableNames[`${rootTableName}.${toSnakeCase(block.slug)}`] = blockTableName\n rootRelationsToBuild.set(`_blocks_${block.slug}`, blockTableName)\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (tabHasLocalizedField) hasLocalizedField = true\n if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (tabHasManyTextField) hasManyTextField = true\n if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (tabHasManyNumberField) hasManyNumberField = true\n if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: parentTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (rowHasLocalizedField) hasLocalizedField = true\n if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (rowHasManyTextField) hasManyTextField = true\n if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (rowHasManyNumberField) hasManyNumberField = true\n if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => relationships.add(relation))\n } else {\n relationships.add(field.relationTo)\n }\n\n if (field.localized && adapter.payload.config.localization) {\n hasLocalizedRelationshipField = true\n }\n break\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["relations","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","boolean","index","integer","jsonb","numeric","pgEnum","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","hasLocalesTable","buildTable","createIndex","getTableName","idToUUID","parentIDColumnMap","validateExistingBlockIsIdentical","traverseFields","adapter","buildNumbers","buildRelationships","buildTexts","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationsToBuild","relationships","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","unique","includes","type","hasMany","constraintValue","fieldConstraints","tableName","mode","precision","withTimezone","enumName","prefix","target","enums","options","map","option","value","selectTableName","baseColumns","order","notNull","parent","references","tables","onDelete","baseExtraConfig","orderIdx","cols","on","parentIdx","locale","enum__locales","localeIdx","set","selectTableRelations","one","result","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDIdx","_locale","_localeIdx","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","arrayTableRelations","many","_locales","localesSuffix","val","key","blocks","block","blockTableName","_path","_pathIdx","blockTableRelations","process","env","NODE_ENV","table","blockTableNames","slug","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","Array","isArray","relationTo","relation","add","required"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
1
|
+
{"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder, UniqueConstraintBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, TabAsField } from 'payload/types'\n\nimport { relations } from 'drizzle-orm'\nimport {\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n boolean,\n index,\n integer,\n jsonb,\n numeric,\n pgEnum,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload/errors'\nimport { fieldAffectsData, optionIsObject } from 'payload/types'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, IDType, PostgresAdapter } from '../types.js'\n\nimport { hasLocalesTable } from '../utilities/hasLocalesTable.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { getTableName } from './getTableName.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { validateExistingBlockIsIdentical } from './validateExistingBlockIsIdentical.js'\n\ntype Args = {\n adapter: PostgresAdapter\n buildNumbers: boolean\n buildRelationships: boolean\n buildTexts: boolean\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationsToBuild: Map<string, string>\n relationships: Set<string>\n rootRelationsToBuild?: Map<string, string>\n rootTableIDColType: string\n rootTableName: string\n versions: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof PgUUIDBuilder) parentIDColType = 'uuid'\n if (columns.id instanceof PgNumericBuilder) parentIDColType = 'numeric'\n if (columns.id instanceof PgVarcharBuilder) parentIDColType = 'varchar'\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') return\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (adapter.payload.config.localization && (field.localized || forceLocalized)) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index) &&\n !['array', 'blocks', 'group', 'point', 'relationship', 'upload'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true)\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({\n name: fieldName,\n columnName,\n tableName: newTableName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = varchar(columnName)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = varchar(columnName)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = numeric(columnName)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = jsonb(columnName)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n adapter.enums[enumName] = pgEnum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id')\n .references(() => adapter.tables[parentTableName].id, { onDelete: 'cascade' })\n .notNull(),\n value: adapter.enums[enumName]('value'),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n if (field.localized) {\n baseColumns.locale = adapter.enums.enum__locales('locale').notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, selectTableName)\n\n const selectTableRelations = relations(adapter.tables[selectTableName], ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n }),\n }\n\n return result\n })\n\n adapter.relations[`relation_${selectTableName}`] = selectTableRelations\n } else {\n targetTable[fieldName] = adapter.enums[enumName](fieldName)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = boolean(columnName)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = getTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id')\n .references(() => adapter.tables[parentTableName].id, { onDelete: 'cascade' })\n .notNull(),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: arrayTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n relationsToBuild.set(fieldName, arrayTableName)\n\n const arrayTableRelations = relations(adapter.tables[arrayTableName], ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`])\n }\n\n subRelationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n return result\n })\n\n adapter.relations[`relations_${arrayTableName}`] = arrayTableRelations\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = getTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id')\n .references(() => adapter.tables[rootTableName].id, { onDelete: 'cascade' })\n .notNull(),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: Record<\n string,\n (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder\n > = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: blockTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n const blockTableRelations = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n )\n }\n\n subRelationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n return result\n },\n )\n\n adapter.relations[`relations_${blockTableName}`] = blockTableRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n adapter.blockTableNames[`${rootTableName}.${toSnakeCase(block.slug)}`] = blockTableName\n rootRelationsToBuild.set(`_blocks_${block.slug}`, blockTableName)\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (tabHasLocalizedField) hasLocalizedField = true\n if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (tabHasManyTextField) hasManyTextField = true\n if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (tabHasManyNumberField) hasManyNumberField = true\n if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (rowHasLocalizedField) hasLocalizedField = true\n if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (rowHasManyTextField) hasManyTextField = true\n if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (rowHasManyNumberField) hasManyNumberField = true\n if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => relationships.add(relation))\n } else {\n relationships.add(field.relationTo)\n }\n\n if (field.localized && adapter.payload.config.localization) {\n hasLocalizedRelationshipField = true\n }\n break\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["relations","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","boolean","index","integer","jsonb","numeric","pgEnum","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","hasLocalesTable","buildTable","createIndex","getTableName","idToUUID","parentIDColumnMap","validateExistingBlockIsIdentical","traverseFields","adapter","buildNumbers","buildRelationships","buildTexts","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationsToBuild","relationships","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","unique","includes","type","hasMany","constraintValue","fieldConstraints","tableName","mode","precision","withTimezone","enumName","prefix","target","enums","options","map","option","value","selectTableName","baseColumns","order","notNull","parent","references","tables","onDelete","baseExtraConfig","orderIdx","cols","on","parentIdx","locale","enum__locales","localeIdx","set","selectTableRelations","one","result","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDIdx","_locale","_localeIdx","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","arrayTableRelations","many","_locales","localesSuffix","val","key","blocks","block","blockTableName","_path","_pathIdx","blockTableRelations","process","env","NODE_ENV","table","tableLocales","blockTableNames","slug","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","Array","isArray","relationTo","relation","add","required"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
@@ -5,7 +5,8 @@ type Args = {
|
|
5
5
|
localized: boolean;
|
6
6
|
rootTableName: string;
|
7
7
|
table: GenericTable;
|
8
|
+
tableLocales?: GenericTable;
|
8
9
|
};
|
9
|
-
export declare const validateExistingBlockIsIdentical: ({ block, localized, rootTableName, table, }: Args) => void;
|
10
|
+
export declare const validateExistingBlockIsIdentical: ({ block, localized, rootTableName, table, tableLocales, }: Args) => void;
|
10
11
|
export {};
|
11
12
|
//# sourceMappingURL=validateExistingBlockIsIdentical.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;
|
1
|
+
{"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAkDD,eAAO,MAAM,gCAAgC,8DAM1C,IAAI,KAAG,IA+BT,CAAA"}
|
@@ -12,7 +12,7 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
|
|
12
12
|
return fieldsToUse;
|
13
13
|
}
|
14
14
|
if (fieldHasSubFields(field)) {
|
15
|
-
fieldPrefix = 'name' in field ? `${prefix}${field.name}
|
15
|
+
fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix;
|
16
16
|
return [
|
17
17
|
...fieldsToUse,
|
18
18
|
...getFlattenedFieldNames(field.fields, fieldPrefix)
|
@@ -22,7 +22,7 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
|
|
22
22
|
return [
|
23
23
|
...fieldsToUse,
|
24
24
|
...field.tabs.reduce((tabFields, tab)=>{
|
25
|
-
fieldPrefix = 'name' in tab ? `${prefix}
|
25
|
+
fieldPrefix = 'name' in tab ? `${prefix}_${tab.name}` : prefix;
|
26
26
|
return [
|
27
27
|
...tabFields,
|
28
28
|
...tabHasName(tab) ? [
|
@@ -38,16 +38,22 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
|
|
38
38
|
if (fieldAffectsData(field)) {
|
39
39
|
return [
|
40
40
|
...fieldsToUse,
|
41
|
-
|
41
|
+
{
|
42
|
+
name: `${fieldPrefix}${field.name}`,
|
43
|
+
localized: field.localized
|
44
|
+
}
|
42
45
|
];
|
43
46
|
}
|
44
47
|
return fieldsToUse;
|
45
48
|
}, []);
|
46
49
|
};
|
47
|
-
export const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, table })=>{
|
50
|
+
export const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, table, tableLocales })=>{
|
48
51
|
const fieldNames = getFlattenedFieldNames(block.fields);
|
49
52
|
const missingField = // ensure every field from the config is in the matching table
|
50
|
-
fieldNames.find((name
|
53
|
+
fieldNames.find(({ name, localized })=>{
|
54
|
+
const fieldTable = localized && tableLocales ? tableLocales : table;
|
55
|
+
return Object.keys(fieldTable).indexOf(name) === -1;
|
56
|
+
}) || // ensure every table column is matched for every field from the config
|
51
57
|
Object.keys(table).find((fieldName)=>{
|
52
58
|
if (![
|
53
59
|
'_locale',
|
@@ -56,11 +62,11 @@ export const validateExistingBlockIsIdentical = ({ block, localized, rootTableNa
|
|
56
62
|
'_path',
|
57
63
|
'_uuid'
|
58
64
|
].includes(fieldName)) {
|
59
|
-
return fieldNames.
|
65
|
+
return fieldNames.findIndex((field)=>field.name) === -1;
|
60
66
|
}
|
61
67
|
});
|
62
68
|
if (missingField) {
|
63
|
-
throw new InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One block includes the field ${missingField}, while the other block does not.`);
|
69
|
+
throw new InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One block includes the field ${typeof missingField === 'string' ? missingField : missingField.name}, while the other block does not.`);
|
64
70
|
}
|
65
71
|
if (Boolean(localized) !== Boolean(table._locale)) {
|
66
72
|
throw new InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"sourcesContent":["import type { Block, Field } from 'payload/types'\n\nimport { InvalidConfiguration } from 'payload/errors'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/types'\n\nimport type { GenericTable } from '../types.js'\n\ntype Args = {\n block: Block\n localized: boolean\n rootTableName: string\n table: GenericTable\n}\n\nconst getFlattenedFieldNames = (fields: Field[]
|
1
|
+
{"version":3,"sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"sourcesContent":["import type { Block, Field } from 'payload/types'\n\nimport { InvalidConfiguration } from 'payload/errors'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/types'\n\nimport type { GenericTable } from '../types.js'\n\ntype Args = {\n block: Block\n localized: boolean\n rootTableName: string\n table: GenericTable\n tableLocales?: GenericTable\n}\n\nconst getFlattenedFieldNames = (\n fields: Field[],\n prefix: string = '',\n): { localized?: boolean; name: string }[] => {\n return fields.reduce((fieldsToUse, field) => {\n let fieldPrefix = prefix\n\n if (\n ['array', 'blocks', 'relationship', 'upload'].includes(field.type) ||\n ('hasMany' in field && field.hasMany === true)\n ) {\n return fieldsToUse\n }\n\n if (fieldHasSubFields(field)) {\n fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix\n return [...fieldsToUse, ...getFlattenedFieldNames(field.fields, fieldPrefix)]\n }\n\n if (field.type === 'tabs') {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n fieldPrefix = 'name' in tab ? `${prefix}_${tab.name}` : prefix\n return [\n ...tabFields,\n ...(tabHasName(tab)\n ? [{ ...tab, type: 'tab' }]\n : getFlattenedFieldNames(tab.fields, fieldPrefix)),\n ]\n }, []),\n ]\n }\n\n if (fieldAffectsData(field)) {\n return [\n ...fieldsToUse,\n {\n name: `${fieldPrefix}${field.name}`,\n localized: field.localized,\n },\n ]\n }\n\n return fieldsToUse\n }, [])\n}\n\nexport const validateExistingBlockIsIdentical = ({\n block,\n localized,\n rootTableName,\n table,\n tableLocales,\n}: Args): void => {\n const fieldNames = getFlattenedFieldNames(block.fields)\n\n const missingField =\n // ensure every field from the config is in the matching table\n fieldNames.find(({ name, localized }) => {\n const fieldTable = localized && tableLocales ? tableLocales : table\n return Object.keys(fieldTable).indexOf(name) === -1\n }) ||\n // ensure every table column is matched for every field from the config\n Object.keys(table).find((fieldName) => {\n if (!['_locale', '_order', '_parentID', '_path', '_uuid'].includes(fieldName)) {\n return fieldNames.findIndex((field) => field.name) === -1\n }\n })\n\n if (missingField) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${\n block.slug\n }, but the schemas do not match. One block includes the field ${\n typeof missingField === 'string' ? missingField : missingField.name\n }, while the other block does not.`,\n )\n }\n\n if (Boolean(localized) !== Boolean(table._locale)) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`,\n )\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldHasSubFields","tabHasName","getFlattenedFieldNames","fields","prefix","reduce","fieldsToUse","field","fieldPrefix","includes","type","hasMany","name","tabs","tabFields","tab","localized","validateExistingBlockIsIdentical","block","rootTableName","table","tableLocales","fieldNames","missingField","find","fieldTable","Object","keys","indexOf","fieldName","findIndex","slug","Boolean","_locale"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,oBAAoB,QAAQ,iBAAgB;AACrD,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,UAAU,QAAQ,gBAAe;AAY/E,MAAMC,yBAAyB,CAC7BC,QACAC,SAAiB,EAAE;IAEnB,OAAOD,OAAOE,MAAM,CAAC,CAACC,aAAaC;QACjC,IAAIC,cAAcJ;QAElB,IACE;YAAC;YAAS;YAAU;YAAgB;SAAS,CAACK,QAAQ,CAACF,MAAMG,IAAI,KAChE,aAAaH,SAASA,MAAMI,OAAO,KAAK,MACzC;YACA,OAAOL;QACT;QAEA,IAAIN,kBAAkBO,QAAQ;YAC5BC,cAAc,UAAUD,QAAQ,CAAC,EAAEH,OAAO,EAAEG,MAAMK,IAAI,CAAC,CAAC,CAAC,GAAGR;YAC5D,OAAO;mBAAIE;mBAAgBJ,uBAAuBK,MAAMJ,MAAM,EAAEK;aAAa;QAC/E;QAEA,IAAID,MAAMG,IAAI,KAAK,QAAQ;YACzB,OAAO;mBACFJ;mBACAC,MAAMM,IAAI,CAACR,MAAM,CAAC,CAACS,WAAWC;oBAC/BP,cAAc,UAAUO,MAAM,CAAC,EAAEX,OAAO,CAAC,EAAEW,IAAIH,IAAI,CAAC,CAAC,GAAGR;oBACxD,OAAO;2BACFU;2BACCb,WAAWc,OACX;4BAAC;gCAAE,GAAGA,GAAG;gCAAEL,MAAM;4BAAM;yBAAE,GACzBR,uBAAuBa,IAAIZ,MAAM,EAAEK;qBACxC;gBACH,GAAG,EAAE;aACN;QACH;QAEA,IAAIT,iBAAiBQ,QAAQ;YAC3B,OAAO;mBACFD;gBACH;oBACEM,MAAM,CAAC,EAAEJ,YAAY,EAAED,MAAMK,IAAI,CAAC,CAAC;oBACnCI,WAAWT,MAAMS,SAAS;gBAC5B;aACD;QACH;QAEA,OAAOV;IACT,GAAG,EAAE;AACP;AAEA,OAAO,MAAMW,mCAAmC,CAAC,EAC/CC,KAAK,EACLF,SAAS,EACTG,aAAa,EACbC,KAAK,EACLC,YAAY,EACP;IACL,MAAMC,aAAapB,uBAAuBgB,MAAMf,MAAM;IAEtD,MAAMoB,eACJ,8DAA8D;IAC9DD,WAAWE,IAAI,CAAC,CAAC,EAAEZ,IAAI,EAAEI,SAAS,EAAE;QAClC,MAAMS,aAAaT,aAAaK,eAAeA,eAAeD;QAC9D,OAAOM,OAAOC,IAAI,CAACF,YAAYG,OAAO,CAAChB,UAAU,CAAC;IACpD,MACA,uEAAuE;IACvEc,OAAOC,IAAI,CAACP,OAAOI,IAAI,CAAC,CAACK;QACvB,IAAI,CAAC;YAAC;YAAW;YAAU;YAAa;YAAS;SAAQ,CAACpB,QAAQ,CAACoB,YAAY;YAC7E,OAAOP,WAAWQ,SAAS,CAAC,CAACvB,QAAUA,MAAMK,IAAI,MAAM,CAAC;QAC1D;IACF;IAEF,IAAIW,cAAc;QAChB,MAAM,IAAIzB,qBACR,CAAC,UAAU,EAAEqB,cAAc,+BAA+B,EACxDD,MAAMa,IAAI,CACX,6DAA6D,EAC5D,OAAOR,iBAAiB,WAAWA,eAAeA,aAAaX,IAAI,CACpE,iCAAiC,CAAC;IAEvC;IAEA,IAAIoB,QAAQhB,eAAegB,QAAQZ,MAAMa,OAAO,GAAG;QACjD,MAAM,IAAInC,qBACR,CAAC,UAAU,EAAEqB,cAAc,+BAA+B,EAAED,MAAMa,IAAI,CAAC,wHAAwH,CAAC;IAEpM;AACF,EAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@payloadcms/db-postgres",
|
3
|
-
"version": "3.0.0-beta.
|
3
|
+
"version": "3.0.0-beta.12",
|
4
4
|
"description": "The officially supported Postgres database adapter for Payload",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -31,10 +31,10 @@
|
|
31
31
|
"@types/pg": "8.10.2",
|
32
32
|
"@types/to-snake-case": "1.0.0",
|
33
33
|
"@payloadcms/eslint-config": "1.1.1",
|
34
|
-
"payload": "3.0.0-beta.
|
34
|
+
"payload": "3.0.0-beta.12"
|
35
35
|
},
|
36
36
|
"peerDependencies": {
|
37
|
-
"payload": "3.0.0-beta.
|
37
|
+
"payload": "3.0.0-beta.12"
|
38
38
|
},
|
39
39
|
"exports": {
|
40
40
|
".": {
|
package/src/index.ts
DELETED
@@ -1,156 +0,0 @@
|
|
1
|
-
import type { Payload } from 'payload'
|
2
|
-
import type { DatabaseAdapterObj } from 'payload/database'
|
3
|
-
|
4
|
-
import fs from 'fs'
|
5
|
-
import path from 'path'
|
6
|
-
import { createDatabaseAdapter } from 'payload/database'
|
7
|
-
|
8
|
-
import type { Args, PostgresAdapter } from './types.js'
|
9
|
-
|
10
|
-
import { connect } from './connect.js'
|
11
|
-
import { create } from './create.js'
|
12
|
-
import { createGlobal } from './createGlobal.js'
|
13
|
-
import { createGlobalVersion } from './createGlobalVersion.js'
|
14
|
-
import { createMigration } from './createMigration.js'
|
15
|
-
import { createVersion } from './createVersion.js'
|
16
|
-
import { deleteMany } from './deleteMany.js'
|
17
|
-
import { deleteOne } from './deleteOne.js'
|
18
|
-
import { deleteVersions } from './deleteVersions.js'
|
19
|
-
import { destroy } from './destroy.js'
|
20
|
-
import { find } from './find.js'
|
21
|
-
import { findGlobal } from './findGlobal.js'
|
22
|
-
import { findGlobalVersions } from './findGlobalVersions.js'
|
23
|
-
import { findOne } from './findOne.js'
|
24
|
-
import { findVersions } from './findVersions.js'
|
25
|
-
import { init } from './init.js'
|
26
|
-
import { migrate } from './migrate.js'
|
27
|
-
import { migrateDown } from './migrateDown.js'
|
28
|
-
import { migrateFresh } from './migrateFresh.js'
|
29
|
-
import { migrateRefresh } from './migrateRefresh.js'
|
30
|
-
import { migrateReset } from './migrateReset.js'
|
31
|
-
import { migrateStatus } from './migrateStatus.js'
|
32
|
-
import { queryDrafts } from './queryDrafts.js'
|
33
|
-
import { beginTransaction } from './transactions/beginTransaction.js'
|
34
|
-
import { commitTransaction } from './transactions/commitTransaction.js'
|
35
|
-
import { rollbackTransaction } from './transactions/rollbackTransaction.js'
|
36
|
-
import { updateOne } from './update.js'
|
37
|
-
import { updateGlobal } from './updateGlobal.js'
|
38
|
-
import { updateGlobalVersion } from './updateGlobalVersion.js'
|
39
|
-
import { updateVersion } from './updateVersion.js'
|
40
|
-
|
41
|
-
export type { MigrateDownArgs, MigrateUpArgs } from './types.js'
|
42
|
-
|
43
|
-
export { sql } from 'drizzle-orm'
|
44
|
-
|
45
|
-
export function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {
|
46
|
-
function adapter({ payload }: { payload: Payload }) {
|
47
|
-
const migrationDir = findMigrationDir(args.migrationDir)
|
48
|
-
const idType = args.idType || 'serial'
|
49
|
-
|
50
|
-
return createDatabaseAdapter<PostgresAdapter>({
|
51
|
-
name: 'postgres',
|
52
|
-
|
53
|
-
// Postgres-specific
|
54
|
-
blockTableNames: {},
|
55
|
-
drizzle: undefined,
|
56
|
-
enums: {},
|
57
|
-
fieldConstraints: {},
|
58
|
-
idType,
|
59
|
-
localesSuffix: args.localesSuffix || '_locales',
|
60
|
-
logger: args.logger,
|
61
|
-
pgSchema: undefined,
|
62
|
-
pool: undefined,
|
63
|
-
poolOptions: args.pool,
|
64
|
-
push: args.push,
|
65
|
-
relations: {},
|
66
|
-
relationshipsSuffix: args.relationshipsSuffix || '_rels',
|
67
|
-
schema: {},
|
68
|
-
schemaName: args.schemaName,
|
69
|
-
sessions: {},
|
70
|
-
tables: {},
|
71
|
-
versionsSuffix: args.versionsSuffix || '_v',
|
72
|
-
|
73
|
-
// DatabaseAdapter
|
74
|
-
beginTransaction,
|
75
|
-
commitTransaction,
|
76
|
-
connect,
|
77
|
-
create,
|
78
|
-
createGlobal,
|
79
|
-
createGlobalVersion,
|
80
|
-
createMigration,
|
81
|
-
createVersion,
|
82
|
-
/**
|
83
|
-
* This represents how a default ID is treated in Payload as were a field type
|
84
|
-
*/
|
85
|
-
defaultIDType: idType === 'serial' ? 'number' : 'text',
|
86
|
-
deleteMany,
|
87
|
-
deleteOne,
|
88
|
-
deleteVersions,
|
89
|
-
destroy,
|
90
|
-
find,
|
91
|
-
findGlobal,
|
92
|
-
findGlobalVersions,
|
93
|
-
findOne,
|
94
|
-
findVersions,
|
95
|
-
init,
|
96
|
-
migrate,
|
97
|
-
migrateDown,
|
98
|
-
migrateFresh,
|
99
|
-
migrateRefresh,
|
100
|
-
migrateReset,
|
101
|
-
migrateStatus,
|
102
|
-
migrationDir,
|
103
|
-
payload,
|
104
|
-
queryDrafts,
|
105
|
-
rollbackTransaction,
|
106
|
-
updateGlobal,
|
107
|
-
updateGlobalVersion,
|
108
|
-
updateOne,
|
109
|
-
updateVersion,
|
110
|
-
})
|
111
|
-
}
|
112
|
-
|
113
|
-
return {
|
114
|
-
defaultIDType: 'number',
|
115
|
-
init: adapter,
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
/**
|
120
|
-
* Attempt to find migrations directory.
|
121
|
-
*
|
122
|
-
* Checks for the following directories in order:
|
123
|
-
* - `migrationDir` argument from Payload config
|
124
|
-
* - `src/migrations`
|
125
|
-
* - `dist/migrations`
|
126
|
-
* - `migrations`
|
127
|
-
*
|
128
|
-
* Defaults to `src/migrations`
|
129
|
-
*
|
130
|
-
* @param migrationDir
|
131
|
-
* @returns
|
132
|
-
*/
|
133
|
-
function findMigrationDir(migrationDir?: string): string {
|
134
|
-
const cwd = process.cwd()
|
135
|
-
const srcDir = path.resolve(cwd, 'src/migrations')
|
136
|
-
const distDir = path.resolve(cwd, 'dist/migrations')
|
137
|
-
const relativeMigrations = path.resolve(cwd, 'migrations')
|
138
|
-
|
139
|
-
// Use arg if provided
|
140
|
-
if (migrationDir) return migrationDir
|
141
|
-
|
142
|
-
// Check other common locations
|
143
|
-
if (fs.existsSync(srcDir)) {
|
144
|
-
return srcDir
|
145
|
-
}
|
146
|
-
|
147
|
-
if (fs.existsSync(distDir)) {
|
148
|
-
return distDir
|
149
|
-
}
|
150
|
-
|
151
|
-
if (fs.existsSync(relativeMigrations)) {
|
152
|
-
return relativeMigrations
|
153
|
-
}
|
154
|
-
|
155
|
-
return srcDir
|
156
|
-
}
|