@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 5.87 kB
Source Map (JSON)
{"version":3,"file":"get-update-context.mjs","names":["documentServices.checks.checkCollection","documentServices.checks.checkDocumentAccess"],"sources":["../../../../src/services/documents-versions/helpers/get-update-context.ts"],"sourcesContent":["import type CollectionBuilder from \"../../../libs/collection/builders/collection-builder/index.js\";\nimport getMigrationStatus from \"../../../libs/collection/get-collection-migration-status.js\";\nimport getCurrentCollectionMigrationId from \"../../../libs/collection/migration/get-current-collection-migration-id.js\";\nimport { getTableNames } from \"../../../libs/collection/schema/runtime/runtime-schema-selectors.js\";\nimport type { LucidVersionTable, Select } from \"../../../libs/db/types.js\";\nimport { copy } from \"../../../libs/i18n/index.js\";\nimport { DocumentVersionsRepository } from \"../../../libs/repositories/index.js\";\nimport type { CollectionTableNames } from \"../../../types.js\";\nimport type { ServiceFn } from \"../../../utils/services/types.js\";\nimport { documentServices } from \"../../index.js\";\n\nconst getUpdateContext: ServiceFn<\n\t[\n\t\t{\n\t\t\tcollectionKey: string;\n\t\t\tdocumentId: number;\n\t\t\tversionId: number;\n\t\t},\n\t],\n\t{\n\t\tcollection: CollectionBuilder;\n\t\ttableNames: CollectionTableNames;\n\t\tmigrationId: number;\n\t\tversionType: Select<LucidVersionTable>[\"type\"];\n\t}\n> = async (context, data) => {\n\tconst Version = new DocumentVersionsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst collectionRes = await documentServices.checks.checkCollection(context, {\n\t\tkey: data.collectionKey,\n\t});\n\tif (collectionRes.error) return collectionRes;\n\n\tconst tableNamesRes = await getTableNames(context, data.collectionKey);\n\tif (tableNamesRes.error) return tableNamesRes;\n\n\tconst documentAccessRes = await documentServices.checks.checkDocumentAccess(\n\t\tcontext,\n\t\t{\n\t\t\tcollectionKey: data.collectionKey,\n\t\t\tid: data.documentId,\n\t\t},\n\t);\n\tif (documentAccessRes.error) return documentAccessRes;\n\n\tif (collectionRes.data.getData.locked) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\" as const,\n\t\t\t\tname: copy(\"server:core.error.locked.collection.name\"),\n\t\t\t\tmessage: copy(\"server:core.error.locked.collection.message\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst migrationStatusRes = await getMigrationStatus(context, {\n\t\tcollection: collectionRes.data,\n\t});\n\tif (migrationStatusRes.error) return migrationStatusRes;\n\n\tif (migrationStatusRes.data.requiresMigration) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\" as const,\n\t\t\t\tname: copy(\"server:core.error.schema.migration.required.name\"),\n\t\t\t\tmessage: copy(\"server:core.error.schema.migration.required.message\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst migrationIdRes = await getCurrentCollectionMigrationId(\n\t\tcontext,\n\t\tdata.collectionKey,\n\t);\n\tif (migrationIdRes.error) return migrationIdRes;\n\n\tconst versionExistsRes = await Version.selectSingle(\n\t\t{\n\t\t\tselect: [\"id\", \"type\"],\n\t\t\twhere: [\n\t\t\t\t{\n\t\t\t\t\tkey: \"id\",\n\t\t\t\t\toperator: \"=\",\n\t\t\t\t\tvalue: data.versionId,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"collection_key\",\n\t\t\t\t\toperator: \"=\",\n\t\t\t\t\tvalue: data.collectionKey,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"document_id\",\n\t\t\t\t\toperator: \"=\",\n\t\t\t\t\tvalue: data.documentId,\n\t\t\t\t},\n\t\t\t],\n\t\t\tvalidation: {\n\t\t\t\tenabled: true,\n\t\t\t\tdefaultError: {\n\t\t\t\t\tmessage: copy(\"server:core.documents.versions.not.found.message\"),\n\t\t\t\t\tstatus: 404,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttableName: tableNamesRes.data.version,\n\t\t},\n\t);\n\tif (versionExistsRes.error) return versionExistsRes;\n\n\tif (versionExistsRes.data.type !== \"latest\") {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\" as const,\n\t\t\t\tname: copy(\"server:core.error.update.non.latest.version.name\"),\n\t\t\t\tmessage: copy(\"server:core.error.update.non.latest.version.message\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tcollection: collectionRes.data,\n\t\t\ttableNames: tableNamesRes.data,\n\t\t\tmigrationId: migrationIdRes.data,\n\t\t\tversionType: versionExistsRes.data.type,\n\t\t},\n\t};\n};\n\nexport default getUpdateContext;\n"],"mappings":"yfAWA,MAAM,EAcF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAU,IAAI,EACnB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EAAgB,MAAMA,EAAwC,EAAS,CAC5E,IAAK,EAAK,aACX,CAAC,EACD,GAAI,EAAc,MAAO,OAAO,EAEhC,IAAM,EAAgB,MAAM,EAAc,EAAS,EAAK,aAAa,EACrE,GAAI,EAAc,MAAO,OAAO,EAEhC,IAAM,EAAoB,MAAMC,EAC/B,EACA,CACC,cAAe,EAAK,cACpB,GAAI,EAAK,UACV,CACD,EACA,GAAI,EAAkB,MAAO,OAAO,EAEpC,GAAI,EAAc,KAAK,QAAQ,OAC9B,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,0CAA0C,EACrD,QAAS,EAAK,6CAA6C,EAC3D,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAqB,MAAM,EAAmB,EAAS,CAC5D,WAAY,EAAc,IAC3B,CAAC,EACD,GAAI,EAAmB,MAAO,OAAO,EAErC,GAAI,EAAmB,KAAK,kBAC3B,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,kDAAkD,EAC7D,QAAS,EAAK,qDAAqD,EACnE,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAiB,MAAM,EAC5B,EACA,EAAK,aACN,EACA,GAAI,EAAe,MAAO,OAAO,EAEjC,IAAM,EAAmB,MAAM,EAAQ,aACtC,CACC,OAAQ,CAAC,KAAM,MAAM,EACrB,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,SACb,EACA,CACC,IAAK,iBACL,SAAU,IACV,MAAO,EAAK,aACb,EACA,CACC,IAAK,cACL,SAAU,IACV,MAAO,EAAK,UACb,CACD,EACA,WAAY,CACX,QAAS,GACT,aAAc,CACb,QAAS,EAAK,kDAAkD,EAChE,OAAQ,GACT,CACD,CACD,EACA,CACC,UAAW,EAAc,KAAK,OAC/B,CACD,EAeA,OAdI,EAAiB,MAAc,EAE/B,EAAiB,KAAK,OAAS,SAY5B,CACN,MAAO,IAAA,GACP,KAAM,CACL,WAAY,EAAc,KAC1B,WAAY,EAAc,KAC1B,YAAa,EAAe,KAC5B,YAAa,EAAiB,KAAK,IACpC,CACD,EAnBQ,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,kDAAkD,EAC7D,QAAS,EAAK,qDAAqD,EACnE,OAAQ,GACT,EACA,KAAM,IAAA,EACP,CAYF"}