server auth stuff, prooompt engineering

This commit is contained in:
2026-03-31 15:29:47 +02:00
parent c5b3ee3875
commit ead9548744
6 changed files with 29 additions and 28 deletions

View File

@@ -1,4 +1,3 @@
import { auth } from '@clerk/nextjs/server'
import { publicProcedure, router } from "../trpc";
import { TRPCError } from "@trpc/server";
import { db } from '~/server/db'
@@ -7,27 +6,29 @@ chatSession, systemSettings } from "../dbschema/schema";
import { isAdmin } from '~/app/actions';
import { z } from 'zod';
import { eq } from 'drizzle-orm';
import { clerkClient, auth } from '@clerk/nextjs/server'
export const chatRouter = router({
getSession: publicProcedure.query(async () => {
const clerk = await clerkClient()
const { userId } = await auth();
if (userId == null) {
const user = await clerk.users.getUser(userId?userId:"")
if (user == undefined) {
throw new TRPCError({ message: "chat is only available to signed in users", code: 'UNAUTHORIZED' });
}
let session = await db.query.chatSession.findFirst({
where(fields, operators) {
return operators.eq(fields.userId, userId)
return operators.eq(fields.userId, user.id)
},
})
if (session !== undefined) {
return session;
}
let newSession = await db.insert(chatSession).values({ userId: userId }).returning().execute().then((r) => r.at(0));
if (newSession == undefined) {
let newSession = await db.insert(chatSession).values({ userId: user.id}).returning().execute().then((r) => r.at(0)); if (newSession == undefined) {
throw new TRPCError({ message: "failed to create session", code: "INTERNAL_SERVER_ERROR" });
}
session = await db.query.chatSession.findFirst({
where(fields, operators) {
return operators.eq(fields.userId, userId)
return operators.eq(fields.userId, user.id)
},
})
if (session == undefined) {