/** * Message repository - handles all message-related database operations */ import { and, eq } from "drizzle-orm"; import { db } from "../connection"; import { messages, users, type InsertMessage, type Message } from "../schema"; export const messageRepository = { async create(message: InsertMessage): Promise { await db.insert(messages).values(message); }, async findByChannel( guildId: string, channelId: string ): Promise> { const results = await db .select() .from(messages) .where( and(eq(messages.guild_id, guildId), eq(messages.channel_id, channelId)) ) .leftJoin(users, eq(users.id, messages.user_id)); return results.map((r) => ({ message: r.messages, userName: r.users?.name ?? null, })); }, };