32 lines
857 B
TypeScript
32 lines
857 B
TypeScript
/**
|
|
* 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<void> {
|
|
await db.insert(messages).values(message);
|
|
},
|
|
|
|
async findByChannel(
|
|
guildId: string,
|
|
channelId: string
|
|
): Promise<Array<{ message: Message; userName: string | null }>> {
|
|
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,
|
|
}));
|
|
},
|
|
};
|