"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MediaController = void 0; const common_1 = require("@nestjs/common"); const platform_express_1 = require("@nestjs/platform-express"); const swagger_1 = require("@nestjs/swagger"); const permissions_decorator_1 = require("../../common/decorators/permissions.decorator"); const roles_decorator_1 = require("../../common/decorators/roles.decorator"); const permissions_guard_1 = require("../../common/guards/permissions.guard"); const roles_guard_1 = require("../../common/guards/roles.guard"); const jwt_auth_guard_1 = require("../auth/guards/jwt-auth.guard"); const user_role_enum_1 = require("../users/enums/user-role.enum"); const filter_media_assets_dto_1 = require("./dto/filter-media-assets.dto"); const update_media_asset_dto_1 = require("./dto/update-media-asset.dto"); const upload_media_dto_1 = require("./dto/upload-media.dto"); const media_service_1 = require("./media.service"); let MediaController = class MediaController { mediaService; constructor(mediaService) { this.mediaService = mediaService; } getOverview() { return this.mediaService.getLibraryOverview(); } findAll(filters) { return this.mediaService.findAll(filters); } upload(files, dto) { return this.mediaService.uploadMany(files, dto); } findOne(id) { return this.mediaService.findOne(id); } update(id, dto) { return this.mediaService.update(id, dto); } remove(id) { return this.mediaService.remove(id); } }; exports.MediaController = MediaController; __decorate([ (0, common_1.Get)('overview'), (0, swagger_1.ApiOperation)({ summary: 'Get media library section and folder counts' }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], MediaController.prototype, "getOverview", null); __decorate([ (0, common_1.Get)(), (0, swagger_1.ApiOperation)({ summary: 'List media assets with filters and pagination' }), __param(0, (0, common_1.Query)()), __metadata("design:type", Function), __metadata("design:paramtypes", [filter_media_assets_dto_1.FilterMediaAssetsDto]), __metadata("design:returntype", void 0) ], MediaController.prototype, "findAll", null); __decorate([ (0, common_1.Post)('upload'), (0, swagger_1.ApiOperation)({ summary: 'Upload one or more files into the media library' }), (0, swagger_1.ApiConsumes)('multipart/form-data'), (0, swagger_1.ApiBody)({ type: upload_media_dto_1.UploadMediaDto }), (0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)('files', 30)), __param(0, (0, common_1.UploadedFiles)()), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Array, upload_media_dto_1.UploadMediaDto]), __metadata("design:returntype", void 0) ], MediaController.prototype, "upload", null); __decorate([ (0, common_1.Get)(':id'), (0, swagger_1.ApiOperation)({ summary: 'Get one media asset' }), __param(0, (0, common_1.Param)('id')), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], MediaController.prototype, "findOne", null); __decorate([ (0, common_1.Patch)(':id'), (0, swagger_1.ApiOperation)({ summary: 'Update media asset metadata' }), __param(0, (0, common_1.Param)('id')), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [String, update_media_asset_dto_1.UpdateMediaAssetDto]), __metadata("design:returntype", void 0) ], MediaController.prototype, "update", null); __decorate([ (0, common_1.Delete)(':id'), (0, swagger_1.ApiOperation)({ summary: 'Delete media asset and underlying object storage file' }), __param(0, (0, common_1.Param)('id')), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], MediaController.prototype, "remove", null); exports.MediaController = MediaController = __decorate([ (0, swagger_1.ApiTags)('Admin Media'), (0, swagger_1.ApiBearerAuth)(), (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, permissions_guard_1.PermissionsGuard), (0, roles_decorator_1.Roles)(user_role_enum_1.UserRole.ADMIN), (0, permissions_decorator_1.Permissions)('media.manage'), (0, common_1.Controller)('admin/media'), __metadata("design:paramtypes", [media_service_1.MediaService]) ], MediaController); //# sourceMappingURL=media.controller.js.map