Assignment 03: Graph Database for Lecture Management
This repository contains an exercise for the Graph Databases course at the JKU. It contains the implementation for an application layer that uses an underlying graph database with data that is provided in the Moodle course.
How to Use
- Clone the repository:
git clone https://git.implohq.de/semester06-graph_databases/assignment03
- Set up the database:
- Run with
docker run -p 7474:7474 -p 7687:7687 -v /home/quirinecker/Downloads/neo4j/data:/data --env=NEO4J_AUTH=none neo4j:latest - Import via the cypher file that is provided in the moodle course
- Run with
- Run Application:
- Install dependencies with
deno installor alternativelynpm install - Configure the environment variables in
.envfile.- Sample file:
NEO4J_URI=neo4j://localhost:7687 NEO4J_USERNAME=neo4j NEO4J_PASSWORD=admin - Run
deno run devor alternativelynpm run dev
- Install dependencies with
Tech Stack
- Deno (or Node.js) (its just for package management)
- Neo4j
- Astro
- TypeScript
Features
1. Automatic Deletion Notifications
- Deleting any node (e.g., student, professor, lecture) automatically creates a Notification node.
2. Lecture Participant Management
- List Participants: Enter a lecture number to list all participants (students and professors) in ascending order by name.
- Add Participants: Add new participants to a lecture.
3. Lecture Search
- Search for lectures using a flexible search string.
- The string can match:
- Professor's name.
- Lecture ID.
- Lecture topic.
- Room.
- Date.
- Returns a list of all matching lectures.
4. Student Grading
- Search for a student by name or matriculation number.
- Grade them for an exam only if they are registered for that exam.
- Prevents grading unregistered students.
5. Delete Students
- Delete a student by:
- Matriculation number.
- Name (first or last).
6. Relationship Queries
- Connection Check (A and B are people):
- If A and B are students in the same lecture → "classmates".
- If A and B are professors teaching the same lecture → "colleagues".
- If no connection exists → "No connection found".
- Path Finding (A and B are any nodes):
- Display all paths connecting A and B.
- Paths are ordered by length: shortest first, longest last.
Description
Languages
Astro
70.4%
TypeScript
28.8%
JavaScript
0.8%