add dashboard

This commit is contained in:
Litlyx
2024-06-01 15:27:40 +02:00
parent 75f0787c3b
commit df4faf366f
201 changed files with 91267 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA";
import { AiChatModel } from "@schema/ai/AiChatSchema";
import { sendMessageOnChat } from "~/server/services/AiService";
export default defineEventHandler(async event => {
const project_id = getRequestProjectId(event);
if (!project_id) return;
const user = getRequestUser(event);
const project = await getUserProjectFromId(project_id, user);
if (!project) return;
if (!event.context.params) return;
const chat_id = event.context.params['chat_id'];
const chat = await AiChatModel.findOne({ _id: chat_id, project_id });
if (!chat) return;
const messages = chat.messages.filter(e => {
return (e.role == 'user' || (e.role == 'assistant' && e.content != undefined))
}).map(e => {
return { role: e.role, content: e.content }
});
return messages;
});

View File

@@ -0,0 +1,17 @@
import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA";
import { AiChatModel } from "@schema/ai/AiChatSchema";
export default defineEventHandler(async event => {
const project_id = getRequestProjectId(event);
if (!project_id) return;
const user = getRequestUser(event);
const project = await getUserProjectFromId(project_id, user);
if (!project) return;
const chatList = await AiChatModel.find({ project_id }, { _id: 1, title: 1 }, { sort: { updated_at: 1 } });
return chatList.map(e => e.toJSON());
});

View File

@@ -0,0 +1,24 @@
import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA";
import { ProjectCountModel } from "@schema/ProjectsCounts";
import { checkProjectCount } from '@functions/UtilsProjectCounts';
export async function getAiChatRemainings(project_id: string) {
const counts = await checkProjectCount(project_id)
if (!counts) return 0;
const chatsRemaining = counts.ai_limit - counts.ai_messages;
if (isNaN(chatsRemaining)) return 0;
return chatsRemaining;
}
export default defineEventHandler(async event => {
const project_id = getRequestProjectId(event);
if (!project_id) return;
const user = getRequestUser(event);
const project = await getUserProjectFromId(project_id, user);
if (!project) return;
const chatsRemaining = await getAiChatRemainings(project_id);
return chatsRemaining;
});

View File

@@ -0,0 +1,27 @@
import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA";
import { sendMessageOnChat } from "~/server/services/AiService";
import { getAiChatRemainings } from "./chats_remaining";
export default defineEventHandler(async event => {
const project_id = getRequestProjectId(event);
if (!project_id) return;
const user = getRequestUser(event);
const project = await getUserProjectFromId(project_id, user);
if (!project) return;
// if (!user?.logged) return;
// if (!user.user.roles.includes('ADMIN')) return;
const { text, chat_id } = await readBody(event);
if (!text) return setResponseStatus(event, 400, 'text parameter missing');
const chatsRemaining = await getAiChatRemainings(project_id);
if (chatsRemaining <= 0) return setResponseStatus(event, 400, 'CHAT_LIMIT_REACHED');
const response = await sendMessageOnChat(text, project._id.toString(), chat_id);
return response || 'Error getting response';
});