@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 4.47 kB
Source Map (JSON)
{"version":3,"file":"rollback-version-create.mjs","names":[],"sources":["../../../../src/services/documents-versions/helpers/rollback-version-create.ts"],"sourcesContent":["import type { LucidVersionTableName } from \"../../../libs/db/types.js\";\nimport logger from \"../../../libs/logger/index.js\";\nimport type { DocumentVersionsRepository } from \"../../../libs/repositories/index.js\";\nimport type { LucidErrorData } from \"../../../types/errors.js\";\nimport type { ServiceFn } from \"../../../utils/services/types.js\";\n\nconst rollbackVersionCreate: ServiceFn<\n\t[\n\t\t{\n\t\t\tcollectionKey: string;\n\t\t\tdocumentId: number;\n\t\t\tnewVersionId?: number;\n\t\t\tpreviousLatestId?: number;\n\t\t\ttableName: LucidVersionTableName;\n\t\t\tversions: DocumentVersionsRepository;\n\t\t},\n\t],\n\tundefined\n> = async (context, data) => {\n\tif (context.db.client.isTransaction) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tlet newVersionCleanupFailed = false;\n\tlet latestRestoreFailed = false;\n\tlet rollbackError: LucidErrorData | undefined;\n\n\tif (data.newVersionId === undefined) {\n\t\tconst deleteNewVersionRes = await data.versions.deleteSingle(\n\t\t\t{\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"document_id\",\n\t\t\t\t\t\toperator: \"=\",\n\t\t\t\t\t\tvalue: data.documentId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"type\",\n\t\t\t\t\t\toperator: \"=\",\n\t\t\t\t\t\tvalue: \"latest\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: data.tableName,\n\t\t\t},\n\t\t);\n\t\tnewVersionCleanupFailed = deleteNewVersionRes.error !== undefined;\n\t\trollbackError = deleteNewVersionRes.error;\n\t}\n\n\tif (data.previousLatestId !== undefined) {\n\t\tconst restorePreviousRes = await data.versions.updateSingle(\n\t\t\t{\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.previousLatestId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdata: {\n\t\t\t\t\ttype: \"latest\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: data.tableName,\n\t\t\t},\n\t\t);\n\t\tlatestRestoreFailed = restorePreviousRes.error !== undefined;\n\t\trollbackError ??= restorePreviousRes.error;\n\t}\n\n\tif (data.newVersionId !== undefined && !latestRestoreFailed) {\n\t\tconst deleteNewVersionRes = await data.versions.deleteSingle(\n\t\t\t{\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.newVersionId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: data.tableName,\n\t\t\t},\n\t\t);\n\t\tnewVersionCleanupFailed = deleteNewVersionRes.error !== undefined;\n\t\trollbackError ??= deleteNewVersionRes.error;\n\t}\n\n\tif (newVersionCleanupFailed || latestRestoreFailed) {\n\t\tlogger.error({\n\t\t\tmessage: \"Failed to roll back document version creation\",\n\t\t\tdata: {\n\t\t\t\tcollectionKey: data.collectionKey,\n\t\t\t\tdocumentId: data.documentId,\n\t\t\t\tnewVersionId: data.newVersionId,\n\t\t\t\tpreviousLatestId: data.previousLatestId,\n\t\t\t\tnewVersionCleanupFailed,\n\t\t\t\tlatestRestoreFailed,\n\t\t\t},\n\t\t});\n\t}\n\n\tif (rollbackError) {\n\t\treturn {\n\t\t\terror: rollbackError,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: undefined,\n\t};\n};\n\nexport default rollbackVersionCreate;\n"],"mappings":"8CAMA,MAAM,EAYF,MAAO,EAAS,IAAS,CAC5B,GAAI,EAAQ,GAAG,OAAO,cACrB,MAAO,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,EAGD,IAAI,EAA0B,GAC1B,EAAsB,GACtB,EAEJ,GAAI,EAAK,eAAiB,IAAA,GAAW,CACpC,IAAM,EAAsB,MAAM,EAAK,SAAS,aAC/C,CACC,MAAO,CACN,CACC,IAAK,cACL,SAAU,IACV,MAAO,EAAK,UACb,EACA,CACC,IAAK,OACL,SAAU,IACV,MAAO,QACR,CACD,CACD,EACA,CACC,UAAW,EAAK,SACjB,CACD,EACA,EAA0B,EAAoB,QAAU,IAAA,GACxD,EAAgB,EAAoB,KACrC,CAEA,GAAI,EAAK,mBAAqB,IAAA,GAAW,CACxC,IAAM,EAAqB,MAAM,EAAK,SAAS,aAC9C,CACC,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,gBACb,CACD,EACA,KAAM,CACL,KAAM,QACP,CACD,EACA,CACC,UAAW,EAAK,SACjB,CACD,EACA,EAAsB,EAAmB,QAAU,IAAA,GACnD,IAAkB,EAAmB,KACtC,CAEA,GAAI,EAAK,eAAiB,IAAA,IAAa,CAAC,EAAqB,CAC5D,IAAM,EAAsB,MAAM,EAAK,SAAS,aAC/C,CACC,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,YACb,CACD,CACD,EACA,CACC,UAAW,EAAK,SACjB,CACD,EACA,EAA0B,EAAoB,QAAU,IAAA,GACxD,IAAkB,EAAoB,KACvC,CAuBA,OArBI,GAA2B,IAC9B,EAAO,MAAM,CACZ,QAAS,gDACT,KAAM,CACL,cAAe,EAAK,cACpB,WAAY,EAAK,WACjB,aAAc,EAAK,aACnB,iBAAkB,EAAK,iBACvB,0BACA,qBACD,CACD,CAAC,EAGE,EACI,CACN,MAAO,EACP,KAAM,IAAA,EACP,EAGM,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,CACD"}