@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 3.54 kB
Source Map (JSON)
{"version":3,"file":"move-folder.mjs","names":[],"sources":["../../../src/services/media/move-folder.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport cacheKeys from \"../../libs/kv/cache-keys.js\";\nimport { invalidateHttpCacheTags } from \"../../libs/kv/http-cache.js\";\nimport { MediaRepository } from \"../../libs/repositories/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\nimport checkFolderAccess from \"../media-folders/checks/check-folder-access.js\";\nimport checkFolderTenantCompatibility from \"./helpers/check-folder-tenant-compatibility.js\";\nimport clearClientMediaSingleCache from \"./helpers/clear-client-media-cache.js\";\n\nconst moveFolder: ServiceFn<\n\t[\n\t\t{\n\t\t\tid: number;\n\t\t\tfolderId: number | null;\n\t\t\tuserId: number;\n\t\t},\n\t],\n\tnumber | undefined\n> = async (context, data) => {\n\tconst Media = new MediaRepository(context.db.client, context.config.db);\n\n\tconst folderAccessRes = await checkFolderAccess(context, {\n\t\tfolderId: data.folderId,\n\t});\n\tif (folderAccessRes.error) return folderAccessRes;\n\n\tconst mediaRes = await Media.selectSingleById({\n\t\tid: data.id,\n\t\ttenantKey: context.request.tenantKey,\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t\tdefaultError: {\n\t\t\t\tmessage: copy(\"server:core.media.not.found.message\"),\n\t\t\t\tstatus: 404,\n\t\t\t},\n\t\t},\n\t});\n\tif (mediaRes.error) return mediaRes;\n\n\tif (mediaRes.data.is_deleted) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tmessage: copy(\"server:core.media.move.deleted.denied\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst folderTenantRes = checkFolderTenantCompatibility({\n\t\tfolderId: data.folderId,\n\t\tfolderTenantKey: folderAccessRes.data?.tenant_key ?? null,\n\t\tmediaTenantKey: mediaRes.data.tenant_key,\n\t});\n\tif (folderTenantRes.error) return folderTenantRes;\n\n\tconst mediaUpdateRes = await Media.updateSingle({\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\tdata: {\n\t\t\tfolder_id: data.folderId,\n\t\t\tupdated_by: data.userId,\n\t\t},\n\t\treturning: [\"id\"],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t},\n\t});\n\tif (mediaUpdateRes.error) return mediaUpdateRes;\n\n\tawait Promise.all([\n\t\tclearClientMediaSingleCache(context, data.id),\n\t\tinvalidateHttpCacheTags(context, [cacheKeys.http.tags.clientMedia]),\n\t]);\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: mediaUpdateRes.data.id,\n\t};\n};\n\nexport default moveFolder;\n"],"mappings":"wYASA,MAAM,EASF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAQ,IAAI,EAAgB,EAAQ,GAAG,OAAQ,EAAQ,OAAO,EAAE,EAEhE,EAAkB,MAAM,EAAkB,EAAS,CACxD,SAAU,EAAK,QAChB,CAAC,EACD,GAAI,EAAgB,MAAO,OAAO,EAElC,IAAM,EAAW,MAAM,EAAM,iBAAiB,CAC7C,GAAI,EAAK,GACT,UAAW,EAAQ,QAAQ,UAC3B,WAAY,CACX,QAAS,GACT,aAAc,CACb,QAAS,EAAK,qCAAqC,EACnD,OAAQ,GACT,CACD,CACD,CAAC,EACD,GAAI,EAAS,MAAO,OAAO,EAE3B,GAAI,EAAS,KAAK,WACjB,MAAO,CACN,MAAO,CACN,KAAM,QACN,QAAS,EAAK,uCAAuC,EACrD,OAAQ,GACT,CACD,EAGD,IAAM,EAAkB,EAA+B,CACtD,SAAU,EAAK,SACf,gBAAiB,EAAgB,MAAM,YAAc,KACrD,eAAgB,EAAS,KAAK,UAC/B,CAAC,EACD,GAAI,EAAgB,MAAO,OAAO,EAElC,IAAM,EAAiB,MAAM,EAAM,aAAa,CAC/C,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAK,EACb,CACD,EACA,KAAM,CACL,UAAW,EAAK,SAChB,WAAY,EAAK,MAClB,EACA,UAAW,CAAC,IAAI,EAChB,WAAY,CACX,QAAS,EACV,CACD,CAAC,EAQD,OAPI,EAAe,MAAc,GAEjC,MAAM,QAAQ,IAAI,CACjB,EAA4B,EAAS,EAAK,EAAE,EAC5C,EAAwB,EAAS,CAAC,EAAU,KAAK,KAAK,WAAW,CAAC,CACnE,CAAC,EAEM,CACN,MAAO,IAAA,GACP,KAAM,EAAe,KAAK,EAC3B,EACD"}