UNPKG

@lucidcms/core

Version:

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

1 lines 4.87 kB
{"version":3,"file":"update-single.mjs","names":[],"sources":["../../../src/services/media-folders/update-single.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport { MediaFoldersRepository } from \"../../libs/repositories/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\nimport checkFolderAccess from \"./checks/check-folder-access.js\";\n\nconst updateSingle: ServiceFn<\n\t[\n\t\t{\n\t\t\tid: number;\n\t\t\ttitle?: string;\n\t\t\tparentFolderId?: number | null;\n\t\t\tuserId: number;\n\t\t},\n\t],\n\tnumber\n> = async (context, data) => {\n\tconst MediaFolders = new MediaFoldersRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tif (data.parentFolderId === data.id) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tmessage: copy(\"server:core.media.folders.parents.circular\"),\n\t\t\t\tstatus: 400,\n\t\t\t\terrors: {\n\t\t\t\t\tfields: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: \"parentFolderId\",\n\t\t\t\t\t\t\tmessage: copy(\"server:core.media.folders.parents.circular\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst folderAccessRes = await checkFolderAccess(context, {\n\t\tfolderId: data.id,\n\t});\n\tif (folderAccessRes.error) return folderAccessRes;\n\n\tconst parentFolderAccessRes = await checkFolderAccess(context, {\n\t\tfolderId: data.parentFolderId,\n\t});\n\tif (parentFolderAccessRes.error) return parentFolderAccessRes;\n\n\t//* A global folder nested under a tenant folder would disappear for other tenants.\n\tif (\n\t\tfolderAccessRes.data?.tenant_key === null &&\n\t\tparentFolderAccessRes.data?.tenant_key !== undefined &&\n\t\tparentFolderAccessRes.data.tenant_key !== null\n\t) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tmessage: copy(\"server:core.media.folders.parents.tenant.mismatch\"),\n\t\t\t\tstatus: 400,\n\t\t\t\terrors: {\n\t\t\t\t\tfields: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: \"parentFolderId\",\n\t\t\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\t\t\"server:core.media.folders.parents.tenant.mismatch\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tif (data.parentFolderId) {\n\t\tconst circularParentsRes = await MediaFolders.checkCircularParents({\n\t\t\tfolderId: data.id,\n\t\t\tparentFolderId: data.parentFolderId,\n\t\t\ttenantKey: context.request.tenantKey,\n\t\t});\n\t\tif (circularParentsRes.error) return circularParentsRes;\n\n\t\tif (circularParentsRes.data) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\"server:core.media.folders.parents.circular\"),\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\terrors: {\n\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"parentFolderId\",\n\t\t\t\t\t\t\t\tmessage: copy(\"server:core.media.folders.parents.circular\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdata: undefined,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst updateMediaFolderRes = await MediaFolders.updateSingle({\n\t\tdata: {\n\t\t\ttitle: data.title,\n\t\t\tparent_folder_id: data.parentFolderId,\n\t\t\tupdated_by: data.userId,\n\t\t\tupdated_at: new Date().toISOString(),\n\t\t},\n\t\twhere: [\n\t\t\t{\n\t\t\t\tkey: \"id\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: data.id,\n\t\t\t},\n\t\t],\n\t\treturning: [\"id\"],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t},\n\t});\n\tif (updateMediaFolderRes.error) return updateMediaFolderRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: updateMediaFolderRes.data.id,\n\t};\n};\n\nexport default updateSingle;\n"],"mappings":"yJAKA,MAAM,EAUF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAe,IAAI,EACxB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEA,GAAI,EAAK,iBAAmB,EAAK,GAChC,MAAO,CACN,MAAO,CACN,QAAS,EAAK,4CAA4C,EAC1D,OAAQ,IACR,OAAQ,CACP,OAAQ,CACP,CACC,IAAK,iBACL,QAAS,EAAK,4CAA4C,CAC3D,CACD,CACD,CACD,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAkB,MAAM,EAAkB,EAAS,CACxD,SAAU,EAAK,EAChB,CAAC,EACD,GAAI,EAAgB,MAAO,OAAO,EAElC,IAAM,EAAwB,MAAM,EAAkB,EAAS,CAC9D,SAAU,EAAK,cAChB,CAAC,EACD,GAAI,EAAsB,MAAO,OAAO,EAGxC,GACC,EAAgB,MAAM,aAAe,MACrC,EAAsB,MAAM,aAAe,IAAA,IAC3C,EAAsB,KAAK,aAAe,KAE1C,MAAO,CACN,MAAO,CACN,QAAS,EAAK,mDAAmD,EACjE,OAAQ,IACR,OAAQ,CACP,OAAQ,CACP,CACC,IAAK,iBACL,QAAS,EACR,mDACD,CACD,CACD,CACD,CACD,EACA,KAAM,IAAA,EACP,EAGD,GAAI,EAAK,eAAgB,CACxB,IAAM,EAAqB,MAAM,EAAa,qBAAqB,CAClE,SAAU,EAAK,GACf,eAAgB,EAAK,eACrB,UAAW,EAAQ,QAAQ,SAC5B,CAAC,EACD,GAAI,EAAmB,MAAO,OAAO,EAErC,GAAI,EAAmB,KACtB,MAAO,CACN,MAAO,CACN,QAAS,EAAK,4CAA4C,EAC1D,OAAQ,IACR,OAAQ,CACP,OAAQ,CACP,CACC,IAAK,iBACL,QAAS,EAAK,4CAA4C,CAC3D,CACD,CACD,CACD,EACA,KAAM,IAAA,EACP,CAEF,CAEA,IAAM,EAAuB,MAAM,EAAa,aAAa,CAC5D,KAAM,CACL,MAAO,EAAK,MACZ,iBAAkB,EAAK,eACvB,WAAY,EAAK,OACjB,WAAY,IAAI,KAAK,CAAA,CAAE,YAAY,CACpC,EACA,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,EACb,CACD,EACA,UAAW,CAAC,IAAI,EAChB,WAAY,CACX,QAAS,EACV,CACD,CAAC,EAGD,OAFI,EAAqB,MAAc,EAEhC,CACN,MAAO,IAAA,GACP,KAAM,EAAqB,KAAK,EACjC,CACD"}