From 72e27270440f69588fbaed90ff831e43df2362cc Mon Sep 17 00:00:00 2001 From: Daniel Heidemann Date: Sun, 6 Oct 2024 19:28:15 +0200 Subject: [PATCH] event query takes topic and type labels (#81) fixes #81 --- README.md | 3 +- frontend/app/page.tsx | 16 +- frontend/lib/gql/generated/gql.ts | 4 +- frontend/lib/gql/generated/graphql.ts | 8 +- frontend/lib/gql/queries/events.graphql | 4 +- server/README.md | 330 +----------------------- server/db/README.md | 1 - server/db/pepp-er-diagram.jpg | Bin 160069 -> 0 bytes server/graph/generated.go | 41 +-- server/graph/schema.graphqls | 2 +- server/graph/schema.resolvers.go | 16 +- server/ical/handler.go | 22 +- 12 files changed, 73 insertions(+), 374 deletions(-) delete mode 100644 server/db/README.md delete mode 100644 server/db/pepp-er-diagram.jpg diff --git a/README.md b/README.md index 2e4840c..b6f04b2 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,9 @@ 3. `docker compose up -d && docker compose logs -f` - Frontend: [localhost:8080](http://localhost:8080) -- ICal Calendar: [localhost:8080/ical?u=1&l=Tutorium](http://localhost:8080/ical?u=1&l=Tutorium) +- ICal Calendar: [localhost:8080/ical?e=1&ty=Tutorium&to=Informatik](http://localhost:8080/ical?e=1&ty=Tutorium&to=Informatik) - API: [localhost:8080/api](http://localhost:8080/api) - GraphQL Playground: [localhost:8080/playground](http://localhost:8080/playground) - - Documentation for all endpoints can be found in the [`server/README.md`](server/README.md) ### dev #### frontend diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 738612b..9d968e0 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -91,7 +91,8 @@ export default function Home() { const [types, setTypes] = useState([]); const [topics, setTopics] = useState([]); const [loading, setLoading] = useState(true); - const [filter, setFilter] = useState([]); + const [toFilter, setToFilter] = useState([]); + const [tyFilter, setTyFilter] = useState([]); const [umbrellaSelectionOpen, setUmbrellaSelectionOpen] = useState(false); const [popupId, setPopupId] = useState(0); @@ -101,7 +102,8 @@ export default function Home() { const vars: PlannerEventsQueryVariables = { umbrellaID: umbrella, - filter: filter.length == 0 ? undefined : filter, + topic: toFilter.length == 0 ? undefined : toFilter, + type: tyFilter.length == 0 ? undefined : tyFilter, }; await new Promise((resolve) => setTimeout(resolve, 250)); @@ -135,7 +137,7 @@ export default function Home() { getUmbrellas(); fetchData(); - }, [filter, umbrella]); + }, [toFilter, tyFilter, umbrella]); const groupedEvents = groupEvents(events); @@ -204,14 +206,14 @@ export default function Home() { t.name)} - filter={filter} - setFilter={setFilter} + filter={toFilter} + setFilter={setToFilter} /> t.name)} - filter={filter} - setFilter={setFilter} + filter={tyFilter} + setFilter={setTyFilter} /> )} diff --git a/frontend/lib/gql/generated/gql.ts b/frontend/lib/gql/generated/gql.ts index 30f80dc..28d979e 100644 --- a/frontend/lib/gql/generated/gql.ts +++ b/frontend/lib/gql/generated/gql.ts @@ -15,7 +15,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ const documents = { "mutation addStudentApplicationForEvent($application: NewUserToEventApplication!) {\n addStudentApplicationForEvent(application: $application) {\n fn\n }\n}": types.AddStudentApplicationForEventDocument, "mutation addTutor($firstName: String!, $lastName: String!, $email: String!, $eventsAvailable: [Int!]!) {\n addTutor(\n tutor: {fn: $firstName, sn: $lastName, mail: $email}\n availability: {userMail: $email, eventID: $eventsAvailable}\n ) {\n fn\n }\n}": types.AddTutorDocument, - "query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $filter: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], label: $filter) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}": types.TutorFormEventsDocument, + "query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $type: [String!], $topic: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], type: $type, topic: $topic) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}": types.TutorFormEventsDocument, "query registrationForm($eventID: Int!) {\n forms(id: [$eventID]) {\n title\n description\n questions {\n ID\n title\n type\n required\n answers {\n ID\n title\n points\n }\n }\n }\n}": types.RegistrationFormDocument, "query umbrellas {\n umbrellas {\n ID\n title\n }\n}": types.UmbrellasDocument, }; @@ -45,7 +45,7 @@ export function graphql(source: "mutation addTutor($firstName: String!, $lastNam /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $filter: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], label: $filter) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}"): (typeof documents)["query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $filter: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], label: $filter) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}"]; +export function graphql(source: "query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $type: [String!], $topic: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], type: $type, topic: $topic) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}"): (typeof documents)["query tutorFormEvents {\n events(needsTutors: true, onlyFuture: true) {\n ID\n title\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n }\n}\n\nquery plannerEvents($umbrellaID: Int!, $type: [String!], $topic: [String!]) {\n umbrellas(id: [$umbrellaID]) {\n title\n }\n typeLabels: labels(kind: EVENT_TYPE, umbrellaID: [$umbrellaID]) {\n name\n }\n topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) {\n name\n }\n events(umbrellaID: [$umbrellaID], type: $type, topic: $topic) {\n ID\n title\n from\n to\n topic {\n color\n }\n }\n}\n\nquery eventCloseup($id: Int!) {\n events(id: [$id]) {\n ID\n title\n description\n from\n to\n topic {\n name\n color\n }\n type {\n name\n color\n }\n tutorsAssigned {\n tutors {\n fn\n sn\n mail\n }\n room {\n capacity\n floor\n name\n number\n building {\n name\n street\n number\n city\n zip\n latitude\n longitude\n zoomLevel\n }\n }\n registrations\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/frontend/lib/gql/generated/graphql.ts b/frontend/lib/gql/generated/graphql.ts index 79b36da..599f6ff 100644 --- a/frontend/lib/gql/generated/graphql.ts +++ b/frontend/lib/gql/generated/graphql.ts @@ -424,9 +424,10 @@ export type QueryBuildingsArgs = { export type QueryEventsArgs = { id?: InputMaybe>; - label?: InputMaybe>; needsTutors?: InputMaybe; onlyFuture?: InputMaybe; + topic?: InputMaybe>; + type?: InputMaybe>; umbrellaID?: InputMaybe>; userMail?: InputMaybe>; }; @@ -562,7 +563,8 @@ export type TutorFormEventsQuery = { __typename?: 'Query', events: Array<{ __typ export type PlannerEventsQueryVariables = Exact<{ umbrellaID: Scalars['Int']['input']; - filter?: InputMaybe | Scalars['String']['input']>; + type?: InputMaybe | Scalars['String']['input']>; + topic?: InputMaybe | Scalars['String']['input']>; }>; @@ -591,7 +593,7 @@ export type UmbrellasQuery = { __typename?: 'Query', umbrellas: Array<{ __typena export const AddStudentApplicationForEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"addStudentApplicationForEvent"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"application"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewUserToEventApplication"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addStudentApplicationForEvent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"application"},"value":{"kind":"Variable","name":{"kind":"Name","value":"application"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fn"}}]}}]}}]} as unknown as DocumentNode; export const AddTutorDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"addTutor"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"firstName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"lastName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"email"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"eventsAvailable"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addTutor"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"tutor"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"fn"},"value":{"kind":"Variable","name":{"kind":"Name","value":"firstName"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"sn"},"value":{"kind":"Variable","name":{"kind":"Name","value":"lastName"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"mail"},"value":{"kind":"Variable","name":{"kind":"Name","value":"email"}}}]}},{"kind":"Argument","name":{"kind":"Name","value":"availability"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"userMail"},"value":{"kind":"Variable","name":{"kind":"Name","value":"email"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"eventID"},"value":{"kind":"Variable","name":{"kind":"Name","value":"eventsAvailable"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fn"}}]}}]}}]} as unknown as DocumentNode; export const TutorFormEventsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"tutorFormEvents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"events"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"needsTutors"},"value":{"kind":"BooleanValue","value":true}},{"kind":"Argument","name":{"kind":"Name","value":"onlyFuture"},"value":{"kind":"BooleanValue","value":true}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"topic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]}}]} as unknown as DocumentNode; -export const PlannerEventsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"plannerEvents"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"umbrellas"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"typeLabels"},"name":{"kind":"Name","value":"labels"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"kind"},"value":{"kind":"EnumValue","value":"EVENT_TYPE"}},{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"topicLabels"},"name":{"kind":"Name","value":"labels"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"kind"},"value":{"kind":"EnumValue","value":"TOPIC"}},{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"events"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"label"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"topic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]}}]} as unknown as DocumentNode; +export const PlannerEventsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"plannerEvents"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"type"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"topic"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"umbrellas"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"typeLabels"},"name":{"kind":"Name","value":"labels"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"kind"},"value":{"kind":"EnumValue","value":"EVENT_TYPE"}},{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"topicLabels"},"name":{"kind":"Name","value":"labels"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"kind"},"value":{"kind":"EnumValue","value":"TOPIC"}},{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"events"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"umbrellaID"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"umbrellaID"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"type"},"value":{"kind":"Variable","name":{"kind":"Name","value":"type"}}},{"kind":"Argument","name":{"kind":"Name","value":"topic"},"value":{"kind":"Variable","name":{"kind":"Name","value":"topic"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"topic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]}}]} as unknown as DocumentNode; export const EventCloseupDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"eventCloseup"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"events"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"id"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"topic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"tutorsAssigned"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tutors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fn"}},{"kind":"Field","name":{"kind":"Name","value":"sn"}},{"kind":"Field","name":{"kind":"Name","value":"mail"}}]}},{"kind":"Field","name":{"kind":"Name","value":"room"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"capacity"}},{"kind":"Field","name":{"kind":"Name","value":"floor"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"building"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"street"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"zip"}},{"kind":"Field","name":{"kind":"Name","value":"latitude"}},{"kind":"Field","name":{"kind":"Name","value":"longitude"}},{"kind":"Field","name":{"kind":"Name","value":"zoomLevel"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"registrations"}}]}}]}}]}}]} as unknown as DocumentNode; export const RegistrationFormDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"registrationForm"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"eventID"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"forms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"ListValue","values":[{"kind":"Variable","name":{"kind":"Name","value":"eventID"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"questions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"required"}},{"kind":"Field","name":{"kind":"Name","value":"answers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"points"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const UmbrellasDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"umbrellas"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"umbrellas"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ID"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/frontend/lib/gql/queries/events.graphql b/frontend/lib/gql/queries/events.graphql index b0bbe7c..787ede4 100644 --- a/frontend/lib/gql/queries/events.graphql +++ b/frontend/lib/gql/queries/events.graphql @@ -15,7 +15,7 @@ query tutorFormEvents { } } -query plannerEvents($umbrellaID: Int!, $filter: [String!]) { +query plannerEvents($umbrellaID: Int!, $type: [String!], $topic: [String!]) { umbrellas(id: [$umbrellaID]) { title } @@ -25,7 +25,7 @@ query plannerEvents($umbrellaID: Int!, $filter: [String!]) { topicLabels: labels(kind: TOPIC, umbrellaID: [$umbrellaID]) { name } - events(umbrellaID: [$umbrellaID], label: $filter) { + events(umbrellaID: [$umbrellaID], type: $type, topic: $topic) { ID title from diff --git a/server/README.md b/server/README.md index da54e89..7ac3248 100644 --- a/server/README.md +++ b/server/README.md @@ -1,327 +1,7 @@ +# Welcome to the backend. -# GraphQL Schema Documentation +## api +See [https://fachschaftmathphysinfo.github.io/pepp](https://fachschaftmathphysinfo.github.io/pepp) for documentation on the API. -## Scalars -### `HexColorCode` -Represents a color in hex code format. - -### `timestamptz` -Represents a timestamp with timezone. - -## Enums -### `ScalarType` -- `STRING` -- `INT` -- `FLOAT` -- `BOOLEAN` -- `COLOR` -- `TIMESTAMP` - -### `LabelKind` -- `EVENT_TYPE` -- `TOPIC` - -## Types - -### `User` -Represents a user in the system. -- `fn: String!` - First name. -- `sn: String!` - Surname. -- `mail: String!` - Email. -- `confirmed: Boolean!` - Whether the user is confirmed. -- `eventsRegistered: [Event!]` - Events the user is registered to. -- `eventsAvailable: [Event!]` - Events available to the user. -- `eventsAssigned: [Event!]` - Events assigned to the user. - -### `Label` -Represents a label used for events. -- `name: String!` - Name of the label. -- `color: HexColorCode` - Color of the label. - -### `EventTutorRoomPair` -Represents a pairing of tutors and rooms for an event. -- `tutors: [User!]` - Tutors assigned to the event in the room. -- `room: Room` - Room where the event is held. -- `registrations: Int` - Number of registrations for the event in the room. - -### `Event` -Represents an event. -- `ID: Int!` - ID of the event. -- `tutorsAssigned: [EventTutorRoomPair!]` - Tutors assigned to the event. -- `tutorsAvailable: [User!]` - Tutors available for the event. -- `roomsAvailable: [Room!]` - Rooms available for the event. -- `umbrella: Event` - The umbrella event this event is under. -- `needsTutors: Boolean!` - Whether the event needs tutors. -- `title: String!` - Title of the event. -- `description: String` - Description of the event. -- `topic: Label!` - Topic of the event. -- `type: Label!` - Type of the event. -- `from: timestamptz!` - Start time of the event. -- `to: timestamptz!` - End time of the event. - -### `Room` -Represents a room in a building. -- `name: String` - Name of the room. -- `number: String!` - Room number. -- `capacity: Int` - Capacity of the room. -- `floor: Int` - Floor where the room is located. -- `building: Building!` - The building where the room is located. - -### `Building` -Represents a building. -- `ID: Int!` - ID of the building. -- `name: String!` - Name of the building. -- `street: String!` - Street where the building is located. -- `number: String!` - Number on the street. -- `city: String!` - City where the building is located. -- `zip: Int!` - ZIP code. -- `osm: String!` - OpenStreetMap link. -- `rooms: [Room!]` - Rooms in the building. - -### `Setting` -Represents a system setting. -- `key: String!` - Key of the setting. -- `value: String!` - Value of the setting. -- `type: ScalarType!` - Type of the setting. - -## Queries - -### `events` -Fetches a list of events. -#### Arguments: -- `id: [Int!]` (optional) - List of event IDs to filter events. -- `umbrellaID: [Int!]` (optional) - Filter events by umbrella ID. -- `label: [String!]` (optional) - List of labels to filter events. -- `needsTutors: Boolean` (optional) - Filter events whether it needs tutors. -- `onlyFuture: Boolean` (optional) - Filter to only future events. -- `userMail: [String!]` (optional) - Filter events by user email. -#### Example: -```graphql -query { - events(id: [1], label: ["Math"], needsTutors: true) { - ID - title - description - topic { - name - color - } - tutorsAssigned { - tutors { - fn - sn - } - room { - number - name - capacity - } - registrations - } - needsTutors - tutorsAvailable { - fn - sn - } - roomsAvailable { - name - number - } - from - to - } -} -``` - -### `umbrellas` -Fetches a list of umbrella events. -#### Arguments: -- `id: [Int!]` (optional) - List of umbrella event IDs. -- `onlyFuture: Boolean` (optional) - Filter to only future umbrella events. - -### `buildings` -Fetches a list of buildings. -#### Arguments: -- `id: [Int!]` (optional) - List of building IDs to filter buildings. - -### `rooms` -Fetches a list of rooms. -#### Arguments: -- `number: [String!]` (optional) - List of room numbers to filter rooms. -- `buildingID: Int!` - Building ID to filter rooms. - -### `labels` -Fetches a list of labels. -#### Arguments: -- `name: [String!]` (optional) - List of label names to filter labels. -- `kind: [LabelKind!]` (optional) - List of label kinds to filter labels. - -### `settings` -Fetches a list of system settings. -#### Arguments: -- `key: [String!]` (optional) - List of setting keys to filter. -- `type: [ScalarType!]` (optional) - List of setting types to filter. - -### `users` -Fetches a list of users. -#### Arguments: -- `mail: [String!]` (optional) - List of user emails to filter. - -## Mutations - -**Note:** -- `add` and `update` mutations return the object they have worked on -- `delete` mutation returns the number of objects affected. When deleting references between objects, `delete` returns the outgoing object. - -### `addUser` -Adds a new user. -#### Arguments: -- `user: NewUser!` - Details of the new user. - -### `updateUser` -Updates the information of a user. -#### Arguments: -- `user: NewUser!` - Details of the user. - -### `deleteUser` -Deletes a user. -#### Arguments: -- `mail: [String!]!` - E-Mail adresses of the user(s) to delete. - -### `addTutor` -Combines the creation of a user and setting initial availabilitys. -#### Arguments: -- `tutor: NewUser!` - Details of the new user. -- `availability: UserToEventAvailability` - Pair of tutor mail and event ids. -#### Example: -```graphql -mutation { - addTutor( - tutor: {fn: "Jane", sn: "Doe", mail: "jane.doe@example.de"} - availability: {userMail: "jane.doe@example.de", eventID: [2, 3]} - ) { - fn - confirmed - eventsAvailable { - ID - title - } - } -} -``` - -### `addEvent` -Adds a new event. -#### Arguments: -- `event: NewEvent!` - Details of the new event. - -### `updateEvent` -Updates an event's details. -#### Arguments: -- `id: Int!` - ID of the event. -- `event: NewEvent!` - Updated details of the event. - -### `deleteEvent` -Deletes a list of events. *Note: deleting an umbrella event will delete all events assigned to it* -#### Arguments: -- `id: [Int!]!` - IDs of the event - -### `addBuilding` -Adds a new building. -#### Arguments: -- `building: NewBuilding!` - Details of the new building. - -### `updateBuilding` -Updates a building's details. -#### Arguments: -- `id: Int!` - ID of the building. -- `building: NewBuilding!` - Updated details of the building. - -### `deleteBuilding` -Deletes a list of buildings. *Note: This also deletes all rooms in the buildings* -#### Arguments: -- `id: [Int!]!` - IDs of buildings - -### `addRoom` -Adds a new room. -#### Arguments: -- `room: NewRoom!` - Details of the new room. - -### `updateRoom` -Updates a room's details. -#### Arguments: -- `room: NewRoom!` - Details of the updated room. - -### `deleteRoom` -Deletes a room in a building. -#### Arguments: -- `number: [String!]!` - List of room numbers -- `buildingID: Int!` - ID of building - -### `addLabel` -Adds a new label. -#### Arguments: -- `label: NewLabel!` - Details of the new label. - -### `updateLabel` -Updates a label's details. -#### Arguments: -- `label: NewLabel!` - Details of the updated new label. - -### `deleteLabel` -Deletes a list of labels. -#### Arguments: -- `name: [String!]!` - Names of labels - -### `addEventAssignmentForTutor` -Assigns a user to an event as tutor. -#### Arguments: -- `assignment: EventToUserAssignment!` - Event, User, Room pair -#### Example: -```graphql -mutation { - addEventAssignmentForTutor( - assignment: {eventID: 1, userMail: "john.doe@example.de", roomNumber: "101", buildingID: 1} - ) { - title - roomsAvailable { - number - } - } -} -``` - -### `deleteEventAssignmentForTutor` -Unassigns a user from an event as tutor. -#### Arguments: -- `assignment: EventToUserAssignment!` - Event, User, Room pair - -### `addTutorAvailabilityForEvent` -Marks user as available for an event as tutor. -#### Arguments: -- `availability: NewUserToEventAvailability!` - User, Event pair - -### `deleteTutorAvailabilityForEvent` -Unmarks user as available for an event as tutor. -#### Arguments: -- `availability: NewUserToEventAvailability!` - User, Event pair - -### `addRoomAvailabilityForEvent` -Marks room as available for an event -#### Arguments: -- `availability: RoomToEventAvailability!` - Room, Event pair - -### `deleteRoomAvailabilityForEvent` -Unmarks room as available for an event -#### Arguments: -- `availability: RoomToEventAvailability!` - Room, Event pair - -### `addStudentRegistrationForEvent` -Registers a user to an event. -#### Arguments: -- `registration: UserToEventRegistration!` - User, Event, Room pair - -### `deleteStudentRegistrationForEvent` -Unregisters a user from an event. -#### Arguments: -- `registration: UserToEventRegistration!` - User, Event, Room pair +## database er-diagram +![ER-Diagram](pepp-er.jpg) diff --git a/server/db/README.md b/server/db/README.md deleted file mode 100644 index b7d3266..0000000 --- a/server/db/README.md +++ /dev/null @@ -1 +0,0 @@ -![ER-Diagram](pepp-er-diagram.jpg) diff --git a/server/db/pepp-er-diagram.jpg b/server/db/pepp-er-diagram.jpg deleted file mode 100644 index 0114ec45e51543eec07639878df74afaf9e48223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160069 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

1U`AxC20D^vr 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

WB3o3HI&z?onEiknc$jydMsHvTf{*p_ewQfj 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 XW@7Yh&thk;V%n8oaMeWZ*S_BY+4B<` diff --git a/server/graph/generated.go b/server/graph/generated.go index 280e835..50cc96b 100644 --- a/server/graph/generated.go +++ b/server/graph/generated.go @@ -167,7 +167,7 @@ type ComplexityRoot struct { Query struct { Applications func(childComplexity int, eventID *int, studentMail []string) int Buildings func(childComplexity int, id []int) int - Events func(childComplexity int, id []int, umbrellaID []int, label []string, needsTutors *bool, onlyFuture *bool, userMail []string) int + Events func(childComplexity int, id []int, umbrellaID []int, topic []string, typeArg []string, needsTutors *bool, onlyFuture *bool, userMail []string) int Forms func(childComplexity int, id []int) int Labels func(childComplexity int, name []string, kind []model.LabelKind, umbrellaID []int) int Rooms func(childComplexity int, number []string, buildingID int) int @@ -268,7 +268,7 @@ type MutationResolver interface { DeleteStudentApplicationForEvent(ctx context.Context, mail string, eventID int) (*models.User, error) } type QueryResolver interface { - Events(ctx context.Context, id []int, umbrellaID []int, label []string, needsTutors *bool, onlyFuture *bool, userMail []string) ([]*models.Event, error) + Events(ctx context.Context, id []int, umbrellaID []int, topic []string, typeArg []string, needsTutors *bool, onlyFuture *bool, userMail []string) ([]*models.Event, error) Umbrellas(ctx context.Context, id []int, onlyFuture *bool) ([]*models.Event, error) Buildings(ctx context.Context, id []int) ([]*models.Building, error) Rooms(ctx context.Context, number []string, buildingID int) ([]*models.Room, error) @@ -1056,7 +1056,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Query.Events(childComplexity, args["id"].([]int), args["umbrellaID"].([]int), args["label"].([]string), args["needsTutors"].(*bool), args["onlyFuture"].(*bool), args["userMail"].([]string)), true + return e.complexity.Query.Events(childComplexity, args["id"].([]int), args["umbrellaID"].([]int), args["topic"].([]string), args["type"].([]string), args["needsTutors"].(*bool), args["onlyFuture"].(*bool), args["userMail"].([]string)), true case "Query.forms": if e.complexity.Query.Forms == nil { @@ -2064,41 +2064,50 @@ func (ec *executionContext) field_Query_events_args(ctx context.Context, rawArgs } args["umbrellaID"] = arg1 var arg2 []string - if tmp, ok := rawArgs["label"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("label")) + if tmp, ok := rawArgs["topic"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("topic")) arg2, err = ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) if err != nil { return nil, err } } - args["label"] = arg2 - var arg3 *bool + args["topic"] = arg2 + var arg3 []string + if tmp, ok := rawArgs["type"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("type")) + arg3, err = ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) + if err != nil { + return nil, err + } + } + args["type"] = arg3 + var arg4 *bool if tmp, ok := rawArgs["needsTutors"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("needsTutors")) - arg3, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) + arg4, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) if err != nil { return nil, err } } - args["needsTutors"] = arg3 - var arg4 *bool + args["needsTutors"] = arg4 + var arg5 *bool if tmp, ok := rawArgs["onlyFuture"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("onlyFuture")) - arg4, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) + arg5, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) if err != nil { return nil, err } } - args["onlyFuture"] = arg4 - var arg5 []string + args["onlyFuture"] = arg5 + var arg6 []string if tmp, ok := rawArgs["userMail"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("userMail")) - arg5, err = ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) + arg6, err = ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) if err != nil { return nil, err } } - args["userMail"] = arg5 + args["userMail"] = arg6 return args, nil } @@ -6529,7 +6538,7 @@ func (ec *executionContext) _Query_events(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().Events(rctx, fc.Args["id"].([]int), fc.Args["umbrellaID"].([]int), fc.Args["label"].([]string), fc.Args["needsTutors"].(*bool), fc.Args["onlyFuture"].(*bool), fc.Args["userMail"].([]string)) + return ec.resolvers.Query().Events(rctx, fc.Args["id"].([]int), fc.Args["umbrellaID"].([]int), fc.Args["topic"].([]string), fc.Args["type"].([]string), fc.Args["needsTutors"].(*bool), fc.Args["onlyFuture"].(*bool), fc.Args["userMail"].([]string)) }) if err != nil { ec.Error(ctx, err) diff --git a/server/graph/schema.graphqls b/server/graph/schema.graphqls index b8a1994..90caa6b 100644 --- a/server/graph/schema.graphqls +++ b/server/graph/schema.graphqls @@ -127,7 +127,7 @@ type Application { } type Query { - events(id: [Int!], umbrellaID: [Int!], label: [String!], needsTutors: Boolean, onlyFuture: Boolean, userMail: [String!]): [Event!]! + events(id: [Int!], umbrellaID: [Int!], topic: [String!], type: [String!], needsTutors: Boolean, onlyFuture: Boolean, userMail: [String!]): [Event!]! umbrellas(id: [Int!], onlyFuture: Boolean): [Event!]! buildings(id: [Int!]): [Building!]! rooms(number: [String!], buildingID: Int!): [Room!]! diff --git a/server/graph/schema.resolvers.go b/server/graph/schema.resolvers.go index c602c6c..2fa1a9d 100644 --- a/server/graph/schema.resolvers.go +++ b/server/graph/schema.resolvers.go @@ -227,7 +227,7 @@ func (r *mutationResolver) UpdateEvent(ctx context.Context, id int, event models return nil, err } - updatedEvent, err := r.Query().Events(ctx, []int{id}, nil, nil, nil, nil, nil) + updatedEvent, err := r.Query().Events(ctx, []int{id}, nil, nil, nil, nil, nil, nil) if err != nil { return nil, err } @@ -560,7 +560,7 @@ func (r *mutationResolver) DeleteEventAssignmentForTutor(ctx context.Context, as return nil, err } - event, err := r.Query().Events(ctx, []int{int(assignment.EventID)}, nil, nil, nil, nil, nil) + event, err := r.Query().Events(ctx, []int{int(assignment.EventID)}, nil, nil, nil, nil, nil, nil) if err != nil { return nil, err } @@ -784,7 +784,7 @@ func (r *mutationResolver) DeleteStudentApplicationForEvent(ctx context.Context, } // Events is the resolver for the events field. -func (r *queryResolver) Events(ctx context.Context, id []int, umbrellaID []int, label []string, needsTutors *bool, onlyFuture *bool, userMail []string) ([]*models.Event, error) { +func (r *queryResolver) Events(ctx context.Context, id []int, umbrellaID []int, topic []string, typeArg []string, needsTutors *bool, onlyFuture *bool, userMail []string) ([]*models.Event, error) { var events []*models.Event query := r.DB.NewSelect(). @@ -802,10 +802,12 @@ func (r *queryResolver) Events(ctx context.Context, id []int, umbrellaID []int, query = query.Where(`"e"."umbrella_id" IN (?)`, bun.In(umbrellaID)) } - if label != nil { - query = query. - Where(`"e"."topic_name" IN (?)`, bun.In(label)). - WhereOr(`"e"."type_name" IN (?)`, bun.In(label)) + if typeArg != nil { + query = query.Where(`"e"."type_name" IN (?)`, bun.In(typeArg)) + } + + if topic != nil { + query = query.Where(`"e"."topic_name" IN (?)`, bun.In(topic)) } if needsTutors != nil { diff --git a/server/ical/handler.go b/server/ical/handler.go index d6fee1d..bf8ae4c 100644 --- a/server/ical/handler.go +++ b/server/ical/handler.go @@ -27,22 +27,28 @@ func createCalendar(events []*models.Event) string { func Handler(ctx context.Context, w http.ResponseWriter, r *http.Request, re *graph.Resolver) { var events []*models.Event - var labels []string + var topics []string + var types []string var umbrellaID int - u := r.URL.Query().Get("u") - umbrellaID, err := strconv.Atoi(u) - if u == "" || err != nil { + e := r.URL.Query().Get("e") + umbrellaID, err := strconv.Atoi(e) + if e == "" || err != nil { http.Error(w, "Calendar needs a valid umbrella id", http.StatusBadRequest) return } - l := r.URL.Query().Get("l") - if l != "" { - labels = strings.Split(l, ",") + to := r.URL.Query().Get("to") + if to != "" { + topics = strings.Split(to, ",") } - events, err = re.Query().Events(ctx, nil, []int{umbrellaID}, labels, nil, nil, nil) + ty := r.URL.Query().Get("ty") + if ty != "" { + types = strings.Split(ty, ",") + } + + events, err = re.Query().Events(ctx, nil, []int{umbrellaID}, topics, types, nil, nil, nil) if err != nil || len(events) == 0 { http.Error(w, "No events found", http.StatusBadRequest) return