@wrcb/cb-common 1.0.384 → 1.0.386
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import multer from 'multer';
|
|
1
2
|
import { Request, Response, NextFunction } from 'express';
|
|
2
3
|
import { UploadResult } from '../storage/types';
|
|
3
4
|
declare global {
|
|
4
5
|
namespace Express {
|
|
5
6
|
interface Request {
|
|
6
7
|
uploadResults?: UploadResult[];
|
|
8
|
+
uploadResultsByField?: Record<string, UploadResult[]>;
|
|
7
9
|
}
|
|
8
10
|
}
|
|
9
11
|
}
|
|
10
|
-
export declare const
|
|
12
|
+
export declare const uploadMedia: {
|
|
11
13
|
single: (fieldName: string) => import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
12
14
|
multiple: (fieldName: string, maxCount?: number) => import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
15
|
+
fields: (fields: multer.Field[]) => import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
13
16
|
processUpload: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
14
17
|
};
|
|
@@ -12,32 +12,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.uploadMedia = void 0;
|
|
16
16
|
const multer_1 = __importDefault(require("multer"));
|
|
17
17
|
const factory_1 = require("../storage/factory");
|
|
18
18
|
const tenant_1 = require("../types/tenant");
|
|
19
19
|
const storageService_1 = require("../storage/services/storageService");
|
|
20
20
|
const storage = multer_1.default.memoryStorage();
|
|
21
21
|
const upload = (0, multer_1.default)({ storage });
|
|
22
|
-
exports.
|
|
22
|
+
exports.uploadMedia = {
|
|
23
23
|
single: (fieldName) => upload.single(fieldName),
|
|
24
24
|
multiple: (fieldName, maxCount) => upload.array(fieldName, maxCount),
|
|
25
|
+
fields: (fields) => upload.fields(fields),
|
|
25
26
|
processUpload: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
27
|
try {
|
|
27
28
|
const storageService = new storageService_1.StorageService(factory_1.StorageFactory.create());
|
|
28
29
|
const tenant = req.headers['x-tenant'] || tenant_1.Tenant.PoliticaBet;
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// Lidar com diferentes tipos de upload
|
|
31
|
+
let allFiles = [];
|
|
32
|
+
if (req.file) {
|
|
33
|
+
// Single file
|
|
34
|
+
allFiles = [req.file];
|
|
35
|
+
}
|
|
36
|
+
else if (req.files) {
|
|
37
|
+
if (Array.isArray(req.files)) {
|
|
38
|
+
// Multiple files (array)
|
|
39
|
+
allFiles = req.files;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Fields (object)
|
|
43
|
+
allFiles = Object.values(req.files).flat();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!allFiles.length) {
|
|
31
47
|
return next();
|
|
32
48
|
}
|
|
33
|
-
|
|
49
|
+
// Processar todos os arquivos
|
|
50
|
+
const uploadPromises = allFiles.map((file) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
51
|
var _a;
|
|
35
52
|
const isVideo = file.mimetype.startsWith('video/');
|
|
36
|
-
// Solução 1: Declarar o tipo explicitamente
|
|
37
53
|
const type = isVideo ? 'video' : 'photo';
|
|
38
54
|
const options = {
|
|
39
55
|
tenant,
|
|
40
|
-
userId: (
|
|
56
|
+
userId: (_a = req.currentUser) === null || _a === void 0 ? void 0 : _a.id,
|
|
41
57
|
targetId: req.body.targetId || undefined,
|
|
42
58
|
type,
|
|
43
59
|
generateThumbnail: true
|
|
@@ -51,6 +67,15 @@ exports.uploadMiddleware = {
|
|
|
51
67
|
}));
|
|
52
68
|
const results = yield Promise.all(uploadPromises);
|
|
53
69
|
req.uploadResults = results;
|
|
70
|
+
// Organizar resultados por campo se for fields
|
|
71
|
+
if (req.files && !Array.isArray(req.files)) {
|
|
72
|
+
req.uploadResultsByField = {};
|
|
73
|
+
let index = 0;
|
|
74
|
+
for (const [fieldName, files] of Object.entries(req.files)) {
|
|
75
|
+
req.uploadResultsByField[fieldName] = results.slice(index, index + files.length);
|
|
76
|
+
index += files.length;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
54
79
|
next();
|
|
55
80
|
}
|
|
56
81
|
catch (error) {
|