Sync LMS backend source
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import { Body, Controller, Delete, Get, Param, Post, Query, Req } from '@nestjs/common';
|
||||
import { Request } from 'express';
|
||||
|
||||
import { ChatService } from './chat.service';
|
||||
import { CreateAiResponseDto } from './dto/create-ai-response.dto';
|
||||
import { CreateChatMessageDto } from './dto/create-chat-message.dto';
|
||||
import { CreateInstructorChatMessageDto } from './dto/create-instructor-chat-message.dto';
|
||||
import { ListChatThreadsDto } from './dto/list-chat-threads.dto';
|
||||
|
||||
@Controller('chat')
|
||||
export class ChatController {
|
||||
constructor(private readonly chatService: ChatService) {}
|
||||
|
||||
@Get('threads')
|
||||
listThreads(@Req() request: Request, @Query() query: ListChatThreadsDto) {
|
||||
return this.chatService.listThreads(this.getBearerToken(request), query);
|
||||
}
|
||||
|
||||
@Delete('threads')
|
||||
clearThreads(@Req() request: Request, @Query() query: ListChatThreadsDto) {
|
||||
return this.chatService.clearStudentThreads(this.getBearerToken(request), query);
|
||||
}
|
||||
|
||||
@Post('messages')
|
||||
createMessage(
|
||||
@Req() request: Request,
|
||||
@Body() createChatMessageDto: CreateChatMessageDto,
|
||||
) {
|
||||
return this.chatService.createStudentMessage(
|
||||
this.getBearerToken(request),
|
||||
createChatMessageDto,
|
||||
);
|
||||
}
|
||||
|
||||
@Post('ai/respond')
|
||||
createAiResponse(
|
||||
@Req() request: Request,
|
||||
@Body() createAiResponseDto: CreateAiResponseDto,
|
||||
) {
|
||||
return this.chatService.createAiResponse(
|
||||
this.getBearerToken(request),
|
||||
createAiResponseDto,
|
||||
);
|
||||
}
|
||||
|
||||
@Post('ai/messages/:messageId/cancel')
|
||||
cancelAiMessage(
|
||||
@Req() request: Request,
|
||||
@Param('messageId') messageId: string,
|
||||
@Body() body: { content?: string },
|
||||
) {
|
||||
return this.chatService.cancelAiMessage(
|
||||
this.getBearerToken(request),
|
||||
messageId,
|
||||
body.content,
|
||||
);
|
||||
}
|
||||
|
||||
@Post('ai/cancel-active')
|
||||
cancelActiveAiResponse(
|
||||
@Req() request: Request,
|
||||
@Body() body: { week?: number },
|
||||
) {
|
||||
return this.chatService.cancelActiveAiResponse(
|
||||
this.getBearerToken(request),
|
||||
body.week,
|
||||
);
|
||||
}
|
||||
|
||||
@Get('instructor/threads')
|
||||
listInstructorThreads(
|
||||
@Req() request: Request,
|
||||
@Query() query: ListChatThreadsDto,
|
||||
) {
|
||||
return this.chatService.listInstructorThreads(
|
||||
this.getBearerToken(request),
|
||||
query,
|
||||
);
|
||||
}
|
||||
|
||||
@Get('instructor/threads/:threadId')
|
||||
getInstructorThread(
|
||||
@Req() request: Request,
|
||||
@Param('threadId') threadId: string,
|
||||
) {
|
||||
return this.chatService.getInstructorThread(
|
||||
this.getBearerToken(request),
|
||||
threadId,
|
||||
);
|
||||
}
|
||||
|
||||
@Post('instructor/threads/:threadId/messages')
|
||||
createInstructorMessage(
|
||||
@Req() request: Request,
|
||||
@Param('threadId') threadId: string,
|
||||
@Body() createInstructorChatMessageDto: CreateInstructorChatMessageDto,
|
||||
) {
|
||||
return this.chatService.createInstructorMessage(
|
||||
this.getBearerToken(request),
|
||||
threadId,
|
||||
createInstructorChatMessageDto,
|
||||
);
|
||||
}
|
||||
|
||||
private getBearerToken(request: Request): string | undefined {
|
||||
const [type, token] = request.headers.authorization?.split(' ') ?? [];
|
||||
return type === 'Bearer' ? token : undefined;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user