UNPKG

@lucidcms/core

Version:

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

2 lines 3.33 kB
import e from"../../libs/repositories/document-versions.mjs";import{getTableNames as t}from"../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";import n from"../../libs/hooks/execute-hooks.mjs";import r from"../../libs/collection/migration/get-current-collection-migration-id.mjs";import i from"../documents-bricks/create-multiple.mjs";import a from"./helpers/rollback-version-create.mjs";import{randomUUID as o}from"node:crypto";const s=async(s,c)=>{let l=await t(s,c.collection.key);if(l.error)return l;let u=new e(s.db.client,s.config.db),d=await r(s,c.collection.key);if(d.error)return d;let f=`latest`,p=await u.selectSingle({select:[`id`],where:[{key:`document_id`,operator:`=`,value:c.documentId},{key:`type`,operator:`=`,value:f}]},{tableName:l.data.version});if(p.error)return p;let m=p.data?.id;if(m!==void 0){let e=await u.updateSingle({where:[{key:`id`,operator:`=`,value:m}],data:{type:`revision`}},{tableName:l.data.version});if(e.error)return e}let h=await u.createSingle({data:{collection_key:c.collection.key,collection_migration_id:d.data,document_id:c.documentId,type:f,content_id:o(),created_by:c.userId,updated_by:c.userId},returning:[`id`],validation:{enabled:!0}},{tableName:l.data.version});if(h.error)return await a(s,{collectionKey:c.collection.key,documentId:c.documentId,previousLatestId:m,tableName:l.data.version,versions:u}),h;let g=await n(s,{service:`documents`,event:`beforeUpsert`,config:s.config,collectionInstance:c.collection},{meta:{collection:c.collection,collectionKey:c.collection.key,userId:c.userId,collectionTableNames:l.data,tenantKey:s.request.tenantKey??null,execution:{mode:`upsert`,action:`create`,willPersist:!0}},data:{documentId:c.documentId,versionId:h.data.id,versionType:f,bricks:c.bricks,fields:c.fields}});if(g.error)return await a(s,{collectionKey:c.collection.key,documentId:c.documentId,newVersionId:h.data.id,previousLatestId:m,tableName:l.data.version,versions:u}),g;let _=await i(s,{versionId:h.data.id,documentId:c.documentId,bricks:g.data.bricks,fields:g.data.fields,collection:c.collection});if(_.error)return await a(s,{collectionKey:c.collection.key,documentId:c.documentId,newVersionId:h.data.id,previousLatestId:m,tableName:l.data.version,versions:u}),_;let v=await n(s,{service:`documents`,event:`afterUpsert`,config:s.config,collectionInstance:c.collection},{meta:{collection:c.collection,collectionKey:c.collection.key,userId:c.userId,collectionTableNames:l.data,tenantKey:s.request.tenantKey??null},data:{documentId:c.documentId,versionId:h.data.id,versionType:f,bricks:g.data.bricks||[],fields:g.data.fields||[]}});if(v.error)return await a(s,{collectionKey:c.collection.key,documentId:c.documentId,newVersionId:h.data.id,previousLatestId:m,tableName:l.data.version,versions:u}),v;if(m!==void 0){let e=c.collection.getData.revisions?await u.updateSingle({where:[{key:`id`,operator:`=`,value:m}],data:{collection_migration_id:d.data,created_by:c.userId}},{tableName:l.data.version}):await u.deleteSingle({where:[{key:`id`,operator:`=`,value:m}]},{tableName:l.data.version});if(e.error)return await a(s,{collectionKey:c.collection.key,documentId:c.documentId,newVersionId:h.data.id,previousLatestId:m,tableName:l.data.version,versions:u}),e}return{error:void 0,data:c.documentId}};export{s as default}; //# sourceMappingURL=create-single.mjs.map