Files
STCourses/packages/db/src/repos/acl.ts
T
2026-10-30 03:04:46 +01:00

17 lines
745 B
TypeScript

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<AclEntry[]> {
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<boolean> {
const rows = await db.sql`SELECT 1 AS x FROM course_authors WHERE course_id = ${courseId} AND user_id = ${userId}`;
return rows.length > 0;
},
};
}