import type { Db } from "../connect"; export interface AclEntry { principal_type: "user" | "group"; principal_id: string } export function aclRepo(db: Db) { return { async listForCourse(courseId: string): Promise { const rows = await db.sql`SELECT principal_type, principal_id FROM course_acl WHERE course_id = ${courseId} ORDER BY principal_type, principal_id`; return rows.map((r: AclEntry) => ({ principal_type: r.principal_type, principal_id: r.principal_id })); }, async isAuthor(courseId: string, userId: string): Promise { const rows = await db.sql`SELECT 1 AS x FROM course_authors WHERE course_id = ${courseId} AND user_id = ${userId}`; return rows.length > 0; }, }; }