23 lines
766 B
TypeScript
23 lines
766 B
TypeScript
import { and, desc, eq } from "drizzle-orm";
|
|
import { messages, topics } from "~~/db/schema";
|
|
import type { Message, Topic } from '~~/types'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
await protectRoute(event);
|
|
|
|
const db = useDrizzle();
|
|
|
|
const rows = await db.select().from(topics).where(and(eq(topics.userId, event.context.user.id), eq(topics.id, getRouterParam(event, 'id')!)));
|
|
|
|
if (rows.length === 0) {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: 'Topic not found'
|
|
});
|
|
}
|
|
|
|
const topic = rows[0] as Topic & { messages: Message[] };
|
|
topic.messages = await db.select().from(messages).where(eq(messages.topicId, topic.id)).orderBy(desc(messages.createdAt));
|
|
|
|
return topic;
|
|
}); |