You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.3 KiB
TypeScript

import {
router,
publicProcedure,
createCallerFactory,
} from "../../trpc/server";
import { _db } from "../../database/lowdb";
export const conversations = router({
fetchAll: publicProcedure.query(async () => {
return await _db.conversations.findAll();
}),
fetchOne: publicProcedure
.input((x) => x as { id: string })
.query(async ({ input: { id } }) => {
return await _db.conversations.findById(id);
}),
start: publicProcedure.mutation(async () => {
const row = {
id: "",
title: "New Conversation",
userId: "1",
};
return await _db.conversations.create(row);
}),
deleteOne: publicProcedure
.input((x) => x as { id: string })
.mutation(async ({ input: { id } }) => {
await _db.conversations.delete(id);
return { ok: true };
}),
updateTitle: publicProcedure
.input(
(x) =>
x as {
id: string;
title: string;
}
)
.mutation(async ({ input: { id, title } }) => {
await _db.conversations.update(id, { title });
return { ok: true };
}),
fetchMessages: publicProcedure
.input((x) => x as { conversationId: string })
.query(async ({ input: { conversationId } }) => {
return await _db.conversations.fetchMessages(conversationId);
}),
});
export const createCaller = createCallerFactory(conversations);