UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 8.75 kB
{"version":3,"file":"clone-version.mjs","names":["collectionServices.getSingleInstance","migrationStatus","documentBricksFormatter","documentBrickServices.insertBrickTables"],"sources":["../../../src/services/documents-versions/clone-version.ts"],"sourcesContent":["import migrationStatus from \"../../libs/collection/get-collection-migration-status.js\";\nimport getCurrentCollectionMigrationId from \"../../libs/collection/migration/get-current-collection-migration-id.js\";\nimport {\n\tgetBricksTableSchema,\n\tgetTableNames,\n} from \"../../libs/collection/schema/runtime/runtime-schema-selectors.js\";\nimport { documentBricksFormatter } from \"../../libs/formatters/index.js\";\nimport { copy } from \"../../libs/i18n/index.js\";\nimport {\n\tDocumentBricksRepository,\n\tDocumentVersionsRepository,\n} from \"../../libs/repositories/index.js\";\nimport { getBaseUrl } from \"../../utils/helpers/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\nimport aggregateBrickTables from \"../documents-bricks/helpers/aggregate-brick-tables.js\";\nimport { collectionServices, documentBrickServices } from \"../index.js\";\n\nconst cloneVersion: ServiceFn<\n\t[\n\t\t{\n\t\t\tfromVersionId: number;\n\t\t\ttoVersionType: string;\n\t\t\tcollectionKey: string;\n\t\t\tdocumentId: number;\n\t\t\tuserId: number;\n\t\t},\n\t],\n\t{\n\t\tversionId: number;\n\t\tcontentId: string;\n\t\tsourceVersionType: string;\n\t}\n> = async (context, data) => {\n\tconst Versions = new DocumentVersionsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\tconst DocumentBricks = new DocumentBricksRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst collectionRes = collectionServices.getSingleInstance(context, {\n\t\tkey: data.collectionKey,\n\t});\n\tif (collectionRes.error) return collectionRes;\n\n\tconst migrationStatusRes = await migrationStatus(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\",\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 [bricksTableSchemaRes, tableNameRes] = await Promise.all([\n\t\tgetBricksTableSchema(context, data.collectionKey),\n\t\tgetTableNames(context, data.collectionKey),\n\t]);\n\tif (bricksTableSchemaRes.error) return bricksTableSchemaRes;\n\tif (tableNameRes.error) return tableNameRes;\n\n\tconst [versionRes, bricksQueryRes, migrationIdRes] = await Promise.all([\n\t\tVersions.selectSingle(\n\t\t\t{\n\t\t\t\tselect: [\"id\", \"type\", \"document_id\", \"content_id\"],\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"id\",\n\t\t\t\t\t\toperator: \"=\",\n\t\t\t\t\t\tvalue: data.fromVersionId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tvalidation: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tdefaultError: {\n\t\t\t\t\t\tmessage: copy(\"server:core.documents.version.not.found.message\"),\n\t\t\t\t\t\tstatus: 404,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: tableNameRes.data.version,\n\t\t\t},\n\t\t),\n\t\tDocumentBricks.selectMultipleByVersionId(\n\t\t\t{\n\t\t\t\tversionId: data.fromVersionId,\n\t\t\t\tdocumentId: data.documentId,\n\t\t\t\tbricksSchema: bricksTableSchemaRes.data,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: tableNameRes.data.version,\n\t\t\t},\n\t\t),\n\t\tgetCurrentCollectionMigrationId(context, data.collectionKey),\n\t]);\n\tif (versionRes.error) return versionRes;\n\tif (bricksQueryRes.error) return bricksQueryRes;\n\tif (migrationIdRes.error) return migrationIdRes;\n\n\tif (bricksQueryRes.data === undefined) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tstatus: 404,\n\t\t\t\tmessage: copy(\"server:core.documents.version.not.found.message\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tif (versionRes.data.document_id !== data.documentId) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tmessage: copy(\"server:core.documents.version.document.mismatch\"),\n\t\t\t\tstatus: 404,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst newVersionRes = await Versions.createSingle(\n\t\t{\n\t\t\tdata: {\n\t\t\t\tdocument_id: data.documentId,\n\t\t\t\tcollection_key: data.collectionKey,\n\t\t\t\tcollection_migration_id: migrationIdRes.data,\n\t\t\t\ttype: data.toVersionType,\n\t\t\t\tpromoted_from: data.fromVersionId,\n\t\t\t\tcontent_id: versionRes.data.content_id,\n\t\t\t\tcreated_by: data.userId,\n\t\t\t\tupdated_by: data.userId,\n\t\t\t},\n\t\t\treturning: [\"id\"],\n\t\t\tvalidation: {\n\t\t\t\tenabled: true,\n\t\t\t\tdefaultError: {\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\tmessage: copy(\"server:core.documents.create.failed\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttableName: tableNameRes.data.version,\n\t\t},\n\t);\n\tif (newVersionRes.error) return newVersionRes;\n\n\tconst baseUrl = getBaseUrl(context);\n\tconst brickTables = aggregateBrickTables({\n\t\tcollection: collectionRes.data,\n\t\tdocumentId: data.documentId,\n\t\tversionId: newVersionRes.data.id,\n\t\tlocalization: context.config.localization,\n\t\tbricks: documentBricksFormatter.formatMultiple({\n\t\t\tbricksQuery: bricksQueryRes.data,\n\t\t\tbricksSchema: bricksTableSchemaRes.data,\n\t\t\trefData: { data: {} },\n\t\t\tcollection: collectionRes.data,\n\t\t\tconfig: context.config,\n\t\t\thost: baseUrl,\n\t\t}),\n\t\tfields: documentBricksFormatter.formatDocumentFields({\n\t\t\tbricksQuery: bricksQueryRes.data,\n\t\t\tbricksSchema: bricksTableSchemaRes.data,\n\t\t\trefData: { data: {} },\n\t\t\tcollection: collectionRes.data,\n\t\t\tconfig: context.config,\n\t\t\thost: baseUrl,\n\t\t}),\n\t\ttableNameByteLimit: context.config.db.config.tableNameByteLimit,\n\t});\n\tconst sortedTables = brickTables.sort((a, b) => a.priority - b.priority);\n\n\tconst insertRes = await documentBrickServices.insertBrickTables(context, {\n\t\ttables: sortedTables,\n\t\tcollection: collectionRes.data,\n\t});\n\tif (insertRes.error) return insertRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tversionId: newVersionRes.data.id,\n\t\t\tcontentId: versionRes.data.content_id,\n\t\t\tsourceVersionType: versionRes.data.type,\n\t\t},\n\t};\n};\n\nexport default cloneVersion;\n"],"mappings":"wuBAiBA,MAAM,EAeF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAW,IAAI,EACpB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EACM,EAAiB,IAAI,EAC1B,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EAAgBA,EAAqC,EAAS,CACnE,IAAK,EAAK,aACX,CAAC,EACD,GAAI,EAAc,MAAO,OAAO,EAEhC,IAAM,EAAqB,MAAMC,EAAgB,EAAS,CACzD,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,GAAM,CAAC,EAAsB,GAAgB,MAAM,QAAQ,IAAI,CAC9D,EAAqB,EAAS,EAAK,aAAa,EAChD,EAAc,EAAS,EAAK,aAAa,CAC1C,CAAC,EACD,GAAI,EAAqB,MAAO,OAAO,EACvC,GAAI,EAAa,MAAO,OAAO,EAE/B,GAAM,CAAC,EAAY,EAAgB,GAAkB,MAAM,QAAQ,IAAI,CACtE,EAAS,aACR,CACC,OAAQ,CAAC,KAAM,OAAQ,cAAe,YAAY,EAClD,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,aACb,CACD,EACA,WAAY,CACX,QAAS,GACT,aAAc,CACb,QAAS,EAAK,iDAAiD,EAC/D,OAAQ,GACT,CACD,CACD,EACA,CACC,UAAW,EAAa,KAAK,OAC9B,CACD,EACA,EAAe,0BACd,CACC,UAAW,EAAK,cAChB,WAAY,EAAK,WACjB,aAAc,EAAqB,IACpC,EACA,CACC,UAAW,EAAa,KAAK,OAC9B,CACD,EACA,EAAgC,EAAS,EAAK,aAAa,CAC5D,CAAC,EACD,GAAI,EAAW,MAAO,OAAO,EAC7B,GAAI,EAAe,MAAO,OAAO,EACjC,GAAI,EAAe,MAAO,OAAO,EAEjC,GAAI,EAAe,OAAS,IAAA,GAC3B,MAAO,CACN,MAAO,CACN,OAAQ,IACR,QAAS,EAAK,iDAAiD,CAChE,EACA,KAAM,IAAA,EACP,EAGD,GAAI,EAAW,KAAK,cAAgB,EAAK,WACxC,MAAO,CACN,MAAO,CACN,KAAM,QACN,QAAS,EAAK,iDAAiD,EAC/D,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAgB,MAAM,EAAS,aACpC,CACC,KAAM,CACL,YAAa,EAAK,WAClB,eAAgB,EAAK,cACrB,wBAAyB,EAAe,KACxC,KAAM,EAAK,cACX,cAAe,EAAK,cACpB,WAAY,EAAW,KAAK,WAC5B,WAAY,EAAK,OACjB,WAAY,EAAK,MAClB,EACA,UAAW,CAAC,IAAI,EAChB,WAAY,CACX,QAAS,GACT,aAAc,CACb,OAAQ,IACR,QAAS,EAAK,qCAAqC,CACpD,CACD,CACD,EACA,CACC,UAAW,EAAa,KAAK,OAC9B,CACD,EACA,GAAI,EAAc,MAAO,OAAO,EAEhC,IAAM,EAAU,EAAW,CAAO,EA0B5B,EAAY,MAAME,EAAwC,EAAS,CACxE,OA1BmB,EAAqB,CACxC,WAAY,EAAc,KAC1B,WAAY,EAAK,WACjB,UAAW,EAAc,KAAK,GAC9B,aAAc,EAAQ,OAAO,aAC7B,OAAQD,EAAwB,eAAe,CAC9C,YAAa,EAAe,KAC5B,aAAc,EAAqB,KACnC,QAAS,CAAE,KAAM,CAAC,CAAE,EACpB,WAAY,EAAc,KAC1B,OAAQ,EAAQ,OAChB,KAAM,CACP,CAAC,EACD,OAAQA,EAAwB,qBAAqB,CACpD,YAAa,EAAe,KAC5B,aAAc,EAAqB,KACnC,QAAS,CAAE,KAAM,CAAC,CAAE,EACpB,WAAY,EAAc,KAC1B,OAAQ,EAAQ,OAChB,KAAM,CACP,CAAC,EACD,mBAAoB,EAAQ,OAAO,GAAG,OAAO,kBAC9C,CAC+B,CAAC,CAAC,MAAM,EAAG,IAAM,EAAE,SAAW,EAAE,QAGtD,EACR,WAAY,EAAc,IAC3B,CAAC,EAGD,OAFI,EAAU,MAAc,EAErB,CACN,MAAO,IAAA,GACP,KAAM,CACL,UAAW,EAAc,KAAK,GAC9B,UAAW,EAAW,KAAK,WAC3B,kBAAmB,EAAW,KAAK,IACpC,CACD,CACD"}