@payloadcms/db-sqlite 3.0.0-canary.e14c80d → 3.0.0-canary.e1fc0e0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +10 -3
- package/dist/connect.js.map +1 -1
- package/dist/countDistinct.d.ts.map +1 -1
- package/dist/countDistinct.js +3 -3
- package/dist/countDistinct.js.map +1 -1
- package/dist/createMigration.js +2 -2
- package/dist/createMigration.js.map +1 -1
- package/dist/defaultSnapshot.d.ts.map +1 -1
- package/dist/defaultSnapshot.js +2 -1
- package/dist/defaultSnapshot.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +23 -4
- package/dist/init.js.map +1 -1
- package/dist/schema/build.d.ts +13 -2
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +44 -11
- package/dist/schema/build.js.map +1 -1
- package/dist/schema/createIndex.d.ts +2 -3
- package/dist/schema/createIndex.d.ts.map +1 -1
- package/dist/schema/createIndex.js +5 -3
- package/dist/schema/createIndex.js.map +1 -1
- package/dist/schema/traverseFields.d.ts +9 -2
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +195 -72
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/schema/withDefault.d.ts.map +1 -1
- package/dist/schema/withDefault.js +3 -1
- package/dist/schema/withDefault.js.map +1 -1
- package/dist/types.d.ts +30 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +11 -9
package/dist/connect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAQtC,eAAO,MAAM,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAQtC,eAAO,MAAM,OAAO,EAAE,OAoDrB,CAAA"}
|
package/dist/connect.js
CHANGED
|
@@ -28,15 +28,22 @@ export const connect = async function connect(options = {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
} catch (err) {
|
|
31
|
-
this.payload.logger.error(
|
|
32
|
-
|
|
31
|
+
this.payload.logger.error({
|
|
32
|
+
err,
|
|
33
|
+
msg: `Error: cannot connect to SQLite: ${err.message}`
|
|
34
|
+
});
|
|
35
|
+
if (typeof this.rejectInitializing === 'function') {
|
|
36
|
+
this.rejectInitializing();
|
|
37
|
+
}
|
|
33
38
|
process.exit(1);
|
|
34
39
|
}
|
|
35
40
|
// Only push schema if not in production
|
|
36
41
|
if (process.env.NODE_ENV !== 'production' && process.env.PAYLOAD_MIGRATING !== 'true' && this.push !== false) {
|
|
37
42
|
await pushDevSchema(this);
|
|
38
43
|
}
|
|
39
|
-
if (typeof this.resolveInitializing === 'function')
|
|
44
|
+
if (typeof this.resolveInitializing === 'function') {
|
|
45
|
+
this.resolveInitializing();
|
|
46
|
+
}
|
|
40
47
|
if (process.env.NODE_ENV === 'production' && this.prodMigrations) {
|
|
41
48
|
await this.migrate({
|
|
42
49
|
migrations: this.prodMigrations
|
package/dist/connect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { DrizzleAdapter } from '@payloadcms/drizzle/types'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { Connect } from 'payload'\n\nimport { createClient } from '@libsql/client'\nimport { pushDevSchema } from '@payloadcms/drizzle'\nimport { drizzle } from 'drizzle-orm/libsql'\n\nimport type { SQLiteAdapter } from './types.js'\n\nexport const connect: Connect = async function connect(\n this: SQLiteAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n this.schema = {\n ...this.tables,\n ...this.relations,\n }\n\n try {\n if (!this.client) {\n this.client = createClient(this.clientConfig)\n }\n\n const logger = this.logger || false\n this.drizzle = drizzle(this.client, { logger, schema: this.schema })
|
|
1
|
+
{"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { DrizzleAdapter } from '@payloadcms/drizzle/types'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { Connect } from 'payload'\n\nimport { createClient } from '@libsql/client'\nimport { pushDevSchema } from '@payloadcms/drizzle'\nimport { drizzle } from 'drizzle-orm/libsql'\n\nimport type { SQLiteAdapter } from './types.js'\n\nexport const connect: Connect = async function connect(\n this: SQLiteAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n this.schema = {\n ...this.tables,\n ...this.relations,\n }\n\n try {\n if (!this.client) {\n this.client = createClient(this.clientConfig)\n }\n\n const logger = this.logger || false\n this.drizzle = drizzle(this.client, { logger, schema: this.schema })\n\n if (!hotReload) {\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info(`---- DROPPING TABLES ----`)\n await this.dropDatabase({ adapter: this })\n this.payload.logger.info('---- DROPPED TABLES ----')\n }\n }\n } catch (err) {\n this.payload.logger.error({ err, msg: `Error: cannot connect to SQLite: ${err.message}` })\n if (typeof this.rejectInitializing === 'function') {\n this.rejectInitializing()\n }\n process.exit(1)\n }\n\n // Only push schema if not in production\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_MIGRATING !== 'true' &&\n this.push !== false\n ) {\n await pushDevSchema(this as unknown as DrizzleAdapter)\n }\n\n if (typeof this.resolveInitializing === 'function') {\n this.resolveInitializing()\n }\n\n if (process.env.NODE_ENV === 'production' && this.prodMigrations) {\n await this.migrate({ migrations: this.prodMigrations })\n }\n}\n"],"names":["createClient","pushDevSchema","drizzle","connect","options","hotReload","schema","tables","relations","client","clientConfig","logger","process","env","PAYLOAD_DROP_DATABASE","payload","info","dropDatabase","adapter","err","error","msg","message","rejectInitializing","exit","NODE_ENV","PAYLOAD_MIGRATING","push","resolveInitializing","prodMigrations","migrate","migrations"],"mappings":"AAIA,SAASA,YAAY,QAAQ,iBAAgB;AAC7C,SAASC,aAAa,QAAQ,sBAAqB;AACnD,SAASC,OAAO,QAAQ,qBAAoB;AAI5C,OAAO,MAAMC,UAAmB,eAAeA,QAE7CC,UAAU;IACRC,WAAW;AACb,CAAC;IAED,MAAM,EAAEA,SAAS,EAAE,GAAGD;IAEtB,IAAI,CAACE,MAAM,GAAG;QACZ,GAAG,IAAI,CAACC,MAAM;QACd,GAAG,IAAI,CAACC,SAAS;IACnB;IAEA,IAAI;QACF,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;YAChB,IAAI,CAACA,MAAM,GAAGT,aAAa,IAAI,CAACU,YAAY;QAC9C;QAEA,MAAMC,SAAS,IAAI,CAACA,MAAM,IAAI;QAC9B,IAAI,CAACT,OAAO,GAAGA,QAAQ,IAAI,CAACO,MAAM,EAAE;YAAEE;YAAQL,QAAQ,IAAI,CAACA,MAAM;QAAC;QAElE,IAAI,CAACD,WAAW;YACd,IAAIO,QAAQC,GAAG,CAACC,qBAAqB,KAAK,QAAQ;gBAChD,IAAI,CAACC,OAAO,CAACJ,MAAM,CAACK,IAAI,CAAC,CAAC,yBAAyB,CAAC;gBACpD,MAAM,IAAI,CAACC,YAAY,CAAC;oBAAEC,SAAS,IAAI;gBAAC;gBACxC,IAAI,CAACH,OAAO,CAACJ,MAAM,CAACK,IAAI,CAAC;YAC3B;QACF;IACF,EAAE,OAAOG,KAAK;QACZ,IAAI,CAACJ,OAAO,CAACJ,MAAM,CAACS,KAAK,CAAC;YAAED;YAAKE,KAAK,CAAC,iCAAiC,EAAEF,IAAIG,OAAO,CAAC,CAAC;QAAC;QACxF,IAAI,OAAO,IAAI,CAACC,kBAAkB,KAAK,YAAY;YACjD,IAAI,CAACA,kBAAkB;QACzB;QACAX,QAAQY,IAAI,CAAC;IACf;IAEA,wCAAwC;IACxC,IACEZ,QAAQC,GAAG,CAACY,QAAQ,KAAK,gBACzBb,QAAQC,GAAG,CAACa,iBAAiB,KAAK,UAClC,IAAI,CAACC,IAAI,KAAK,OACd;QACA,MAAM1B,cAAc,IAAI;IAC1B;IAEA,IAAI,OAAO,IAAI,CAAC2B,mBAAmB,KAAK,YAAY;QAClD,IAAI,CAACA,mBAAmB;IAC1B;IAEA,IAAIhB,QAAQC,GAAG,CAACY,QAAQ,KAAK,gBAAgB,IAAI,CAACI,cAAc,EAAE;QAChE,MAAM,IAAI,CAACC,OAAO,CAAC;YAAEC,YAAY,IAAI,CAACF,cAAc;QAAC;IACvD;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../src/countDistinct.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAE9D,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../src/countDistinct.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAE9D,eAAO,MAAM,aAAa,EAAE,aA4B3B,CAAA"}
|
package/dist/countDistinct.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { chainMethods } from '@payloadcms/drizzle';
|
|
2
|
-
import { sql } from 'drizzle-orm';
|
|
2
|
+
import { count, sql } from 'drizzle-orm';
|
|
3
3
|
export const countDistinct = async function countDistinct({ db, joins, tableName, where }) {
|
|
4
4
|
const chainedMethods = [];
|
|
5
5
|
joins.forEach(({ condition, table })=>{
|
|
@@ -14,8 +14,8 @@ export const countDistinct = async function countDistinct({ db, joins, tableName
|
|
|
14
14
|
const countResult = await chainMethods({
|
|
15
15
|
methods: chainedMethods,
|
|
16
16
|
query: db.select({
|
|
17
|
-
count: sql`count
|
|
18
|
-
|
|
17
|
+
count: joins.length > 0 ? sql`count
|
|
18
|
+
(DISTINCT ${this.tables[tableName].id})`.mapWith(Number) : count()
|
|
19
19
|
}).from(this.tables[tableName]).where(where)
|
|
20
20
|
});
|
|
21
21
|
return Number(countResult[0].count);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/countDistinct.ts"],"sourcesContent":["import type { ChainedMethods } from '@payloadcms/drizzle/types'\n\nimport { chainMethods } from '@payloadcms/drizzle'\nimport { sql } from 'drizzle-orm'\n\nimport type { CountDistinct, SQLiteAdapter } from './types.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: SQLiteAdapter,\n { db, joins, tableName, where },\n) {\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: db\n .select({\n count
|
|
1
|
+
{"version":3,"sources":["../src/countDistinct.ts"],"sourcesContent":["import type { ChainedMethods } from '@payloadcms/drizzle/types'\n\nimport { chainMethods } from '@payloadcms/drizzle'\nimport { count, sql } from 'drizzle-orm'\n\nimport type { CountDistinct, SQLiteAdapter } from './types.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: SQLiteAdapter,\n { db, joins, tableName, where },\n) {\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: db\n .select({\n count:\n joins.length > 0\n ? sql`count\n (DISTINCT ${this.tables[tableName].id})`.mapWith(Number)\n : count(),\n })\n .from(this.tables[tableName])\n .where(where),\n })\n\n return Number(countResult[0].count)\n}\n"],"names":["chainMethods","count","sql","countDistinct","db","joins","tableName","where","chainedMethods","forEach","condition","table","push","args","method","countResult","methods","query","select","length","tables","id","mapWith","Number","from"],"mappings":"AAEA,SAASA,YAAY,QAAQ,sBAAqB;AAClD,SAASC,KAAK,EAAEC,GAAG,QAAQ,cAAa;AAIxC,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,MAAMC,iBAAiC,EAAE;IAEzCH,MAAMI,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACjCH,eAAeI,IAAI,CAAC;YAClBC,MAAM;gBAACF;gBAAOD;aAAU;YACxBI,QAAQ;QACV;IACF;IAEA,MAAMC,cAAc,MAAMf,aAAa;QACrCgB,SAASR;QACTS,OAAOb,GACJc,MAAM,CAAC;YACNjB,OACEI,MAAMc,MAAM,GAAG,IACXjB,GAAG,CAAC;cACJ,EAAE,IAAI,CAACkB,MAAM,CAACd,UAAU,CAACe,EAAE,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,UACvCtB;QACR,GACCuB,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACd,UAAU,EAC3BC,KAAK,CAACA;IACX;IAEA,OAAOgB,OAAOR,WAAW,CAAC,EAAE,CAACd,KAAK;AACpC,EAAC"}
|
package/dist/createMigration.js
CHANGED
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from 'url';
|
|
|
7
7
|
import { defaultDrizzleSnapshot } from './defaultSnapshot.js';
|
|
8
8
|
import { getMigrationTemplate } from './getMigrationTemplate.js';
|
|
9
9
|
const require = createRequire(import.meta.url);
|
|
10
|
-
export const createMigration = async function createMigration({ file, forceAcceptWarning, migrationName, payload }) {
|
|
10
|
+
export const createMigration = async function createMigration({ file, forceAcceptWarning, migrationName, payload, skipVerify }) {
|
|
11
11
|
const filename = fileURLToPath(import.meta.url);
|
|
12
12
|
const dirname = path.dirname(filename);
|
|
13
13
|
const dir = payload.db.migrationDir;
|
|
@@ -49,7 +49,7 @@ export const createMigration = async function createMigration({ file, forceAccep
|
|
|
49
49
|
if (sqlStatementsDown?.length) {
|
|
50
50
|
downSQL = sqlStatementsDown.map((statement)=>`${sqlExecute}${statement?.replaceAll('`', '\\`')}\`)`).join('\n');
|
|
51
51
|
}
|
|
52
|
-
if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {
|
|
52
|
+
if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning && !skipVerify) {
|
|
53
53
|
const { confirm: shouldCreateBlankMigration } = await prompts({
|
|
54
54
|
name: 'confirm',
|
|
55
55
|
type: 'confirm',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\nimport { fileURLToPath } from 'url'\n\nimport type { SQLiteAdapter } from './types.js'\n\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nconst require = createRequire(import.meta.url)\n\nexport const createMigration: CreateMigration = async function createMigration(\n this: SQLiteAdapter,\n { file, forceAcceptWarning, migrationName, payload },\n) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const { generateSQLiteDrizzleJson, generateSQLiteMigration } = require('drizzle-kit/api')\n const drizzleJsonAfter = await generateSQLiteDrizzleJson(this.schema)\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n ;({ downSQL, imports, upSQL } = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n }))\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n let drizzleJsonBefore = defaultDrizzleSnapshot as any\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n }\n\n const sqlStatementsUp = await generateSQLiteMigration(drizzleJsonBefore, drizzleJsonAfter)\n const sqlStatementsDown = await generateSQLiteMigration(drizzleJsonAfter, drizzleJsonBefore)\n // need to create tables as separate statements\n const sqlExecute = 'await payload.db.drizzle.run(sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = sqlStatementsUp\n .map((statement) => `${sqlExecute}${statement?.replaceAll('`', '\\\\`')}\\`)`)\n .join('\\n')\n }\n if (sqlStatementsDown?.length) {\n downSQL = sqlStatementsDown\n .map((statement) => `${sqlExecute}${statement?.replaceAll('`', '\\\\`')}\\`)`)\n .join('\\n')\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n const { confirm: shouldCreateBlankMigration } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!shouldCreateBlankMigration) {\n process.exit(0)\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n // write migration\n fs.writeFileSync(\n `${filePath}.ts`,\n getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n upSQL: upSQL || ` // Migration code`,\n }),\n )\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}.ts` })\n}\n"],"names":["fs","createRequire","path","getPredefinedMigration","writeMigrationIndex","prompts","fileURLToPath","defaultDrizzleSnapshot","getMigrationTemplate","require","url","createMigration","file","forceAcceptWarning","migrationName","payload","filename","dirname","dir","db","migrationDir","existsSync","mkdirSync","generateSQLiteDrizzleJson","generateSQLiteMigration","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","timestamp","name","slice","join","fileName","filePath","drizzleJsonBefore","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","map","statement","replaceAll","confirm","shouldCreateBlankMigration","type","initial","message","onCancel","process","exit","writeFileSync","stringify","migrationsDir","logger","info","msg"],"mappings":"AAGA,OAAOA,QAAQ,KAAI;AACnB,SAASC,aAAa,QAAQ,SAAQ;AACtC,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,UAAS;AACrE,OAAOC,aAAa,UAAS;AAC7B,SAASC,aAAa,QAAQ,MAAK;AAInC,SAASC,sBAAsB,QAAQ,uBAAsB;AAC7D,SAASC,oBAAoB,QAAQ,4BAA2B;AAEhE,MAAMC,UAAUR,cAAc,YAAYS,GAAG;AAE7C,OAAO,MAAMC,kBAAmC,eAAeA,gBAE7D,EAAEC,IAAI,EAAEC,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\nimport { fileURLToPath } from 'url'\n\nimport type { SQLiteAdapter } from './types.js'\n\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nconst require = createRequire(import.meta.url)\n\nexport const createMigration: CreateMigration = async function createMigration(\n this: SQLiteAdapter,\n { file, forceAcceptWarning, migrationName, payload, skipVerify },\n) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const { generateSQLiteDrizzleJson, generateSQLiteMigration } = require('drizzle-kit/api')\n const drizzleJsonAfter = await generateSQLiteDrizzleJson(this.schema)\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n ;({ downSQL, imports, upSQL } = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n }))\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n let drizzleJsonBefore = defaultDrizzleSnapshot as any\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n }\n\n const sqlStatementsUp = await generateSQLiteMigration(drizzleJsonBefore, drizzleJsonAfter)\n const sqlStatementsDown = await generateSQLiteMigration(drizzleJsonAfter, drizzleJsonBefore)\n // need to create tables as separate statements\n const sqlExecute = 'await payload.db.drizzle.run(sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = sqlStatementsUp\n .map((statement) => `${sqlExecute}${statement?.replaceAll('`', '\\\\`')}\\`)`)\n .join('\\n')\n }\n if (sqlStatementsDown?.length) {\n downSQL = sqlStatementsDown\n .map((statement) => `${sqlExecute}${statement?.replaceAll('`', '\\\\`')}\\`)`)\n .join('\\n')\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning && !skipVerify) {\n const { confirm: shouldCreateBlankMigration } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!shouldCreateBlankMigration) {\n process.exit(0)\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n // write migration\n fs.writeFileSync(\n `${filePath}.ts`,\n getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n upSQL: upSQL || ` // Migration code`,\n }),\n )\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}.ts` })\n}\n"],"names":["fs","createRequire","path","getPredefinedMigration","writeMigrationIndex","prompts","fileURLToPath","defaultDrizzleSnapshot","getMigrationTemplate","require","url","createMigration","file","forceAcceptWarning","migrationName","payload","skipVerify","filename","dirname","dir","db","migrationDir","existsSync","mkdirSync","generateSQLiteDrizzleJson","generateSQLiteMigration","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","timestamp","name","slice","join","fileName","filePath","drizzleJsonBefore","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","map","statement","replaceAll","confirm","shouldCreateBlankMigration","type","initial","message","onCancel","process","exit","writeFileSync","stringify","migrationsDir","logger","info","msg"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../src/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAEhE,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../src/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAEhE,eAAO,MAAM,sBAAsB,EAAE,yBAYpC,CAAA"}
|
package/dist/defaultSnapshot.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaultSnapshot.ts"],"sourcesContent":["import type { DrizzleSQLiteSnapshotJSON } from 'drizzle-kit/api'\n\nexport const defaultDrizzleSnapshot: DrizzleSQLiteSnapshotJSON = {\n id: '00000000-0000-0000-0000-000000000000',\n _meta: {\n columns: {},\n tables: {},\n },\n dialect: 'sqlite',\n enums: {},\n prevId: '00000000-0000-0000-0000-00000000000',\n tables: {},\n version: '6',\n}\n"],"names":["defaultDrizzleSnapshot","id","_meta","columns","tables","dialect","enums","prevId","version"],"mappings":"AAEA,OAAO,MAAMA,yBAAoD;IAC/DC,IAAI;IACJC,OAAO;QACLC,SAAS,CAAC;QACVC,QAAQ,CAAC;IACX;IACAC,SAAS;IACTC,OAAO,CAAC;IACRC,QAAQ;IACRH,QAAQ,CAAC;IACTI,SAAS;
|
|
1
|
+
{"version":3,"sources":["../src/defaultSnapshot.ts"],"sourcesContent":["import type { DrizzleSQLiteSnapshotJSON } from 'drizzle-kit/api'\n\nexport const defaultDrizzleSnapshot: DrizzleSQLiteSnapshotJSON = {\n id: '00000000-0000-0000-0000-000000000000',\n _meta: {\n columns: {},\n tables: {},\n },\n dialect: 'sqlite',\n enums: {},\n prevId: '00000000-0000-0000-0000-00000000000',\n tables: {},\n version: '6',\n views: {},\n}\n"],"names":["defaultDrizzleSnapshot","id","_meta","columns","tables","dialect","enums","prevId","version","views"],"mappings":"AAEA,OAAO,MAAMA,yBAAoD;IAC/DC,IAAI;IACJC,OAAO;QACLC,SAAS,CAAC;QACVC,QAAQ,CAAC;IACX;IACAC,SAAS;IACTC,OAAO,CAAC;IACRC,QAAQ;IACRH,QAAQ,CAAC;IACTI,SAAS;IACTC,OAAO,CAAC;AACV,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,EAAW,MAAM,SAAS,CAAA;AAqC1D,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAgBrD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAA;AAqC1D,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAgBrD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAC,CA0G3E"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { beginTransaction, commitTransaction, count, create, createGlobal, createGlobalVersion, createVersion, deleteMany, deleteOne, deleteVersions, destroy, find, findGlobal, findGlobalVersions, findMigrationDir, findOne, findVersions, migrate, migrateDown, migrateFresh, migrateRefresh, migrateReset, migrateStatus, operatorMap, queryDrafts, rollbackTransaction, updateGlobal, updateGlobalVersion, updateOne, updateVersion } from '@payloadcms/drizzle';
|
|
2
2
|
import { like } from 'drizzle-orm';
|
|
3
|
-
import { createDatabaseAdapter } from 'payload';
|
|
3
|
+
import { createDatabaseAdapter, defaultBeginTransaction } from 'payload';
|
|
4
4
|
import { connect } from './connect.js';
|
|
5
5
|
import { countDistinct } from './countDistinct.js';
|
|
6
6
|
import { convertPathToJSONTraversal } from './createJSONQuery/convertPathToJSONTraversal.js';
|
|
@@ -34,6 +34,8 @@ export function sqliteAdapter(args) {
|
|
|
34
34
|
};
|
|
35
35
|
return createDatabaseAdapter({
|
|
36
36
|
name: 'sqlite',
|
|
37
|
+
afterSchemaInit: args.afterSchemaInit ?? [],
|
|
38
|
+
beforeSchemaInit: args.beforeSchemaInit ?? [],
|
|
37
39
|
client: undefined,
|
|
38
40
|
clientConfig: args.client,
|
|
39
41
|
defaultDrizzleSnapshot,
|
|
@@ -60,7 +62,7 @@ export function sqliteAdapter(args) {
|
|
|
60
62
|
transactionOptions: args.transactionOptions || undefined,
|
|
61
63
|
versionsSuffix: args.versionsSuffix || '_v',
|
|
62
64
|
// DatabaseAdapter
|
|
63
|
-
beginTransaction: args.transactionOptions ? beginTransaction :
|
|
65
|
+
beginTransaction: args.transactionOptions ? beginTransaction : defaultBeginTransaction(),
|
|
64
66
|
commitTransaction,
|
|
65
67
|
connect,
|
|
66
68
|
convertPathToJSONTraversal,
|
|
@@ -85,6 +87,7 @@ export function sqliteAdapter(args) {
|
|
|
85
87
|
findGlobalVersions,
|
|
86
88
|
findOne,
|
|
87
89
|
findVersions,
|
|
90
|
+
indexes: new Set(),
|
|
88
91
|
init,
|
|
89
92
|
insert,
|
|
90
93
|
migrate,
|
|
@@ -94,6 +97,7 @@ export function sqliteAdapter(args) {
|
|
|
94
97
|
migrateReset,
|
|
95
98
|
migrateStatus,
|
|
96
99
|
migrationDir,
|
|
100
|
+
packageName: '@payloadcms/db-sqlite',
|
|
97
101
|
payload,
|
|
98
102
|
queryDrafts,
|
|
99
103
|
rejectInitializing,
|
|
@@ -103,7 +107,8 @@ export function sqliteAdapter(args) {
|
|
|
103
107
|
updateGlobal,
|
|
104
108
|
updateGlobalVersion,
|
|
105
109
|
updateOne,
|
|
106
|
-
updateVersion
|
|
110
|
+
updateVersion,
|
|
111
|
+
upsert: updateOne
|
|
107
112
|
});
|
|
108
113
|
}
|
|
109
114
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Operators } from '@payloadcms/drizzle'\nimport type { DatabaseAdapterObj, Payload } from 'payload'\n\nimport {\n beginTransaction,\n commitTransaction,\n count,\n create,\n createGlobal,\n createGlobalVersion,\n createVersion,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findMigrationDir,\n findOne,\n findVersions,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n operatorMap,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n} from '@payloadcms/drizzle'\nimport { like } from 'drizzle-orm'\nimport { createDatabaseAdapter } from 'payload'\n\nimport type { Args, SQLiteAdapter } from './types.js'\n\nimport { connect } from './connect.js'\nimport { countDistinct } from './countDistinct.js'\nimport { convertPathToJSONTraversal } from './createJSONQuery/convertPathToJSONTraversal.js'\nimport { createJSONQuery } from './createJSONQuery/index.js'\nimport { createMigration } from './createMigration.js'\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { deleteWhere } from './deleteWhere.js'\nimport { dropDatabase } from './dropDatabase.js'\nimport { execute } from './execute.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\nimport { init } from './init.js'\nimport { insert } from './insert.js'\nimport { requireDrizzleKit } from './requireDrizzleKit.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport { sql } from 'drizzle-orm'\n\nexport function sqliteAdapter(args: Args): DatabaseAdapterObj<SQLiteAdapter> {\n const postgresIDType = args.idType || 'serial'\n const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text'\n\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n let resolveInitializing\n let rejectInitializing\n\n const initializing = new Promise<void>((res, rej) => {\n resolveInitializing = res\n rejectInitializing = rej\n })\n\n // sqlite's like operator is case-insensitive, so we overwrite the DrizzleAdapter operators to not use ilike\n const operators = {\n ...operatorMap,\n contains: like,\n like,\n } as unknown as Operators\n\n return createDatabaseAdapter<SQLiteAdapter>({\n name: 'sqlite',\n client: undefined,\n clientConfig: args.client,\n defaultDrizzleSnapshot,\n drizzle: undefined,\n features: {\n json: true,\n },\n fieldConstraints: {},\n getMigrationTemplate,\n idType: postgresIDType,\n initializing,\n localesSuffix: args.localesSuffix || '_locales',\n logger: args.logger,\n operators,\n prodMigrations: args.prodMigrations,\n push: args.push,\n relations: {},\n relationshipsSuffix: args.relationshipsSuffix || '_rels',\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tableNameMap: new Map<string, string>(),\n tables: {},\n transactionOptions: args.transactionOptions || undefined,\n versionsSuffix: args.versionsSuffix || '_v',\n\n // DatabaseAdapter\n beginTransaction: args.transactionOptions ? beginTransaction :
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Operators } from '@payloadcms/drizzle'\nimport type { DatabaseAdapterObj, Payload } from 'payload'\n\nimport {\n beginTransaction,\n commitTransaction,\n count,\n create,\n createGlobal,\n createGlobalVersion,\n createVersion,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findMigrationDir,\n findOne,\n findVersions,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n operatorMap,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n} from '@payloadcms/drizzle'\nimport { like } from 'drizzle-orm'\nimport { createDatabaseAdapter, defaultBeginTransaction } from 'payload'\n\nimport type { Args, SQLiteAdapter } from './types.js'\n\nimport { connect } from './connect.js'\nimport { countDistinct } from './countDistinct.js'\nimport { convertPathToJSONTraversal } from './createJSONQuery/convertPathToJSONTraversal.js'\nimport { createJSONQuery } from './createJSONQuery/index.js'\nimport { createMigration } from './createMigration.js'\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { deleteWhere } from './deleteWhere.js'\nimport { dropDatabase } from './dropDatabase.js'\nimport { execute } from './execute.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\nimport { init } from './init.js'\nimport { insert } from './insert.js'\nimport { requireDrizzleKit } from './requireDrizzleKit.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport { sql } from 'drizzle-orm'\n\nexport function sqliteAdapter(args: Args): DatabaseAdapterObj<SQLiteAdapter> {\n const postgresIDType = args.idType || 'serial'\n const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text'\n\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n let resolveInitializing\n let rejectInitializing\n\n const initializing = new Promise<void>((res, rej) => {\n resolveInitializing = res\n rejectInitializing = rej\n })\n\n // sqlite's like operator is case-insensitive, so we overwrite the DrizzleAdapter operators to not use ilike\n const operators = {\n ...operatorMap,\n contains: like,\n like,\n } as unknown as Operators\n\n return createDatabaseAdapter<SQLiteAdapter>({\n name: 'sqlite',\n afterSchemaInit: args.afterSchemaInit ?? [],\n beforeSchemaInit: args.beforeSchemaInit ?? [],\n client: undefined,\n clientConfig: args.client,\n defaultDrizzleSnapshot,\n drizzle: undefined,\n features: {\n json: true,\n },\n fieldConstraints: {},\n getMigrationTemplate,\n idType: postgresIDType,\n initializing,\n localesSuffix: args.localesSuffix || '_locales',\n logger: args.logger,\n operators,\n prodMigrations: args.prodMigrations,\n push: args.push,\n relations: {},\n relationshipsSuffix: args.relationshipsSuffix || '_rels',\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tableNameMap: new Map<string, string>(),\n tables: {},\n transactionOptions: args.transactionOptions || undefined,\n versionsSuffix: args.versionsSuffix || '_v',\n\n // DatabaseAdapter\n beginTransaction: args.transactionOptions ? beginTransaction : defaultBeginTransaction(),\n commitTransaction,\n connect,\n convertPathToJSONTraversal,\n count,\n countDistinct,\n create,\n createGlobal,\n createGlobalVersion,\n createJSONQuery,\n createMigration,\n createVersion,\n defaultIDType: payloadIDType,\n deleteMany,\n deleteOne,\n deleteVersions,\n deleteWhere,\n destroy,\n dropDatabase,\n execute,\n find,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n indexes: new Set<string>(),\n init,\n insert,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n migrationDir,\n packageName: '@payloadcms/db-sqlite',\n payload,\n queryDrafts,\n rejectInitializing,\n requireDrizzleKit,\n resolveInitializing,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n upsert: updateOne,\n })\n }\n\n return {\n defaultIDType: payloadIDType,\n init: adapter,\n }\n}\n"],"names":["beginTransaction","commitTransaction","count","create","createGlobal","createGlobalVersion","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","rollbackTransaction","updateGlobal","updateGlobalVersion","updateOne","updateVersion","like","createDatabaseAdapter","defaultBeginTransaction","connect","countDistinct","convertPathToJSONTraversal","createJSONQuery","createMigration","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","getMigrationTemplate","init","insert","requireDrizzleKit","sql","sqliteAdapter","args","postgresIDType","idType","payloadIDType","adapter","payload","migrationDir","resolveInitializing","rejectInitializing","initializing","Promise","res","rej","operators","contains","name","afterSchemaInit","beforeSchemaInit","client","undefined","clientConfig","drizzle","features","json","fieldConstraints","localesSuffix","logger","prodMigrations","push","relations","relationshipsSuffix","schema","schemaName","sessions","tableNameMap","Map","tables","transactionOptions","versionsSuffix","defaultIDType","indexes","Set","packageName","upsert"],"mappings":"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"}
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAY9D,eAAO,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAY9D,eAAO,MAAM,IAAI,EAAE,IA6HlB,CAAA"}
|
package/dist/init.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { createTableName } from '@payloadcms/drizzle';
|
|
1
|
+
import { createTableName, executeSchemaHooks } from '@payloadcms/drizzle';
|
|
2
2
|
import { uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
3
3
|
import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload';
|
|
4
4
|
import toSnakeCase from 'to-snake-case';
|
|
5
5
|
import { buildTable } from './schema/build.js';
|
|
6
|
-
export const init = function init() {
|
|
6
|
+
export const init = async function init() {
|
|
7
7
|
let locales;
|
|
8
|
+
await executeSchemaHooks({
|
|
9
|
+
type: 'beforeSchemaInit',
|
|
10
|
+
adapter: this
|
|
11
|
+
});
|
|
8
12
|
if (this.payload.config.localization) {
|
|
9
13
|
locales = this.payload.config.localization.locales.map(({ code })=>code);
|
|
10
14
|
}
|
|
@@ -24,6 +28,7 @@ export const init = function init() {
|
|
|
24
28
|
});
|
|
25
29
|
this.payload.config.collections.forEach((collection)=>{
|
|
26
30
|
const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
|
|
31
|
+
const config = this.payload.config;
|
|
27
32
|
const baseExtraConfig = {};
|
|
28
33
|
if (collection.upload.filenameCompoundIndex) {
|
|
29
34
|
const indexName = `${tableName}_filename_compound_idx`;
|
|
@@ -34,6 +39,15 @@ export const init = function init() {
|
|
|
34
39
|
return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1));
|
|
35
40
|
};
|
|
36
41
|
}
|
|
42
|
+
if (collection.upload.filenameCompoundIndex) {
|
|
43
|
+
const indexName = `${tableName}_filename_compound_idx`;
|
|
44
|
+
baseExtraConfig.filename_compound_index = (cols)=>{
|
|
45
|
+
const colsConstraint = collection.upload.filenameCompoundIndex.map((f)=>{
|
|
46
|
+
return cols[f];
|
|
47
|
+
});
|
|
48
|
+
return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1));
|
|
49
|
+
};
|
|
50
|
+
}
|
|
37
51
|
buildTable({
|
|
38
52
|
adapter: this,
|
|
39
53
|
disableNotNull: !!collection?.versions?.drafts,
|
|
@@ -46,7 +60,7 @@ export const init = function init() {
|
|
|
46
60
|
});
|
|
47
61
|
if (collection.versions) {
|
|
48
62
|
const versionsTableName = this.tableNameMap.get(`_${toSnakeCase(collection.slug)}${this.versionsSuffix}`);
|
|
49
|
-
const versionFields = buildVersionCollectionFields(collection);
|
|
63
|
+
const versionFields = buildVersionCollectionFields(config, collection);
|
|
50
64
|
buildTable({
|
|
51
65
|
adapter: this,
|
|
52
66
|
disableNotNull: !!collection.versions?.drafts,
|
|
@@ -81,7 +95,8 @@ export const init = function init() {
|
|
|
81
95
|
versions: true,
|
|
82
96
|
versionsCustomName: true
|
|
83
97
|
});
|
|
84
|
-
const
|
|
98
|
+
const config = this.payload.config;
|
|
99
|
+
const versionFields = buildVersionGlobalFields(config, global);
|
|
85
100
|
buildTable({
|
|
86
101
|
adapter: this,
|
|
87
102
|
disableNotNull: !!global.versions?.drafts,
|
|
@@ -94,6 +109,10 @@ export const init = function init() {
|
|
|
94
109
|
});
|
|
95
110
|
}
|
|
96
111
|
});
|
|
112
|
+
await executeSchemaHooks({
|
|
113
|
+
type: 'afterSchemaInit',
|
|
114
|
+
adapter: this
|
|
115
|
+
});
|
|
97
116
|
};
|
|
98
117
|
|
|
99
118
|
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/init.ts"],"sourcesContent":["import type { DrizzleAdapter } from '@payloadcms/drizzle/types'\nimport type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport { createTableName } from '@payloadcms/drizzle'\nimport { uniqueIndex } from 'drizzle-orm/sqlite-core'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BaseExtraConfig } from './schema/build.js'\nimport type { SQLiteAdapter } from './types.js'\n\nimport { buildTable } from './schema/build.js'\n\nexport const init: Init = function init(this: SQLiteAdapter) {\n let locales: [string, ...string[]] | undefined\n if (this.payload.config.localization) {\n locales = this.payload.config.localization.locales.map(({ code }) => code) as [\n string,\n ...string[],\n ]\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n\n const baseExtraConfig: BaseExtraConfig = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseExtraConfig.filename_compound_index = (cols) => {\n const colsConstraint = collection.upload.filenameCompoundIndex.map((f) => {\n return cols[f]\n })\n return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1))\n }\n }\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.fields,\n locales,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = this.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${this.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(collection)\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n locales,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n this.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: global,\n })\n\n buildTable({\n adapter: this,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.fields,\n locales,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const versionFields = buildVersionGlobalFields(global)\n\n buildTable({\n adapter: this,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n locales,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n}\n"],"names":["createTableName","uniqueIndex","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","buildTable","init","locales","payload","config","localization","map","code","collections","forEach","collection","
|
|
1
|
+
{"version":3,"sources":["../src/init.ts"],"sourcesContent":["import type { DrizzleAdapter } from '@payloadcms/drizzle/types'\nimport type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport { createTableName, executeSchemaHooks } from '@payloadcms/drizzle'\nimport { uniqueIndex } from 'drizzle-orm/sqlite-core'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BaseExtraConfig } from './schema/build.js'\nimport type { SQLiteAdapter } from './types.js'\n\nimport { buildTable } from './schema/build.js'\n\nexport const init: Init = async function init(this: SQLiteAdapter) {\n let locales: [string, ...string[]] | undefined\n await executeSchemaHooks({ type: 'beforeSchemaInit', adapter: this })\n\n if (this.payload.config.localization) {\n locales = this.payload.config.localization.locales.map(({ code }) => code) as [\n string,\n ...string[],\n ]\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const config = this.payload.config\n\n const baseExtraConfig: BaseExtraConfig = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseExtraConfig.filename_compound_index = (cols) => {\n const colsConstraint = collection.upload.filenameCompoundIndex.map((f) => {\n return cols[f]\n })\n return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1))\n }\n }\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseExtraConfig.filename_compound_index = (cols) => {\n const colsConstraint = collection.upload.filenameCompoundIndex.map((f) => {\n return cols[f]\n })\n return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1))\n }\n }\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.fields,\n locales,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = this.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${this.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(config, collection)\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n locales,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n this.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: global,\n })\n\n buildTable({\n adapter: this,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.fields,\n locales,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter: this as unknown as DrizzleAdapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const config = this.payload.config\n const versionFields = buildVersionGlobalFields(config, global)\n\n buildTable({\n adapter: this,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n locales,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n await executeSchemaHooks({ type: 'afterSchemaInit', adapter: this })\n}\n"],"names":["createTableName","executeSchemaHooks","uniqueIndex","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","buildTable","init","locales","type","adapter","payload","config","localization","map","code","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseExtraConfig","upload","filenameCompoundIndex","indexName","filename_compound_index","cols","colsConstraint","f","on","slice","disableNotNull","drafts","disableUnique","fields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"AAGA,SAASA,eAAe,EAAEC,kBAAkB,QAAQ,sBAAqB;AACzE,SAASC,WAAW,QAAQ,0BAAyB;AACrD,SAASC,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAChF,OAAOC,iBAAiB,gBAAe;AAKvC,SAASC,UAAU,QAAQ,oBAAmB;AAE9C,OAAO,MAAMC,OAAa,eAAeA;IACvC,IAAIC;IACJ,MAAMP,mBAAmB;QAAEQ,MAAM;QAAoBC,SAAS,IAAI;IAAC;IAEnE,IAAI,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,YAAY,EAAE;QACpCL,UAAU,IAAI,CAACG,OAAO,CAACC,MAAM,CAACC,YAAY,CAACL,OAAO,CAACM,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;IAIvE;IAEA,IAAI,CAACJ,OAAO,CAACC,MAAM,CAACI,WAAW,CAACC,OAAO,CAAC,CAACC;QACvClB,gBAAgB;YACdU,SAAS,IAAI;YACbE,QAAQM;QACV;QAEA,IAAIA,WAAWC,QAAQ,EAAE;YACvBnB,gBAAgB;gBACdU,SAAS,IAAI;gBACbE,QAAQM;gBACRC,UAAU;gBACVC,oBAAoB;YACtB;QACF;IACF;IACA,IAAI,CAACT,OAAO,CAACC,MAAM,CAACI,WAAW,CAACC,OAAO,CAAC,CAACC;QACvC,MAAMG,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAClB,YAAYa,WAAWM,IAAI;QACnE,MAAMZ,SAAS,IAAI,CAACD,OAAO,CAACC,MAAM;QAElC,MAAMa,kBAAmC,CAAC;QAE1C,IAAIP,WAAWQ,MAAM,CAACC,qBAAqB,EAAE;YAC3C,MAAMC,YAAY,CAAC,EAAEP,UAAU,sBAAsB,CAAC;YAEtDI,gBAAgBI,uBAAuB,GAAG,CAACC;gBACzC,MAAMC,iBAAiBb,WAAWQ,MAAM,CAACC,qBAAqB,CAACb,GAAG,CAAC,CAACkB;oBAClE,OAAOF,IAAI,CAACE,EAAE;gBAChB;gBACA,OAAO9B,YAAY0B,WAAWK,EAAE,CAACF,cAAc,CAAC,EAAE,KAAKA,eAAeG,KAAK,CAAC;YAC9E;QACF;QAEA,IAAIhB,WAAWQ,MAAM,CAACC,qBAAqB,EAAE;YAC3C,MAAMC,YAAY,CAAC,EAAEP,UAAU,sBAAsB,CAAC;YAEtDI,gBAAgBI,uBAAuB,GAAG,CAACC;gBACzC,MAAMC,iBAAiBb,WAAWQ,MAAM,CAACC,qBAAqB,CAACb,GAAG,CAAC,CAACkB;oBAClE,OAAOF,IAAI,CAACE,EAAE;gBAChB;gBACA,OAAO9B,YAAY0B,WAAWK,EAAE,CAACF,cAAc,CAAC,EAAE,KAAKA,eAAeG,KAAK,CAAC;YAC9E;QACF;QAEA5B,WAAW;YACTI,SAAS,IAAI;YACbyB,gBAAgB,CAAC,CAACjB,YAAYC,UAAUiB;YACxCC,eAAe;YACfC,QAAQpB,WAAWoB,MAAM;YACzB9B;YACAa;YACAkB,YAAYrB,WAAWqB,UAAU;YACjCpB,UAAU;QACZ;QAEA,IAAID,WAAWC,QAAQ,EAAE;YACvB,MAAMqB,oBAAoB,IAAI,CAAClB,YAAY,CAACC,GAAG,CAC7C,CAAC,CAAC,EAAElB,YAAYa,WAAWM,IAAI,EAAE,EAAE,IAAI,CAACiB,cAAc,CAAC,CAAC;YAE1D,MAAMC,gBAAgBvC,6BAA6BS,QAAQM;YAE3DZ,WAAW;gBACTI,SAAS,IAAI;gBACbyB,gBAAgB,CAAC,CAACjB,WAAWC,QAAQ,EAAEiB;gBACvCC,eAAe;gBACfC,QAAQI;gBACRlC;gBACAa,WAAWmB;gBACXD,YAAY;gBACZpB,UAAU;YACZ;QACF;IACF;IAEA,IAAI,CAACR,OAAO,CAACC,MAAM,CAAC+B,OAAO,CAAC1B,OAAO,CAAC,CAAC2B;QACnC,MAAMvB,YAAYrB,gBAAgB;YAChCU,SAAS,IAAI;YACbE,QAAQgC;QACV;QAEAtC,WAAW;YACTI,SAAS,IAAI;YACbyB,gBAAgB,CAAC,CAACS,QAAQzB,UAAUiB;YACpCC,eAAe;YACfC,QAAQM,OAAON,MAAM;YACrB9B;YACAa;YACAkB,YAAY;YACZpB,UAAU;QACZ;QAEA,IAAIyB,OAAOzB,QAAQ,EAAE;YACnB,MAAMqB,oBAAoBxC,gBAAgB;gBACxCU,SAAS,IAAI;gBACbE,QAAQgC;gBACRzB,UAAU;gBACVC,oBAAoB;YACtB;YACA,MAAMR,SAAS,IAAI,CAACD,OAAO,CAACC,MAAM;YAClC,MAAM8B,gBAAgBtC,yBAAyBQ,QAAQgC;YAEvDtC,WAAW;gBACTI,SAAS,IAAI;gBACbyB,gBAAgB,CAAC,CAACS,OAAOzB,QAAQ,EAAEiB;gBACnCC,eAAe;gBACfC,QAAQI;gBACRlC;gBACAa,WAAWmB;gBACXD,YAAY;gBACZpB,UAAU;YACZ;QACF;IACF;IAEA,MAAMlB,mBAAmB;QAAEQ,MAAM;QAAmBC,SAAS,IAAI;IAAC;AACpE,EAAC"}
|
package/dist/schema/build.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type BaseExtraConfig = Record<string, (cols: {
|
|
|
6
6
|
}) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder>;
|
|
7
7
|
export type RelationMap = Map<string, {
|
|
8
8
|
localized: boolean;
|
|
9
|
+
relationName?: string;
|
|
9
10
|
target: string;
|
|
10
11
|
type: 'many' | 'one';
|
|
11
12
|
}>;
|
|
@@ -20,22 +21,32 @@ type Args = {
|
|
|
20
21
|
buildNumbers?: boolean;
|
|
21
22
|
buildRelationships?: boolean;
|
|
22
23
|
disableNotNull: boolean;
|
|
24
|
+
disableRelsTableUnique?: boolean;
|
|
23
25
|
disableUnique: boolean;
|
|
24
26
|
fields: Field[];
|
|
25
27
|
locales?: [string, ...string[]];
|
|
26
|
-
rootRelationsToBuild?: RelationMap;
|
|
27
28
|
rootRelationships?: Set<string>;
|
|
29
|
+
rootRelationsToBuild?: RelationMap;
|
|
28
30
|
rootTableIDColType?: IDType;
|
|
29
31
|
rootTableName?: string;
|
|
32
|
+
rootUniqueRelationships?: Set<string>;
|
|
30
33
|
tableName: string;
|
|
31
34
|
timestamps?: boolean;
|
|
32
35
|
versions: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Tracks whether or not this table is built
|
|
38
|
+
* from the result of a localized array or block field at some point
|
|
39
|
+
*/
|
|
40
|
+
withinLocalizedArrayOrBlock?: boolean;
|
|
33
41
|
};
|
|
34
42
|
type Result = {
|
|
43
|
+
hasLocalizedManyNumberField: boolean;
|
|
44
|
+
hasLocalizedManyTextField: boolean;
|
|
45
|
+
hasLocalizedRelationshipField: boolean;
|
|
35
46
|
hasManyNumberField: 'index' | boolean;
|
|
36
47
|
hasManyTextField: 'index' | boolean;
|
|
37
48
|
relationsToBuild: RelationMap;
|
|
38
49
|
};
|
|
39
|
-
export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableUnique, fields, locales,
|
|
50
|
+
export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableRelsTableUnique, disableUnique, fields, locales, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock, }: Args) => Result;
|
|
40
51
|
export {};
|
|
41
52
|
//# sourceMappingURL=build.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EAEnB,uBAAuB,EACxB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAA;AAepD,OAAO,KAAK,EAAgC,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOtF,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN,CAAC,IAAI,EAAE;IACL,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;CAC7B,KAAK,iBAAiB,GAAG,YAAY,GAAG,uBAAuB,CACjE,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,GAAG,CAC3B,MAAM,EACN;IACE,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;CACrB,CACF,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IACjD;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,iTAkBpB,IAAI,KAAG,MAqbT,CAAA"}
|
package/dist/schema/build.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { createTableName } from '@payloadcms/drizzle';
|
|
1
|
+
import { buildIndexName, createTableName } from '@payloadcms/drizzle';
|
|
2
2
|
import { relations, sql } from 'drizzle-orm';
|
|
3
3
|
import { foreignKey, index, integer, numeric, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core';
|
|
4
4
|
import toSnakeCase from 'to-snake-case';
|
|
5
|
+
import { createIndex } from './createIndex.js';
|
|
5
6
|
import { getIDColumn } from './getIDColumn.js';
|
|
6
7
|
import { setColumnID } from './setColumnID.js';
|
|
7
8
|
import { traverseFields } from './traverseFields.js';
|
|
8
|
-
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableUnique = false, fields, locales,
|
|
9
|
+
export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableRelsTableUnique, disableUnique = false, fields, locales, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
|
|
9
10
|
const isRoot = !incomingRootTableName;
|
|
10
11
|
const rootTableName = incomingRootTableName || tableName;
|
|
11
12
|
const columns = baseColumns;
|
|
@@ -17,6 +18,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
17
18
|
let numbersTable;
|
|
18
19
|
// Relationships to the base collection
|
|
19
20
|
const relationships = rootRelationships || new Set();
|
|
21
|
+
const uniqueRelationships = rootUniqueRelationships || new Set();
|
|
20
22
|
let relationshipsTable;
|
|
21
23
|
// Drizzle relations
|
|
22
24
|
const relationsToBuild = new Map();
|
|
@@ -28,6 +30,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
28
30
|
adapter,
|
|
29
31
|
columns,
|
|
30
32
|
disableNotNull,
|
|
33
|
+
disableRelsTableUnique,
|
|
31
34
|
disableUnique,
|
|
32
35
|
fields,
|
|
33
36
|
indexes,
|
|
@@ -36,20 +39,23 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
36
39
|
localesIndexes,
|
|
37
40
|
newTableName: tableName,
|
|
38
41
|
parentTableName: tableName,
|
|
39
|
-
relationsToBuild,
|
|
40
42
|
relationships,
|
|
43
|
+
relationsToBuild,
|
|
41
44
|
rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
|
|
42
45
|
rootTableIDColType: rootTableIDColType || idColType,
|
|
43
46
|
rootTableName,
|
|
44
|
-
|
|
47
|
+
uniqueRelationships,
|
|
48
|
+
versions,
|
|
49
|
+
withinLocalizedArrayOrBlock
|
|
45
50
|
});
|
|
46
51
|
// split the relationsToBuild by localized and non-localized
|
|
47
52
|
const localizedRelations = new Map();
|
|
48
53
|
const nonLocalizedRelations = new Map();
|
|
49
|
-
relationsToBuild.forEach(({ type, localized, target }, key)=>{
|
|
54
|
+
relationsToBuild.forEach(({ type, localized, relationName, target }, key)=>{
|
|
50
55
|
const map = localized ? localizedRelations : nonLocalizedRelations;
|
|
51
56
|
map.set(key, {
|
|
52
57
|
type,
|
|
58
|
+
relationName,
|
|
53
59
|
target
|
|
54
60
|
});
|
|
55
61
|
});
|
|
@@ -282,9 +288,14 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
282
288
|
});
|
|
283
289
|
let colType = 'integer';
|
|
284
290
|
const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
|
|
285
|
-
if (relatedCollectionCustomIDType === 'number')
|
|
286
|
-
|
|
287
|
-
|
|
291
|
+
if (relatedCollectionCustomIDType === 'number') {
|
|
292
|
+
colType = 'numeric';
|
|
293
|
+
}
|
|
294
|
+
if (relatedCollectionCustomIDType === 'text') {
|
|
295
|
+
colType = 'text';
|
|
296
|
+
}
|
|
297
|
+
const colName = `${relationTo}ID`;
|
|
298
|
+
relationshipColumns[colName] = getIDColumn({
|
|
288
299
|
name: `${formattedRelationTo}_id`,
|
|
289
300
|
type: colType,
|
|
290
301
|
primaryKey: false
|
|
@@ -292,12 +303,31 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
292
303
|
relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
|
|
293
304
|
name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
|
|
294
305
|
columns: [
|
|
295
|
-
cols[
|
|
306
|
+
cols[colName]
|
|
296
307
|
],
|
|
297
308
|
foreignColumns: [
|
|
298
309
|
adapter.tables[formattedRelationTo].id
|
|
299
310
|
]
|
|
300
311
|
}).onDelete('cascade');
|
|
312
|
+
const indexColumns = [
|
|
313
|
+
colName
|
|
314
|
+
];
|
|
315
|
+
const unique = !disableUnique && uniqueRelationships.has(relationTo);
|
|
316
|
+
if (unique) {
|
|
317
|
+
indexColumns.push('path');
|
|
318
|
+
}
|
|
319
|
+
if (hasLocalizedRelationshipField) {
|
|
320
|
+
indexColumns.push('locale');
|
|
321
|
+
}
|
|
322
|
+
const indexName = buildIndexName({
|
|
323
|
+
name: `${relationshipsTableName}_${formattedRelationTo}_id`,
|
|
324
|
+
adapter: adapter
|
|
325
|
+
});
|
|
326
|
+
relationExtraConfig[indexName] = createIndex({
|
|
327
|
+
name: indexColumns,
|
|
328
|
+
indexName,
|
|
329
|
+
unique
|
|
330
|
+
});
|
|
301
331
|
});
|
|
302
332
|
relationshipsTable = sqliteTable(relationshipsTableName, relationshipColumns, (cols)=>{
|
|
303
333
|
const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
|
|
@@ -357,7 +387,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
357
387
|
}
|
|
358
388
|
adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
|
|
359
389
|
const result = {};
|
|
360
|
-
nonLocalizedRelations.forEach(({ type, target }, key)=>{
|
|
390
|
+
nonLocalizedRelations.forEach(({ type, relationName, target }, key)=>{
|
|
361
391
|
if (type === 'one') {
|
|
362
392
|
result[key] = one(adapter.tables[target], {
|
|
363
393
|
fields: [
|
|
@@ -371,7 +401,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
371
401
|
}
|
|
372
402
|
if (type === 'many') {
|
|
373
403
|
result[key] = many(adapter.tables[target], {
|
|
374
|
-
relationName: key
|
|
404
|
+
relationName: relationName || key
|
|
375
405
|
});
|
|
376
406
|
}
|
|
377
407
|
});
|
|
@@ -398,6 +428,9 @@ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, di
|
|
|
398
428
|
return result;
|
|
399
429
|
});
|
|
400
430
|
return {
|
|
431
|
+
hasLocalizedManyNumberField,
|
|
432
|
+
hasLocalizedManyTextField,
|
|
433
|
+
hasLocalizedRelationshipField,
|
|
401
434
|
hasManyNumberField,
|
|
402
435
|
hasManyTextField,
|
|
403
436
|
relationsToBuild
|