@wrcb/cb-common 1.0.385 → 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 uploadMiddleware: {
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.uploadMiddleware = void 0;
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.uploadMiddleware = {
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
- const files = req.files || (req.file ? [req.file] : []);
30
- if (!files.length) {
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
- const uploadPromises = files.map((file) => __awaiter(void 0, void 0, void 0, function* () {
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: ((_a = req.currentUser) === null || _a === void 0 ? void 0 : _a.id) || undefined,
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.385",
3
+ "version": "1.0.386",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",