import pool from "../db" import { Course, CourseAttendee, CourseEventDetails, RawAttendeeRow } from "@app/shared/types/course" export async function getAllCourses(): Promise { const sql = "SELECT * FROM courses WHERE deleted = false;" const res = await pool.query(sql); return res; } function buildAttendee(row: RawAttendeeRow): CourseAttendee { return { passed: !!row.passed, attendee_id: row.attendee_id, course_event_id: row.course_event_id, created_at: row.created_at, updated_at: row.updated_at, remarks: row.remarks, attendee_role_id: row.attendee_role_id, role: row.role_id ? { id: row.role_id, name: row.role_name, description: row.role_description, deleted: !!row.role_deleted, created_at: row.role_created_at, updated_at: row.role_updated_at, } : null }; } export async function getCourseEventAttendees(id: number): Promise { const sql = `SELECT ca.*, ar.id AS role_id, ar.name AS role_name, ar.description AS role_description, ar.deleted AS role_deleted, ar.created_at AS role_created_at, ar.updated_at AS role_updated_at FROM course_attendees ca LEFT JOIN course_attendee_roles ar ON ar.id = ca.attendee_role_id WHERE ca.course_event_id = ?;`; const res:RawAttendeeRow[] = await pool.query(sql, [id]); return res.map((row) => buildAttendee(row)) } export async function getCourseEventDetails(id: number): Promise { const sql = `SELECT * FROM course_events WHERE id = ?;`; let rows: CourseEventDetails[] = await pool.query(sql, [id]); let event = rows[0]; event.attendees = await getCourseEventAttendees(id); return event; }