Skip to content

Commit

Permalink
Implement an endpoint to delete calendar events
Browse files Browse the repository at this point in the history
  • Loading branch information
Dlurak committed Apr 10, 2024
1 parent 5d12bae commit 9205811
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/routes/assignments/delete.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import e from "@edgedb";
import { DATABASE_READ_FAILED, UNAUTHORIZED } from "constants/responses";
import { DATABASE_DELETE_FAILED, UNAUTHORIZED } from "constants/responses";
import Elysia from "elysia";
import { HttpStatusCode } from "elysia-http-status-code";
import { client } from "index";
Expand Down Expand Up @@ -27,7 +27,7 @@ export const deleteAssignment = new Elysia()

if (result.isError) {
set.status = httpStatus.HTTP_500_INTERNAL_SERVER_ERROR;
return DATABASE_READ_FAILED;
return DATABASE_DELETE_FAILED;
}
if (!result.data) {
// Either the user isn't in the class and/or the homework doesn't exist
Expand Down
44 changes: 44 additions & 0 deletions src/routes/calendar/delete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import e from "@edgedb";
import { DATABASE_DELETE_FAILED, UNAUTHORIZED } from "constants/responses";
import Elysia from "elysia";
import { HttpStatusCode } from "elysia-http-status-code";
import { client } from "index";
import { auth } from "plugins/auth";
import { promiseResult } from "utils/errors";
import { responseBuilder } from "utils/response";

export const deleteCalendar = new Elysia()
.use(auth)
.use(HttpStatusCode())
.delete("/:id", async ({ set, httpStatus, auth, params }) => {
if (!auth.isAuthorized) {
set.status = httpStatus.HTTP_401_UNAUTHORIZED;
return UNAUTHORIZED;
}

const query = e.delete(e.Calendar, (c) => ({
filter_single: e.op(
e.op(c.id, "=", e.cast(e.uuid, params.id)),
"and",
e.op(auth.username, "in", c.class.students.username),
),
}));

const result = await promiseResult(() => query.run(client));

if (result.isError) {
set.status = httpStatus.HTTP_500_INTERNAL_SERVER_ERROR;
return DATABASE_DELETE_FAILED;
}
if (!result.data) {
set.status = httpStatus.HTTP_404_NOT_FOUND;
return responseBuilder("error", {
error: "Calendar event not found in any of your classes",
});
}

return responseBuilder("success", {
message: "Successfully deleted calendar event",
data: null,
});
});
4 changes: 3 additions & 1 deletion src/routes/calendar/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import Elysia from "elysia";
import { createCalendar } from "./create";
import { deleteCalendar } from "./delete";
import { listCalendar } from "./list";

export const calendarRouter = new Elysia({ prefix: "/calendar" })
.use(createCalendar)
.use(listCalendar);
.use(listCalendar)
.use(deleteCalendar);

0 comments on commit 9205811

Please sign in to comment.