Files
aurak/server/src/search-history/search-history.controller.ts
T
Developer 0a9588abb7 feat: implement QuestionBank CRUD with pagination and template query
- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
2026-04-23 17:19:11 +08:00

70 lines
1.6 KiB
TypeScript

import {
Controller,
Get,
Post,
Delete,
Body,
Param,
Query,
UseGuards,
Request,
} from '@nestjs/common';
import { CombinedAuthGuard } from '../auth/combined-auth.guard';
import { SearchHistoryService } from './search-history.service';
import { I18nService } from '../i18n/i18n.service';
@Controller('search-history')
@UseGuards(CombinedAuthGuard)
export class SearchHistoryController {
constructor(
private readonly searchHistoryService: SearchHistoryService,
private readonly i18nService: I18nService,
) {}
@Get()
async findAll(
@Request() req,
@Query('page') page: string = '1',
@Query('limit') limit: string = '20',
) {
const pageNum = parseInt(page, 10) || 1;
const limitNum = parseInt(limit, 10) || 20;
return await this.searchHistoryService.findAll(
req.user.id,
req.user.tenantId,
pageNum,
limitNum,
);
}
@Get(':id')
async findOne(@Param('id') id: string, @Request() req) {
return await this.searchHistoryService.findOne(
id,
req.user.id,
req.user.tenantId,
);
}
@Post()
async create(
@Body() body: { title: string; selectedGroups?: string[] },
@Request() req,
) {
const history = await this.searchHistoryService.create(
req.user.id,
req.user.tenantId,
body.title,
body.selectedGroups,
);
return { id: history.id };
}
@Delete(':id')
async remove(@Param('id') id: string, @Request() req) {
await this.searchHistoryService.remove(id, req.user.id, req.user.tenantId);
return { message: this.i18nService.getMessage('searchHistoryDeleted') };
}
}