Skip to content

Commit 9cb85af

Browse files
authored
Merge pull request #141 from uwblueprint/annie/admin-notes
Annie/admin notes
2 parents be23e5f + 02f3b6f commit 9cb85af

35 files changed

+2454
-36924
lines changed

backend/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ COPY ./prisma ./prisma
1212
# libcurl3 is required for mongodb-memory-server, which is used for testing
1313
# RUN apt-get update && apt-get install -y libcurl3
1414

15+
RUN yarn cache clean
1516
RUN yarn install
1617

1718
COPY . ./

backend/crons/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import cron from "node-cron";
2+
import expireAdminNotes from "./scripts/expireAdminNotes";
3+
4+
cron.schedule("0 0 * * * *", async () => {
5+
const res = await expireAdminNotes();
6+
if (res) {
7+
console.log("Deleted expired notes");
8+
}
9+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import prisma from "../../prisma";
2+
3+
async function expireAdminNotes(): Promise<boolean> {
4+
const limit = new Date(Date.now() - 48 * 60 * 60 * 1000);
5+
try {
6+
await prisma.note.deleteMany({
7+
where: {
8+
date: {
9+
lt: limit.toISOString(),
10+
},
11+
},
12+
});
13+
return true;
14+
} catch (err) {
15+
console.log(err);
16+
return false;
17+
}
18+
}
19+
20+
export default expireAdminNotes;

backend/graphql/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ import customTypes from "./types/enums";
1212
import resolverTypes from "./types/resolvers";
1313

1414
import participantResolvers from "./resolvers/participantResolver";
15-
import miscResolvers from "./resolvers/miscResolver";
15+
import noteResolvers from "./resolvers/noteResolver";
1616
import authResolver from "./resolvers/auth";
1717

1818
const schema = makeExecutableSchema({
1919
typeDefs: [...scalarTypeDefs, dataModels, customTypes, resolverTypes],
2020
resolvers: merge(
21-
scalarResolvers,
22-
participantResolvers,
23-
miscResolvers,
24-
authResolver,
21+
scalarResolvers,
22+
participantResolvers,
23+
noteResolvers,
24+
authResolver
2525
),
2626
});
2727

backend/graphql/resolvers/miscResolver.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Note } from "@prisma/client";
2+
import NoteService from "../../services/implementation/noteImplementation";
3+
import INoteService from "../../services/interface/noteInterface";
4+
5+
const noteService: INoteService = new NoteService();
6+
const noteResolvers = {
7+
Query: {
8+
getNotes: async (): Promise<Note[]> => {
9+
return noteService.getNotes();
10+
},
11+
},
12+
Mutation: {
13+
createNote: async (
14+
_parent: undefined,
15+
{
16+
message,
17+
date,
18+
formattedDate,
19+
}: {
20+
message: string;
21+
date: string;
22+
formattedDate: string;
23+
},
24+
): Promise<boolean> => {
25+
return noteService.createNote(message, date, formattedDate);
26+
},
27+
deleteNote: async (
28+
_parent: undefined,
29+
{
30+
noteId,
31+
}: {
32+
noteId: number;
33+
},
34+
): Promise<boolean> => {
35+
return noteService.deleteNote(noteId);
36+
},
37+
},
38+
};
39+
40+
export default noteResolvers;

backend/graphql/types/models.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const dataModels = gql`
1414
announcementId: Int!
1515
from: StaffType!
1616
to: [Int!]!
17-
createdAt: DateTime!
17+
createdAt: String!
1818
message: String!
1919
}
2020
@@ -25,15 +25,22 @@ const dataModels = gql`
2525
status: TaskStatus!
2626
name: String!
2727
isRecurring: Boolean!
28-
start: DateTime!
29-
end: DateTime!
28+
start: String!
29+
end: String!
3030
credit: Int!
3131
comment: String
3232
}
3333
34+
type Note {
35+
noteId: Int!
36+
message: String!
37+
date: String!
38+
formattedDate: String!
39+
}
40+
3441
type AuthResponse {
35-
type: String!
36-
accessToken: String!
42+
type: String!
43+
accessToken: String!
3744
}
3845
`;
3946

backend/graphql/types/resolvers.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const resolverTypes = gql`
55
getPastParticipants: [Participant]
66
getCurrentParticipants: [Participant]
77
getParticipantById(participantId: String!): Participant
8-
getAvailableRooms: [Int]
8+
getNotes: [Note]
99
}
1010
1111
type Mutation {
@@ -23,6 +23,8 @@ const resolverTypes = gql`
2323
departure: String
2424
password: String
2525
): Boolean
26+
createNote(message: String!, date: String!, formattedDate: String!): Boolean
27+
deleteNote(noteId: Int!): Boolean
2628
}
2729
`;
2830

0 commit comments

Comments
 (0)