Files
tutortool/frontend/.svelte-kit/output/server/chunks/api.js

139 lines
4.0 KiB
JavaScript

import { D as get } from "./dev.js";
import "./index-server2.js";
import { t as token } from "./auth.js";
//#region src/lib/api.ts
var BASE = "/api";
async function request(path, init) {
const $token = get(token);
const res = await fetch(BASE + path, {
...init,
headers: {
"Content-Type": "application/json",
...$token ? { Authorization: `Bearer ${$token}` } : {},
...init?.headers
}
});
if (res.status === 401 && false);
if (!res.ok) {
const error = await res.json().catch(() => ({ error: res.statusText }));
throw new Error(error.error || res.statusText);
}
if (res.status === 204) return {};
return res.json();
}
var api = {
auth: { login: (email, password) => request("/auth/login", {
method: "POST",
body: JSON.stringify({
email,
password
})
}) },
admin: {
courses: {
list: () => request("/admin/courses"),
create: (name, semester) => request("/admin/courses", {
method: "POST",
body: JSON.stringify({
name,
semester
})
}),
listStudents: (course_id) => request(`/admin/courses/${course_id}/students`),
addStudent: (course_id, name) => request(`/admin/courses/${course_id}/students`, {
method: "POST",
body: JSON.stringify({ name })
}),
importStudents: (course_id, file) => {
const formData = new FormData();
formData.append("file", file);
return fetch(`${BASE}/admin/courses/${course_id}/students/import`, {
method: "POST",
headers: { "Authorization": `Bearer ${get(token)}` },
body: formData
}).then((res) => res.json());
}
},
students: {
delete: (id) => request(`/admin/students/${id}`, { method: "DELETE" }),
getAttendance: (id) => request(`/admin/students/${id}/attendance`),
getNotes: (id) => request(`/admin/students/${id}/notes`)
},
rooms: {
list: () => request("/admin/rooms"),
create: (name, layout) => request("/admin/rooms", {
method: "POST",
body: JSON.stringify({
name,
layout
})
}),
get: (id) => request(`/admin/rooms/${id}`),
updateLayout: (id, layout) => request(`/admin/rooms/${id}/layout`, {
method: "PUT",
body: JSON.stringify(layout)
})
},
sessions: {
list: (course_id) => request(`/admin/sessions?course_id=${course_id}`),
create: (course_id, week_nr, date) => request("/admin/sessions", {
method: "POST",
body: JSON.stringify({
course_id,
week_nr,
date
})
}),
getAttendance: (id) => request(`/admin/sessions/${id}/attendance`)
},
slots: {
create: (session_id, tutor_id, start_time, end_time, room_id) => request("/admin/slots", {
method: "POST",
body: JSON.stringify({
session_id,
tutor_id,
start_time,
end_time,
room_id
})
}),
updateStatus: (id, status) => request(`/admin/slots/${id}/status`, {
method: "PATCH",
body: JSON.stringify({ status })
}),
delete: (id) => request(`/admin/slots/${id}`, { method: "DELETE" }),
addAttendance: (id, student_id) => request(`/admin/slots/${id}/attendance`, {
method: "POST",
body: JSON.stringify({ student_id })
}),
deleteAttendance: (slot_id, student_id) => request(`/admin/slots/${slot_id}/attendance/${student_id}`, { method: "DELETE" }),
getNotes: (id) => request(`/admin/slots/${id}/notes`),
upsertNote: (slot_id, student_id, content) => request(`/admin/slots/${slot_id}/notes/${student_id}`, {
method: "PUT",
body: JSON.stringify({ content })
})
},
export: {
sessionCsv: (id) => `${BASE}/admin/export/session/${id}/csv`,
sessionMd: (id) => `${BASE}/admin/export/session/${id}/md`,
courseCsv: (id) => `${BASE}/admin/export/course/${id}/csv`,
courseMd: (id) => `${BASE}/admin/export/course/${id}/md`,
backup: () => `${BASE}/admin/backup`
}
},
checkin: {
getInfo: (code) => request(`/api/checkin/${code}`),
getStudents: (code) => request(`/api/checkin/${code}/students`),
post: (code, student_id, seat_id) => request("/api/checkin", {
method: "POST",
body: JSON.stringify({
code,
student_id,
seat_id
})
})
}
};
//#endregion
export { api as t };