Files
ai/backend/src/memories/memories.controller.ts
T

133 lines
3.7 KiB
TypeScript

import {
Body,
Controller,
Get,
Inject,
Param,
Patch,
Post,
Query,
UseGuards
} from '@nestjs/common';
import { CurrentUser } from '../auth/current-user.decorator';
import type { AuthRequestUser } from '../auth/auth.types';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import {
ContinuityCheckDto,
CreatePlotMemoryDto,
CreatePlotThreadDto,
GeneratePlotMemoriesDto,
UpdatePlotMemoryDto,
UpdatePlotThreadDto
} from './memory.dto';
import { MemoriesService } from './memories.service';
@Controller()
@UseGuards(JwtAuthGuard)
export class MemoriesController {
constructor(@Inject(MemoriesService) private readonly memoriesService: MemoriesService) {}
@Get('projects/:projectId/plot-memories')
listPlotMemories(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Query('memory_type') memoryType?: string,
@Query('status') status?: string,
@Query('episode_id') episodeId?: string
) {
return this.memoriesService.listPlotMemories(user, projectId, {
memory_type: memoryType,
status,
episode_id: episodeId
});
}
@Post('projects/:projectId/plot-memories/generate')
generatePlotMemories(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Body() dto: GeneratePlotMemoriesDto
) {
return this.memoriesService.submitPlotMemoryGeneration(user, projectId, dto);
}
@Post('projects/:projectId/plot-memories')
createPlotMemory(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Body() dto: CreatePlotMemoryDto
) {
return this.memoriesService.createPlotMemory(user, projectId, dto);
}
@Patch('plot-memories/:memoryId')
updatePlotMemory(
@CurrentUser() user: AuthRequestUser,
@Param('memoryId') memoryId: string,
@Body() dto: UpdatePlotMemoryDto
) {
return this.memoriesService.updatePlotMemory(user, memoryId, dto);
}
@Get('projects/:projectId/memory-context')
getMemoryContext(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Query('episode_no') episodeNo?: string
) {
return this.memoriesService.getMemoryContext(user, projectId, episodeNo);
}
@Get('characters/:characterId/memories')
listCharacterMemories(
@CurrentUser() user: AuthRequestUser,
@Param('characterId') characterId: string
) {
return this.memoriesService.listCharacterMemories(user, characterId);
}
@Get('projects/:projectId/character-memories')
listProjectCharacterMemories(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string
) {
return this.memoriesService.listProjectCharacterMemories(user, projectId);
}
@Get('projects/:projectId/plot-threads')
listPlotThreads(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Query('status') status?: string
) {
return this.memoriesService.listPlotThreads(user, projectId, status);
}
@Post('projects/:projectId/plot-threads')
createPlotThread(
@CurrentUser() user: AuthRequestUser,
@Param('projectId') projectId: string,
@Body() dto: CreatePlotThreadDto
) {
return this.memoriesService.createPlotThread(user, projectId, dto);
}
@Patch('plot-threads/:threadId')
updatePlotThread(
@CurrentUser() user: AuthRequestUser,
@Param('threadId') threadId: string,
@Body() dto: UpdatePlotThreadDto
) {
return this.memoriesService.updatePlotThread(user, threadId, dto);
}
@Post('episodes/:episodeId/continuity-check')
runContinuityCheck(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Body() dto: ContinuityCheckDto
) {
return this.memoriesService.runContinuityCheck(user, episodeId, dto);
}
}