diff --git a/src/container_managment.py b/src/container_managment.py index 7f0d831..e9bf901 100644 --- a/src/container_managment.py +++ b/src/container_managment.py @@ -2,6 +2,7 @@ import docker import os import socket import inspect +import shutil from flask import current_app from game_table_model import GameTable from key_model import TableKey @@ -31,13 +32,23 @@ def build_container_routing_labels(prefix: str, strip_prefix=True): return labels -def delete_container(docker_id) -> bool: - if not docker_id: +def delete_file_package(table: GameTable) -> bool: + if table.active: + return False + if not os.path.exists("/data/{prefix}".format(prefix=table.game_table_link)): + return False + shutil.rmtree("/data/{prefix}".format(prefix=table.game_table_link)) + os.removedir("/data/{prefix}") + return True + + +def delete_container(table: GameTable) -> bool: + if not table.docker_id: return False try: client = docker.from_env() - container = client.containers.get(docker_id) + container = client.containers.get(table.docker_id) container.remove() return True except (docker.errors.NotFound, docker.errors.APIError): diff --git a/src/key_model.py b/src/key_model.py index 5c2cf4e..ac1de60 100644 --- a/src/key_model.py +++ b/src/key_model.py @@ -1,5 +1,6 @@ from main import db + class TableKey(db.Model): __tablename__ = "game_keys" diff --git a/src/tables.py b/src/tables.py index 34a6e75..e3a88d1 100644 --- a/src/tables.py +++ b/src/tables.py @@ -49,6 +49,7 @@ def update_table(table_id): @tables.route("tables/", methods=["DELETE"]) def delete_table(table_id): table = GameTable.query.get_or_404(table_id) + container_managment.delete_file_package(table) potato.session.delete(table) potato.session.commit() return jsonify({}), 200 @@ -90,7 +91,7 @@ def activate_table(table_id): key.reserve(table.game_table_id) table.active = True if hard: - container_managment.delete_container(table.docker_id) + container_managment.delete_container(table) table.docker_id = container_managment.start_foundry_container(table, key) potato.session.commit() return jsonify(table.to_dict()) @@ -112,4 +113,3 @@ def deactivate_table(table_id): potato.session.commit() return jsonify(table.to_dict()) - diff --git a/src/user_model.py b/src/user_model.py new file mode 100644 index 0000000..99b357f --- /dev/null +++ b/src/user_model.py @@ -0,0 +1,12 @@ +from main import db + + +class User(db.Model): + + __tablename__ = "users" + + user_id = db.Column(db.Integer, primary_key=True) + password_hash = db.Column(db.Text) + user_name = db.Column(db.Text, unique=True) + +