{"version":3,"file":"fileExistsHandler.mjs","names":[],"sources":["../../src/endpoints/fileExistsHandler.ts"],"sourcesContent":["import type { PayloadHandler } from 'payload'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\nimport { MediaCloudErrors } from '../types/errors'\n\nimport { S3Store } from '../tus/stores/s3/s3Store'\n\ninterface GetFileExistsHandlerArgs {\n  getS3Store: () => S3Store\n  collection: string\n}\n\nexport function getFileExistsHandler(\n  args: GetFileExistsHandlerArgs\n): PayloadHandler {\n  const { getS3Store, collection } = args\n  const { throwError, logError } = useErrorHandler()\n\n  return async function (req) {\n    try {\n      const { routeParams, payload } = req\n      const filename = routeParams?.filename as string\n\n      if (!filename) {\n        throwError(MediaCloudErrors.FILE_MISSING_NAME)\n      }\n\n      // Check if file exists in Payload database\n      const { docs } = await payload.find({\n        collection,\n        where: {\n          filename: {\n            equals: filename,\n          },\n        },\n        limit: 1,\n        pagination: false,\n      })\n\n      if (docs.length > 0) {\n        return Response.json(\n          { message: 'File found [Payload]' },\n          { status: 200 }\n        )\n      }\n\n      // Check if completed file exists in S3\n      const url = getS3Store().getUrl(filename)\n      const s3Response = await fetch(url, { method: 'HEAD' })\n\n      if (s3Response.status === 200) {\n        return Response.json({ message: 'File found [S3]' }, { status: 200 })\n      }\n\n      return new Response(null, {\n        status: 204,\n      })\n    } catch (_error) {\n      logError(MediaCloudErrors.FILE_NOT_FOUND.message)\n      return Response.json({ message: 'Server error' }, { status: 500 })\n    }\n  }\n}\n"],"mappings":";;;;AAWA,SAAgB,qBACd,MACgB;CAChB,MAAM,EAAE,YAAY,eAAe;CACnC,MAAM,EAAE,YAAY,aAAa,iBAAiB;AAElD,QAAO,eAAgB,KAAK;AAC1B,MAAI;GACF,MAAM,EAAE,aAAa,YAAY;GACjC,MAAM,WAAW,aAAa;AAE9B,OAAI,CAAC,SACH,YAAW,iBAAiB,kBAAkB;GAIhD,MAAM,EAAE,SAAS,MAAM,QAAQ,KAAK;IAClC;IACA,OAAO,EACL,UAAU,EACR,QAAQ,UACT,EACF;IACD,OAAO;IACP,YAAY;IACb,CAAC;AAEF,OAAI,KAAK,SAAS,EAChB,QAAO,SAAS,KACd,EAAE,SAAS,wBAAwB,EACnC,EAAE,QAAQ,KAAK,CAChB;GAIH,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS;AAGzC,QAFmB,MAAM,MAAM,KAAK,EAAE,QAAQ,QAAQ,CAAC,EAExC,WAAW,IACxB,QAAO,SAAS,KAAK,EAAE,SAAS,mBAAmB,EAAE,EAAE,QAAQ,KAAK,CAAC;AAGvE,UAAO,IAAI,SAAS,MAAM,EACxB,QAAQ,KACT,CAAC;WACK,QAAQ;AACf,YAAS,iBAAiB,eAAe,QAAQ;AACjD,UAAO,SAAS,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAAE,QAAQ,KAAK,CAAC"}