32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
|
|
// 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);
|
|||
|
|
}
|
|||
|
|
}
|