# EZGG LAN Manager

## Overview

This repository contains the code for the EZGG LAN Manager.

## Development Setup

### Prerequisites

- Working Installation of MariaDB Server (version `10.6.25` or later)
  + MySQL should work too, but there are no guarantees.
- Python 3.9 or higher
- PyCharm or similar IDE (optional)

### Step 1: Preparing Database

To prepare the database, apply the SQL file located in `sql/create_database.sql` to your database server. This is easily accomplished with the MYSQL Workbench, but it can be also done by piping the file into the mariadb-server executable.

After creating the database, apply all patches found in `sql/*_patch.sql` in their numeric order.

Optionally, you can now execute the script `create_demo_database_content.py`, found in `src/ezgg_lan_manager/helpers`. Be aware that it can be buggy sometimes, especially if you overwrite existing data.

### Step 2: Preparing configuration

Use the example configuration at `config/config.example.toml` to create a `config.toml` at the base of the repository. Most of the parameters do not matter to get the development setup done, but the database credentials need to be correct.

### Step 3: Install dependecies

Use `pip install -r requirements.txt` to install the requirements. The usage of a venv is recommended.

### Step 4: Running the application

Run the application by executing the file `EzggLanManager.py` found at `src/ezgg_lan_manager`. Check the STDOUT for information regarding the port on which the application is now served.

## Docker Deployment

To get the docker compose setup running, you need to manually complete the following steps:

1. Create a valid `config.toml` in the project root, so it gets copied over into the container.
2. Create the database user:
```sql
CREATE USER 'ezgg_lan_manager'@'%' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON ezgg_lan_manager.* TO 'ezgg_lan_manager'@'%';
FLUSH PRIVILEGES;
```
3. Make sure to **NOT** use the default passwords!
4. Apply the `create_database.sql` when starting the MariaDB container for the first time.
5. Apply the patches (`sql/*_patch.sql`) when starting the MariaDB container for the first time.
