basic user-tailored UI
This commit is contained in:
+1
-1
@@ -34,7 +34,7 @@ export interface Entity<T> {
|
||||
construct: (data: T) => T;
|
||||
create: (data: Omit<T, "id">) => Promise<T>;
|
||||
createMany: (data: Omit<T, "id">[]) => Promise<T[]>;
|
||||
findAll: () => Promise<T[]>;
|
||||
findAll: (user?: { userId: string }) => Promise<T[]>;
|
||||
findById: (id: string) => Promise<T | undefined>;
|
||||
update: (id: string, data: Partial<T>) => Promise<void>;
|
||||
delete: (id: string) => Promise<void>;
|
||||
|
||||
@@ -58,11 +58,13 @@ export function getDb(POSTGRES_CONNECTION_STRING: string) {
|
||||
.execute();
|
||||
return insertedRows;
|
||||
},
|
||||
findAll: async () => {
|
||||
const rows = await dbClient
|
||||
.selectFrom("conversations")
|
||||
.selectAll()
|
||||
.execute();
|
||||
findAll: async (user) => {
|
||||
const userId = user?.userId;
|
||||
let query = await dbClient.selectFrom("conversations");
|
||||
if (userId) {
|
||||
query = query.where("userId", "=", userId);
|
||||
}
|
||||
const rows = query.selectAll().execute();
|
||||
return rows;
|
||||
},
|
||||
findById: async (id) => {
|
||||
|
||||
@@ -16,6 +16,7 @@ export const data = async (pageContext: PageContextServer) => {
|
||||
openrouter: getOpenrouter(
|
||||
(pageContext.env?.OPENROUTER_API_KEY || env.OPENROUTER_API_KEY) as string
|
||||
),
|
||||
// jwt: pageContext.,
|
||||
});
|
||||
|
||||
const [
|
||||
|
||||
@@ -5,18 +5,19 @@ import {
|
||||
} from "../../trpc/server";
|
||||
|
||||
export const conversations = router({
|
||||
fetchAll: publicProcedure.query(async ({ ctx: { db } }) => {
|
||||
return await db.conversations.findAll();
|
||||
fetchAll: publicProcedure.query(async ({ ctx: { db, jwt } }) => {
|
||||
console.log("jwt", jwt);
|
||||
return await db.conversations.findAll({ userId: jwt?.id as string });
|
||||
}),
|
||||
fetchOne: publicProcedure
|
||||
.input((x) => x as { id: string })
|
||||
.query(async ({ input: { id }, ctx: { db } }) => {
|
||||
return await db.conversations.findById(id);
|
||||
}),
|
||||
start: publicProcedure.mutation(async ({ ctx: { db } }) => {
|
||||
start: publicProcedure.mutation(async ({ ctx: { db, jwt } }) => {
|
||||
const row = {
|
||||
title: "New Conversation",
|
||||
userId: "019900bb-61b3-7333-b760-b27784dfe33b",
|
||||
userId: jwt?.id as string,
|
||||
};
|
||||
return await db.conversations.create(row);
|
||||
}),
|
||||
|
||||
+3
-3
@@ -73,7 +73,7 @@ export const chat = router({
|
||||
input: { conversationId, messages, systemPrompt, parameters },
|
||||
ctx,
|
||||
}) {
|
||||
const { db, openrouter } = ctx;
|
||||
const { db, openrouter, jwt } = ctx;
|
||||
const factsCaller = createCallerFacts(ctx);
|
||||
const messagesCaller = createCallerMessages(ctx);
|
||||
const factTriggerCaller = createCallerFactTriggers(ctx);
|
||||
@@ -173,7 +173,7 @@ export const chat = router({
|
||||
});
|
||||
const insertedFactsFromUserMessage = await db.facts.createMany(
|
||||
factsFromUserMessageResponse.object.facts.map((fact) => ({
|
||||
userId: "019900bb-61b3-7333-b760-b27784dfe33b",
|
||||
userId: jwt?.id as string,
|
||||
sourceMessageId: insertedUserMessage.id,
|
||||
content: fact,
|
||||
}))
|
||||
@@ -228,7 +228,7 @@ export const chat = router({
|
||||
|
||||
const insertedFactsFromAssistantMessage = await db.facts.createMany(
|
||||
factsFromAssistantMessageResponse.object.facts.map((factContent) => ({
|
||||
userId: "019900bb-61b3-7333-b760-b27784dfe33b",
|
||||
userId: jwt?.id as string,
|
||||
sourceMessageId: insertedAssistantMessage.id,
|
||||
content: factContent,
|
||||
createdAt: new Date().toISOString(),
|
||||
|
||||
+20
-20
@@ -4,7 +4,7 @@ import {
|
||||
createActionURL,
|
||||
setEnvDefaults,
|
||||
} from "@auth/core";
|
||||
import CredentialsProvider from "@auth/core/providers/credentials";
|
||||
// import CredentialsProvider from "@auth/core/providers/credentials";
|
||||
import GoogleProvider from "@auth/core/providers/google";
|
||||
import type { Session } from "@auth/core/types";
|
||||
// TODO: stop using universal-middleware and directly integrate server middlewares instead and/or use vike-server https://vike.dev/server. (Bati generates boilerplates that use universal-middleware https://github.com/magne4000/universal-middleware to make Bati's internal logic easier. This is temporary and will be removed soon.)
|
||||
@@ -41,26 +41,26 @@ const authjsConfig = {
|
||||
secret: "buginoo",
|
||||
providers: [
|
||||
// TODO: Choose and implement providers
|
||||
CredentialsProvider({
|
||||
name: "Credentials",
|
||||
credentials: {
|
||||
username: { label: "Username", type: "text", placeholder: "jsmith" },
|
||||
password: { label: "Password", type: "password" },
|
||||
},
|
||||
async authorize() {
|
||||
// Add logic here to look up the user from the credentials supplied
|
||||
const user = {
|
||||
id: "019900bb-61b3-7333-b760-b27784dfe33b",
|
||||
name: "J Smith",
|
||||
email: "jsmith@example.com",
|
||||
};
|
||||
// CredentialsProvider({
|
||||
// name: "Credentials",
|
||||
// credentials: {
|
||||
// username: { label: "Username", type: "text", placeholder: "jsmith" },
|
||||
// password: { label: "Password", type: "password" },
|
||||
// },
|
||||
// async authorize() {
|
||||
// // Add logic here to look up the user from the credentials supplied
|
||||
// const user = {
|
||||
// id: "019900bb-61b3-7333-b760-b27784dfe33b",
|
||||
// name: "J Smith",
|
||||
// email: "jsmith@example.com",
|
||||
// };
|
||||
|
||||
// Any object returned will be saved in `user` property of the JWT
|
||||
// If you return null then an error will be displayed advising the user to check their details.
|
||||
// You can also Reject this callback with an Error thus the user will be sent to the error page with the error message as a query parameter
|
||||
return user ?? null;
|
||||
},
|
||||
}),
|
||||
// // Any object returned will be saved in `user` property of the JWT
|
||||
// // If you return null then an error will be displayed advising the user to check their details.
|
||||
// // You can also Reject this callback with an Error thus the user will be sent to the error page with the error message as a query parameter
|
||||
// return user ?? null;
|
||||
// },
|
||||
// }),
|
||||
GoogleProvider({
|
||||
clientId:
|
||||
"697711350664-t6237s5n3ttjd1npp1qif1aupptkr0va.apps.googleusercontent.com",
|
||||
|
||||
@@ -9,13 +9,14 @@ import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
|
||||
import { getDb, getDbClient } from "../database/postgres";
|
||||
import { getOpenrouter } from "../pages/chat/provider";
|
||||
import { env as processEnv } from "./env.js";
|
||||
import { getToken } from "@auth/core/jwt";
|
||||
|
||||
export const trpcHandler = ((endpoint) => (request, context, runtime) => {
|
||||
return fetchRequestHandler({
|
||||
endpoint,
|
||||
req: request,
|
||||
router: appRouter,
|
||||
createContext({ req, resHeaders }) {
|
||||
async createContext({ req, resHeaders }) {
|
||||
const env = getEnv(runtime);
|
||||
const dbClient = getDbClient(
|
||||
(env.POSTGRES_CONNECTION_STRING ||
|
||||
@@ -28,6 +29,7 @@ export const trpcHandler = ((endpoint) => (request, context, runtime) => {
|
||||
const openrouter = getOpenrouter(
|
||||
(env.OPENROUTER_API_KEY || processEnv.OPENROUTER_API_KEY) as string
|
||||
);
|
||||
const jwt = await getToken({ req: request, secret: "buginoo" });
|
||||
return {
|
||||
...context,
|
||||
...runtime,
|
||||
@@ -36,6 +38,7 @@ export const trpcHandler = ((endpoint) => (request, context, runtime) => {
|
||||
dbClient,
|
||||
db,
|
||||
openrouter,
|
||||
jwt,
|
||||
};
|
||||
},
|
||||
allowMethodOverride: true,
|
||||
|
||||
@@ -3,6 +3,7 @@ import { TypeCompiler } from "@sinclair/typebox/compiler";
|
||||
import { initTRPC, TRPCError } from "@trpc/server";
|
||||
import type { getDb } from "../database/postgres";
|
||||
import type { getOpenrouter } from "../pages/chat/provider";
|
||||
import type { JWT } from "@auth/core/jwt";
|
||||
|
||||
/**
|
||||
* Initialization of tRPC backend
|
||||
@@ -13,6 +14,7 @@ const t = initTRPC
|
||||
object & {
|
||||
db: ReturnType<typeof getDb>;
|
||||
openrouter: ReturnType<typeof getOpenrouter>;
|
||||
jwt?: JWT | null;
|
||||
}
|
||||
>()
|
||||
.create(/*{
|
||||
|
||||
Reference in New Issue
Block a user