diff --git a/packages/server/services/files/queues/TransmuxedUpload/index.js b/packages/server/services/files/queues/TransmuxedUpload/index.js new file mode 100644 index 00000000..c3cba0ff --- /dev/null +++ b/packages/server/services/files/queues/TransmuxedUpload/index.js @@ -0,0 +1,49 @@ +import path from "node:path" + +import fs from "node:fs" +import RemoteUpload from "@services/remoteUpload" + +export default { + id: "remote_upload", + maxJobs: 10, + process: async (job) => { + const { + filePath, + parentDir, + service, + useCompression, + cachePath, + transmux, + transmuxOptions, + } = job.data + + console.log("[JOB][remote_upload] Processing job >", job.data) + + try { + const result = await RemoteUpload({ + parentDir: parentDir, + source: filePath, + service: service, + useCompression: useCompression, + transmux: transmux, + transmuxOptions: transmuxOptions, + cachePath: cachePath, + onProgress: (progress) => { + job.progress(progress) + }, + }) + + await fs.promises + .rm(filePath, { recursive: true, force: true }) + .catch(() => null) + + return result + } catch (error) { + await fs.promises + .rm(filePath, { recursive: true, force: true }) + .catch(() => null) + + throw error + } + }, +} diff --git a/packages/server/services/files/queues/TransmuxedUpload/worker.js b/packages/server/services/files/queues/TransmuxedUpload/worker.js new file mode 100644 index 00000000..39bf8728 --- /dev/null +++ b/packages/server/services/files/queues/TransmuxedUpload/worker.js @@ -0,0 +1,43 @@ +import RemoteUpload from "@services/remoteUpload" +import fs from "node:fs" + +module.exports = async (job) => { + const { + filePath, + parentDir, + service, + useCompression, + cachePath, + transmux, + transmuxOptions, + } = job.data + + console.log("[JOB][remote_upload] Processing job >", job.data) + + try { + const result = await RemoteUpload({ + parentDir: parentDir, + source: filePath, + service: service, + useCompression: useCompression, + transmux: transmux, + transmuxOptions: transmuxOptions, + cachePath: cachePath, + onProgress: (progress) => { + job.progress(progress) + }, + }) + + await fs.promises + .rm(filePath, { recursive: true, force: true }) + .catch(() => null) + + return result + } catch (error) { + await fs.promises + .rm(filePath, { recursive: true, force: true }) + .catch(() => null) + + throw error + } +}