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
117 lines
4.2 KiB
Plaintext
117 lines
4.2 KiB
Plaintext
import { buildVersionCollectionFields, buildVersionCompoundIndexes, buildVersionGlobalFields } from 'payload';
|
|
import { hasDraftsEnabled } from 'payload/shared';
|
|
import toSnakeCase from 'to-snake-case';
|
|
import { createTableName } from '../createTableName.js';
|
|
import { buildIndexName } from '../utilities/buildIndexName.js';
|
|
import { buildTable } from './build.js';
|
|
/**
|
|
* Builds abstract Payload SQL schema
|
|
*/ export const buildRawSchema = ({ adapter, setColumnID })=>{
|
|
adapter.indexes = new Set();
|
|
adapter.foreignKeys = new Set();
|
|
adapter.payload.config.collections.forEach((collection)=>{
|
|
createTableName({
|
|
adapter,
|
|
config: collection
|
|
});
|
|
if (collection.versions) {
|
|
createTableName({
|
|
adapter,
|
|
config: collection,
|
|
versions: true,
|
|
versionsCustomName: true
|
|
});
|
|
}
|
|
});
|
|
adapter.payload.config.collections.forEach((collection)=>{
|
|
const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug));
|
|
const config = adapter.payload.config;
|
|
const baseIndexes = {};
|
|
if (collection.upload.filenameCompoundIndex) {
|
|
const indexName = buildIndexName({
|
|
name: `${tableName}_filename_compound`,
|
|
adapter
|
|
});
|
|
baseIndexes.filename_compound_index = {
|
|
name: indexName,
|
|
on: collection.upload.filenameCompoundIndex.map((f)=>f),
|
|
unique: true
|
|
};
|
|
}
|
|
buildTable({
|
|
adapter,
|
|
baseIndexes,
|
|
blocksTableNameMap: {},
|
|
compoundIndexes: collection.sanitizedIndexes,
|
|
disableNotNull: !!collection?.versions?.drafts,
|
|
disableUnique: false,
|
|
fields: collection.flattenedFields,
|
|
parentIsLocalized: false,
|
|
setColumnID,
|
|
tableName,
|
|
timestamps: collection.timestamps,
|
|
versions: false
|
|
});
|
|
if (collection.versions) {
|
|
const versionsTableName = adapter.tableNameMap.get(`_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`);
|
|
const versionFields = buildVersionCollectionFields(config, collection, true);
|
|
buildTable({
|
|
adapter,
|
|
blocksTableNameMap: {},
|
|
compoundIndexes: buildVersionCompoundIndexes({
|
|
indexes: collection.sanitizedIndexes
|
|
}),
|
|
disableNotNull: !!collection.versions?.drafts,
|
|
disableUnique: true,
|
|
fields: versionFields,
|
|
parentIsLocalized: false,
|
|
setColumnID,
|
|
tableName: versionsTableName,
|
|
timestamps: true,
|
|
versions: true
|
|
});
|
|
}
|
|
});
|
|
adapter.payload.config.globals.forEach((global)=>{
|
|
const tableName = createTableName({
|
|
adapter,
|
|
config: global
|
|
});
|
|
buildTable({
|
|
adapter,
|
|
blocksTableNameMap: {},
|
|
disableNotNull: hasDraftsEnabled(global),
|
|
disableUnique: false,
|
|
fields: global.flattenedFields,
|
|
parentIsLocalized: false,
|
|
setColumnID,
|
|
tableName,
|
|
timestamps: false,
|
|
versions: false
|
|
});
|
|
if (global.versions) {
|
|
const versionsTableName = createTableName({
|
|
adapter,
|
|
config: global,
|
|
versions: true,
|
|
versionsCustomName: true
|
|
});
|
|
const config = adapter.payload.config;
|
|
const versionFields = buildVersionGlobalFields(config, global, true);
|
|
buildTable({
|
|
adapter,
|
|
blocksTableNameMap: {},
|
|
disableNotNull: !!global.versions?.drafts,
|
|
disableUnique: true,
|
|
fields: versionFields,
|
|
parentIsLocalized: false,
|
|
setColumnID,
|
|
tableName: versionsTableName,
|
|
timestamps: true,
|
|
versions: true
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
//# sourceMappingURL=buildRawSchema.js.map |