init: scaffold complet Sakuin — backend NestJS + frontend SvelteKit + CI/CD + deploy VPS
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 29s
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 29s
Backend: 5 modules (auth, user, work, list, health), AniList GraphQL proxy, SuperOAuth PKCE introspection, XP system, migrations TypeORM. Frontend: SvelteKit adapter-node, PWA manifest, dark theme, pages home/search/list/profile/callback. Infra: CI/CD Gitea vps-runner, Apache vhost SSL, pm2 sakuin-backend + sakuin-frontend, port 4002. License: BSL 1.1 (Apache 2.0 en 2028).
This commit is contained in:
19
backend/src/work/work.controller.ts
Normal file
19
backend/src/work/work.controller.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { WorkService } from './work.service';
|
||||
|
||||
@Controller('api/works')
|
||||
export class WorkController {
|
||||
constructor(private readonly workService: WorkService) {}
|
||||
|
||||
@Get('search')
|
||||
async search(
|
||||
@Query('q') query: string,
|
||||
@Query('type') type?: 'ANIME' | 'MANGA',
|
||||
@Query('page') page?: string,
|
||||
) {
|
||||
if (!query || query.trim().length < 2) {
|
||||
return { media: [], total: 0, hasNextPage: false };
|
||||
}
|
||||
return this.workService.search(query.trim(), type, page ? parseInt(page, 10) : 1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user