Files
assignment03/README.md

78 lines
2.4 KiB
Markdown

# 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
1. **Clone the repository**:
```bash
git clone https://git.implohq.de/semester06-graph_databases/assignment03
```
2. **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
3. Run Application:
- Install dependencies with `deno install` or alternatively `npm install`
- Configure the environment variables in `.env` file.
- Sample file:
```
NEO4J_URI=neo4j://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=admin
```
- Run `deno run dev` or alternatively `npm run dev`
## 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**.