Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
168 lines
6.7 KiB
Plaintext
168 lines
6.7 KiB
Plaintext
import { beginTransaction, buildCreateMigration, commitTransaction, count, countGlobalVersions, countVersions, create, createBlocksToJsonMigrator, createGlobal, createGlobalVersion, createSchemaGenerator, createVersion, deleteMany, deleteOne, deleteVersions, destroy, find, findDistinct, findGlobal, findGlobalVersions, findOne, findVersions, migrate, migrateDown, migrateFresh, migrateRefresh, migrateReset, migrateStatus, operatorMap, queryDrafts, rollbackTransaction, updateGlobal, updateGlobalVersion, updateJobs, updateMany, updateOne, updateVersion, upsert } from '@payloadcms/drizzle';
|
|
import { columnToCodeConverter, countDistinct, createDatabase, createExtensions, createJSONQuery, defaultDrizzleSnapshot, deleteWhere, dropDatabase, execute, init, insert, requireDrizzleKit } from '@payloadcms/drizzle/postgres';
|
|
import { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core';
|
|
import { createDatabaseAdapter, defaultBeginTransaction, findMigrationDir } from 'payload';
|
|
import pgDependency from 'pg';
|
|
import { fileURLToPath } from 'url';
|
|
import { connect } from './connect.js';
|
|
const filename = fileURLToPath(import.meta.url);
|
|
export function postgresAdapter(args) {
|
|
const postgresIDType = args.idType || 'serial';
|
|
const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text';
|
|
const allowIDOnCreate = args.allowIDOnCreate ?? false;
|
|
function adapter({ payload }) {
|
|
const migrationDir = findMigrationDir(args.migrationDir);
|
|
let resolveInitializing;
|
|
let rejectInitializing;
|
|
let adapterSchema;
|
|
const initializing = new Promise((res, rej)=>{
|
|
resolveInitializing = res;
|
|
rejectInitializing = rej;
|
|
});
|
|
if (args.schemaName) {
|
|
adapterSchema = pgSchema(args.schemaName);
|
|
} else {
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
adapterSchema = {
|
|
enum: pgEnum,
|
|
table: pgTable
|
|
};
|
|
}
|
|
const extensions = (args.extensions ?? []).reduce((acc, name)=>{
|
|
acc[name] = true;
|
|
return acc;
|
|
}, {});
|
|
const sanitizeStatements = ({ sqlExecute, statements })=>{
|
|
return `${sqlExecute}\n ${statements.join('\n')}\`)`;
|
|
};
|
|
const executeMethod = 'execute';
|
|
const adapter = createDatabaseAdapter({
|
|
name: 'postgres',
|
|
afterSchemaInit: args.afterSchemaInit ?? [],
|
|
allowIDOnCreate,
|
|
beforeSchemaInit: args.beforeSchemaInit ?? [],
|
|
blocksAsJSON: args.blocksAsJSON ?? false,
|
|
createDatabase,
|
|
createExtensions,
|
|
createMigration: buildCreateMigration({
|
|
executeMethod,
|
|
filename,
|
|
sanitizeStatements
|
|
}),
|
|
defaultDrizzleSnapshot,
|
|
disableCreateDatabase: args.disableCreateDatabase ?? false,
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
drizzle: undefined,
|
|
enums: {},
|
|
extensions,
|
|
features: {
|
|
json: true
|
|
},
|
|
fieldConstraints: {},
|
|
findDistinct,
|
|
generateSchema: createSchemaGenerator({
|
|
columnToCodeConverter,
|
|
corePackageSuffix: 'pg-core',
|
|
defaultOutputFile: args.generateSchemaOutputFile,
|
|
enumImport: 'pgEnum',
|
|
schemaImport: 'pgSchema',
|
|
tableImport: 'pgTable'
|
|
}),
|
|
idType: postgresIDType,
|
|
initializing,
|
|
localesSuffix: args.localesSuffix || '_locales',
|
|
logger: args.logger,
|
|
operators: operatorMap,
|
|
pg: args.pg || pgDependency,
|
|
pgSchema: adapterSchema,
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
pool: undefined,
|
|
poolOptions: args.pool,
|
|
prodMigrations: args.prodMigrations,
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
push: args.push,
|
|
readReplicaOptions: args.readReplicas,
|
|
relations: {},
|
|
relationshipsSuffix: args.relationshipsSuffix || '_rels',
|
|
schema: {},
|
|
schemaName: args.schemaName,
|
|
sessions: {},
|
|
tableNameMap: new Map(),
|
|
tables: {},
|
|
tablesFilter: args.tablesFilter,
|
|
transactionOptions: args.transactionOptions || undefined,
|
|
versionsSuffix: args.versionsSuffix || '_v',
|
|
// DatabaseAdapter
|
|
beginTransaction: args.transactionOptions === false ? defaultBeginTransaction() : beginTransaction,
|
|
commitTransaction,
|
|
connect,
|
|
count,
|
|
countDistinct,
|
|
countGlobalVersions,
|
|
countVersions,
|
|
create,
|
|
createGlobal,
|
|
createGlobalVersion,
|
|
createJSONQuery,
|
|
createVersion,
|
|
defaultIDType: payloadIDType,
|
|
deleteMany,
|
|
deleteOne,
|
|
deleteVersions,
|
|
deleteWhere,
|
|
destroy,
|
|
dropDatabase,
|
|
execute,
|
|
find,
|
|
findGlobal,
|
|
findGlobalVersions,
|
|
findOne,
|
|
findVersions,
|
|
foreignKeys: new Set(),
|
|
indexes: new Set(),
|
|
init,
|
|
insert,
|
|
migrate,
|
|
migrateDown,
|
|
migrateFresh,
|
|
migrateRefresh,
|
|
migrateReset,
|
|
migrateStatus,
|
|
migrationDir,
|
|
packageName: '@payloadcms/db-postgres',
|
|
payload,
|
|
queryDrafts,
|
|
rawRelations: {},
|
|
rawTables: {},
|
|
updateJobs,
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
rejectInitializing,
|
|
requireDrizzleKit,
|
|
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
resolveInitializing,
|
|
rollbackTransaction,
|
|
updateGlobal,
|
|
updateGlobalVersion,
|
|
updateMany,
|
|
updateOne,
|
|
updateVersion,
|
|
upsert
|
|
});
|
|
adapter.blocksToJsonMigrator = createBlocksToJsonMigrator({
|
|
adapter: adapter,
|
|
executeMethod,
|
|
sanitizeStatements
|
|
});
|
|
return adapter;
|
|
}
|
|
return {
|
|
name: 'postgres',
|
|
allowIDOnCreate,
|
|
defaultIDType: payloadIDType,
|
|
init: adapter
|
|
};
|
|
}
|
|
export { geometryColumn } from '@payloadcms/drizzle/postgres';
|
|
export { sql } from 'drizzle-orm';
|
|
|
|
//# sourceMappingURL=index.js.map |