backend: add db initializer logic
- Add some logging to DB Client Create a db initializer #4
This commit is contained in:
parent
6d7ce9b8db
commit
7118bb2c5b
@ -1,10 +1,19 @@
|
|||||||
FROM python:3.13-slim-bookworm
|
FROM python:3.13-slim-bookworm
|
||||||
|
|
||||||
|
# Set the PYTHONPATH environment variable
|
||||||
ENV PYTHONPATH=/usr/local/lib
|
ENV PYTHONPATH=/usr/local/lib
|
||||||
|
|
||||||
COPY . /app
|
# Set the working directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN pip3 install -r requirements.txt
|
# Copy only the requirements file first
|
||||||
|
COPY requirements.txt requirements.txt
|
||||||
|
|
||||||
CMD ["/bin/sh", "entrypoint.sh"]
|
# Install dependencies
|
||||||
|
RUN pip3 install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy the rest of the application code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Set the command to run your application
|
||||||
|
CMD ["/bin/sh", "entrypoint.sh"]
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
|
|||||||
@ -6,9 +6,39 @@
|
|||||||
db_client.py is the module for managing teh Dungeon's database services.
|
db_client.py is the module for managing teh Dungeon's database services.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
import sys
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
STARTUP_TABLE_CREATION_QUERIES = {
|
||||||
|
"users": """CREATE TABLE IF NOT EXISTS users (
|
||||||
|
Name varchar(255),
|
||||||
|
Attendance varchar(255),
|
||||||
|
HasCar bool
|
||||||
|
);""",
|
||||||
|
"car": """CREATE TABLE IF NOT EXISTS car (
|
||||||
|
Name varchar(255),
|
||||||
|
Car varchar(255),
|
||||||
|
FreeCarSpaces tinyint(1)
|
||||||
|
);""",
|
||||||
|
"food": """CREATE TABLE IF NOT EXISTS food (
|
||||||
|
Name varchar(255),
|
||||||
|
Suggestion varchar(2048)
|
||||||
|
);""",
|
||||||
|
"passengers": """CREATE TABLE IF NOT EXISTS passengers (
|
||||||
|
Name varchar(255),
|
||||||
|
Car varchar(255)
|
||||||
|
);""",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Severity(Enum):
|
||||||
|
INFO = "INFO"
|
||||||
|
WARNING = "WARNING"
|
||||||
|
ERROR = "ERROR"
|
||||||
|
|
||||||
|
|
||||||
class DBClient:
|
class DBClient:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.db_server = os.environ.get('DB_SERVER')
|
self.db_server = os.environ.get('DB_SERVER')
|
||||||
@ -18,13 +48,13 @@ class DBClient:
|
|||||||
self.database = os.environ.get('DB_NAME')
|
self.database = os.environ.get('DB_NAME')
|
||||||
|
|
||||||
if not self.db_server:
|
if not self.db_server:
|
||||||
raise ValueError("Environment variable 'DB_SERVER' is not set.")
|
self.error("Environment variable 'DB_SERVER' is not set.")
|
||||||
if not self.db_port:
|
if not self.db_port:
|
||||||
raise ValueError("Environment variable 'DB_PORT' is not set.")
|
self.error("Environment variable 'DB_PORT' is not set.")
|
||||||
if not self.password:
|
if not self.password:
|
||||||
raise ValueError("Environment variable 'ROOT_PWD' is not set.")
|
self.error("Environment variable 'ROOT_PWD' is not set.")
|
||||||
if not self.database:
|
if not self.database:
|
||||||
raise ValueError("Environment variable 'DB_NAME' is not set.")
|
self.error("Environment variable 'DB_NAME' is not set.")
|
||||||
|
|
||||||
self.connection = mysql.connector.connect(
|
self.connection = mysql.connector.connect(
|
||||||
host=self.db_server,
|
host=self.db_server,
|
||||||
@ -47,13 +77,13 @@ class DBClient:
|
|||||||
def initialize_database(self):
|
def initialize_database(self):
|
||||||
self.create_database(self.database)
|
self.create_database(self.database)
|
||||||
self.switch_database(self.database)
|
self.switch_database(self.database)
|
||||||
self.query("""CREATE TABLE IF NOT EXISTS users (
|
self.query(STARTUP_TABLE_CREATION_QUERIES['users'])
|
||||||
Name varchar(255),
|
self.query(STARTUP_TABLE_CREATION_QUERIES['car'])
|
||||||
Attendance bool,
|
self.query(STARTUP_TABLE_CREATION_QUERIES['food'])
|
||||||
HasCar bool
|
self.query(STARTUP_TABLE_CREATION_QUERIES['passengers'])
|
||||||
);""")
|
|
||||||
|
|
||||||
def query(self, query_str, quiet=False):
|
def query(self, query_str, quiet=False):
|
||||||
|
self.info(f'Executing query: {query_str}')
|
||||||
self.cursor.execute(query_str)
|
self.cursor.execute(query_str)
|
||||||
if quiet:
|
if quiet:
|
||||||
return []
|
return []
|
||||||
@ -62,4 +92,18 @@ class DBClient:
|
|||||||
def close(self):
|
def close(self):
|
||||||
self.cursor.close()
|
self.cursor.close()
|
||||||
self.connection.close()
|
self.connection.close()
|
||||||
|
|
||||||
|
def info(self, message):
|
||||||
|
self.message(severity=Severity.INFO, message=message)
|
||||||
|
|
||||||
|
|
||||||
|
def warning(self, message):
|
||||||
|
self.message(severity=Severity.WARNING, message=message)
|
||||||
|
|
||||||
|
def error(self, message):
|
||||||
|
self.message(severity=Severity.ERROR, message=message)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def message(self, severity, message):
|
||||||
|
print(f'DBClient [{severity.value}]: {message}')
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ database = DBClient()
|
|||||||
@app.route('/login', methods=['POST'])
|
@app.route('/login', methods=['POST'])
|
||||||
def login():
|
def login():
|
||||||
if request.is_json:
|
if request.is_json:
|
||||||
return request.json, 200
|
return jsonify({"hello": "user"}), 200
|
||||||
else:
|
else:
|
||||||
return jsonify({'error': 'Request must contain JSON data'}), 400
|
return jsonify({'error': 'Request must contain JSON data'}), 400
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user