diff --git a/services/mam-api/src/routes/upload.js b/services/mam-api/src/routes/upload.js index c987f4d..acc7fe1 100644 --- a/services/mam-api/src/routes/upload.js +++ b/services/mam-api/src/routes/upload.js @@ -3,7 +3,7 @@ import multer from 'multer'; import { Queue } from 'bullmq'; import { v4 as uuidv4 } from 'uuid'; import pool from '../db/pool.js'; -import { s3Client, uploadStream, deleteObject, S3_BUCKET } from '../s3/client.js'; +import { s3Client, uploadStream, deleteObject, getS3Bucket } from '../s3/client.js'; import { CreateMultipartUploadCommand, UploadPartCommand, @@ -103,7 +103,6 @@ router.post('/init', async (req, res, next) => { } const assetId = uuidv4(); - // Include assetId in the key so same-named files in a project never collide const s3Key = `originals/${assetId}/${filename}`; const tagsArray = tags ? (Array.isArray(tags) ? tags : [tags]) : []; @@ -123,7 +122,7 @@ router.post('/init', async (req, res, next) => { const multipartUpload = await s3Client.send( new CreateMultipartUploadCommand({ - Bucket: S3_BUCKET, + Bucket: getS3Bucket(), Key: s3Key, ContentType: contentType, }) @@ -152,7 +151,7 @@ router.post('/part', upload.single('file'), async (req, res, next) => { const partUpload = await s3Client.send( new UploadPartCommand({ - Bucket: S3_BUCKET, + Bucket: getS3Bucket(), Key: key, PartNumber: parseInt(partNumber, 10), UploadId: uploadId, @@ -182,11 +181,10 @@ router.post('/complete', async (req, res, next) => { await s3Client.send( new CompleteMultipartUploadCommand({ - Bucket: S3_BUCKET, + Bucket: getS3Bucket(), Key: key, UploadId: uploadId, MultipartUpload: { - // Accept both casings: api.js sends ETag (uppercase), defend against both Parts: parts.map(p => ({ ETag: p.ETag || p.etag, PartNumber: p.partNumber || p.PartNumber, @@ -195,8 +193,6 @@ router.post('/complete', async (req, res, next) => { }) ); - // Original file in S3 — queue proxy generation - // proxy worker will dispatch thumbnail once proxy is ready const result = await pool.query( `UPDATE assets SET status = 'processing', updated_at = NOW() @@ -216,7 +212,6 @@ router.post('/complete', async (req, res, next) => { outputKey: `proxies/${assetId}.mp4`, }); - // Sync AMPP folder — non-blocking syncToAmpp(asset.id, asset.project_id, asset.bin_id); res.json(asset); @@ -237,7 +232,7 @@ router.post('/abort', async (req, res, next) => { } await s3Client.send( - new AbortMultipartUploadCommand({ Bucket: S3_BUCKET, Key: key, UploadId: uploadId }) + new AbortMultipartUploadCommand({ Bucket: getS3Bucket(), Key: key, UploadId: uploadId }) ); await pool.query('DELETE FROM assets WHERE id = $1', [assetId]); @@ -260,7 +255,6 @@ router.post('/simple', upload.single('file'), async (req, res, next) => { } const assetId = uuidv4(); - // Include assetId in the key so same-named files in a project never collide const s3Key = `originals/${assetId}/${filename}`; const mimeType = contentType || req.file.mimetype; const tagsArray = tags ? (Array.isArray(tags) ? tags : [tags]) : []; @@ -289,14 +283,12 @@ router.post('/simple', upload.single('file'), async (req, res, next) => { const asset = result.rows[0]; - // Queue proxy — proxy worker dispatches thumbnail on completion await proxyQueue.add('generate', { assetId, inputKey: s3Key, outputKey: `proxies/${assetId}.mp4`, }); - // Sync AMPP folder — non-blocking syncToAmpp(assetId, projectId, binId || null); res.json(asset);