@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 4.3 kB
Source Map (JSON)
{"version":3,"file":"build-table-name.mjs","names":["constants"],"sources":["../../../../src/libs/collection/helpers/build-table-name.ts"],"sourcesContent":["import constants from \"../../../constants/constants.js\";\nimport type { TableType } from \"../../../libs/collection/schema/types.js\";\nimport type { ServiceResponse } from \"../../../types.js\";\nimport { copy } from \"../../i18n/index.js\";\nimport {\n\tgetFieldDatabaseConfig,\n\tisCustomFieldTableType,\n\tisStorageMode,\n} from \"../custom-fields/storage/index.js\";\nimport { collectionTableParts } from \"./table-parts.js\";\nimport toSafeTableName from \"./to-safe-table-name.js\";\n\n/**\n * Builds out the table name based on its type and available keys\n */\nconst buildTableName = <R extends string>(\n\ttype: TableType,\n\tkeys: {\n\t\tcollection: string;\n\t\tbrick?: string;\n\t\tfieldPath?: Array<string>;\n\t},\n\ttableNameByteLimit: number | null,\n): Awaited<\n\tServiceResponse<{\n\t\t/** The hashed table name */\n\t\tname: R;\n\t\t/** The raw, readable table name */\n\t\trawName: R;\n\t}>\n> => {\n\tconst parts = [collectionTableParts.document, keys.collection];\n\n\tswitch (type) {\n\t\tcase \"document\": {\n\t\t\tbreak;\n\t\t}\n\t\tcase \"versions\": {\n\t\t\tparts.push(collectionTableParts.versions);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"brick\": {\n\t\t\tif (!keys.brick) {\n\t\t\t\treturn {\n\t\t\t\t\tdata: undefined,\n\t\t\t\t\terror: {\n\t\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\t\"server:core.collections.migration.table.name.brick.key.missing.message\",\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\tparts.push(keys.brick);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"document-fields\": {\n\t\t\tparts.push(collectionTableParts.fields);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (isCustomFieldTableType(type)) {\n\t\tif (keys.fieldPath === undefined || keys.fieldPath.length === 0) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\"server:core.collections.migration.table.name.repeater.keys.missing.message\",\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst databaseConfig = getFieldDatabaseConfig(type);\n\t\tif (!databaseConfig) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\"server:core.collections.schema.table.name.format.insufficient.parts\",\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t!isStorageMode(databaseConfig, \"tree-table\") &&\n\t\t\t!isStorageMode(databaseConfig, \"relation-table\")\n\t\t) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\"server:core.collections.schema.table.name.format.insufficient.parts\",\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// add brick key first - table-backed custom fields are scoped to these\n\t\t//* assumes document-fields type when brick key isnt present\n\t\tconst scope = keys.brick ?? collectionTableParts.fields;\n\t\tparts.push(scope);\n\t\tparts.push(databaseConfig.separator);\n\t\tparts.push(...keys.fieldPath);\n\t}\n\n\tconst safeNameRes = toSafeTableName(\n\t\t`${constants.db.prefix}${parts.join(constants.db.nameSeparator)}`,\n\t\ttableNameByteLimit,\n\t);\n\n\treturn {\n\t\tdata: {\n\t\t\tname: safeNameRes.name as R,\n\t\t\trawName: safeNameRes.rawName as R,\n\t\t},\n\t\terror: undefined,\n\t};\n};\n\nexport default buildTableName;\n"],"mappings":"uTAeA,MAAM,GACL,EACA,EAKA,IAQI,CACJ,IAAM,EAAQ,CAAC,EAAqB,SAAU,EAAK,UAAU,EAE7D,OAAQ,EAAR,CACC,IAAK,WACJ,MAED,IAAK,WACJ,EAAM,KAAK,EAAqB,QAAQ,EACxC,MAED,IAAK,QACJ,GAAI,CAAC,EAAK,MACT,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,QAAS,EACR,wEACD,CACD,CACD,EAED,EAAM,KAAK,EAAK,KAAK,EACrB,MAED,IAAK,kBACJ,EAAM,KAAK,EAAqB,MAAM,EACtC,KAEF,CAEA,GAAI,EAAuB,CAAI,EAAG,CACjC,GAAI,EAAK,YAAc,IAAA,IAAa,EAAK,UAAU,SAAW,EAC7D,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,QAAS,EACR,4EACD,CACD,CACD,EAGD,IAAM,EAAiB,EAAuB,CAAI,EAYlD,GAXI,CAAC,GAYJ,CAAC,EAAc,EAAgB,YAAY,GAC3C,CAAC,EAAc,EAAgB,gBAAgB,EAE/C,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,QAAS,EACR,qEACD,CACD,CACD,EAKD,IAAM,EAAQ,EAAK,OAAS,EAAqB,OACjD,EAAM,KAAK,CAAK,EAChB,EAAM,KAAK,EAAe,SAAS,EACnC,EAAM,KAAK,GAAG,EAAK,SAAS,CAC7B,CAEA,IAAM,EAAc,EACnB,GAAGA,EAAU,GAAG,SAAS,EAAM,KAAKA,EAAU,GAAG,aAAa,IAC9D,CACD,EAEA,MAAO,CACN,KAAM,CACL,KAAM,EAAY,KAClB,QAAS,EAAY,OACtB,EACA,MAAO,IAAA,EACR,CACD"}