Files
photo-live/services/api/src/uploads/uploads.controller.ts
T

32 lines
1.2 KiB
TypeScript
Raw Normal View History

// services/api/src/uploads/uploads.controller.ts —— /uploads 端点(Task 18 起)。
// 方法名与契约 operationId 一一对应(initUpload;Task 19 增补 renewUploadCredential/
// completeUpload/listUploads)。控制器级 SessionGuard:端点全需认证。职责:
// 透传认证用户 + 查询参数规整(parseLimit/parseCursor 复用相册控制器导出)。
import {
Body,
Controller,
Post,
Req,
UseGuards,
} from '@nestjs/common';
import { userOf } from '../albums/albums.controller';
import { AuthenticatedRequest, SessionGuard } from '../auth/session.guard';
import { UploadsService } from './uploads.service';
import type { UploadInitResponse } from './uploads.service';
import { UploadInitRequestDto } from './dto';
@Controller('uploads')
@UseGuards(SessionGuard)
export class UploadsController {
constructor(private readonly uploadsService: UploadsService) {}
/** 契约 201(幂等重复调用返回原会话,同 201)。 */
@Post()
initUpload(
@Body() dto: UploadInitRequestDto,
@Req() req: AuthenticatedRequest,
): Promise<UploadInitResponse> {
return this.uploadsService.init(userOf(req), dto);
}
}