@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.06 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/media-awaiting-sync.mjs";import n from"../../libs/repositories/media-upload-sessions.mjs";import{resolveMediaKeyTenant as r}from"../../utils/media/media-key-tenant.mjs";import i from"./checks/check-media-key-access.mjs";import{hasResumableUploadSessions as a}from"../../libs/media/resumable-upload-sessions.mjs";const o=async(o,s)=>{let c=new n(o.db.client,o.config.db),l=new t(o.db.client,o.config.db),u=await c.selectSingle({select:[`session_id`,`key`,`adapter_key`,`adapter_upload_id`,`status`],where:[{key:`session_id`,operator:`=`,value:s.sessionId},{key:`status`,operator:`=`,value:`active`}],validation:{enabled:!0,defaultError:{status:404}}});if(u.error)return u;let d=await i(o,{key:u.data.key});if(d.error)return d;if(!o.media)return{error:{type:`basic`,status:400,message:e(`server:core.media.adapters.not.enabled`)},data:void 0};if(u.data.adapter_key!==o.media.key)return{error:{type:`basic`,status:400,message:e(`server:core.media.upload.sessions.adapter.changed`)},data:void 0};if(!a(o.media))return{error:{type:`basic`,status:400,message:e(`server:core.media.upload.sessions.resumable.not.supported`)},data:void 0};if(!u.data.adapter_upload_id)return{error:{type:`basic`,status:400,message:e(`server:core.media.upload.sessions.missing.adapter.upload.id`)},data:void 0};let f=await o.media.completeUploadSession(o,{key:u.data.key,uploadId:u.data.adapter_upload_id,parts:s.parts,tenant:r(o.config,u.data.key)});if(f.error)return f;await l.deleteSingle({where:[{key:`key`,operator:`=`,value:u.data.key}]});let p=new Date().toISOString(),[m,h]=await Promise.all([l.createSingle({data:{key:u.data.key,timestamp:p},returning:[`key`],validation:{enabled:!0}}),c.updateSingle({where:[{key:`session_id`,operator:`=`,value:s.sessionId}],data:{status:`completed`,updated_at:p},returning:[`session_id`],validation:{enabled:!0}})]);return m.error?m:h.error?h:{error:void 0,data:{key:u.data.key}}};export{o as default};
//# sourceMappingURL=complete-upload-session.mjs.map