From ea9c457dbed2de55eea5c0ed5401beb2f1af93ef Mon Sep 17 00:00:00 2001 From: iamBadgers Date: Sat, 11 Apr 2026 20:19:34 -0700 Subject: [PATCH] new table shizz --- src/game_tables.py | 24 +++++++++++++++++++++--- src/tables.py | 15 +++++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/game_tables.py b/src/game_tables.py index 637d286..36b7f9a 100644 --- a/src/game_tables.py +++ b/src/game_tables.py @@ -2,6 +2,9 @@ from sqlite3 import Connection, Cursor from database import SmartCursor import random +class GameTableException(Exception): + def __init__(self, message): + super().__init__(self, message) class GameTable: _game_table_id: int @@ -11,6 +14,7 @@ class GameTable: _docker_id: str _created: bool _updated: bool + _delete: bool def __init__( self, @@ -21,6 +25,7 @@ class GameTable: docker_id: int, created: bool = False, updated: bool = False, + delete: bool = False ): self._game_table_id = game_table_id self._game_table_name = game_table_name @@ -29,6 +34,7 @@ class GameTable: self._docker_id = docker_id self._created = created self._updated = updated + self._delete = delete def toJson(self): return { @@ -72,6 +78,18 @@ class GameTable: ) self._updated = True return + if self._delete: + cursor.execute("DELETE FROM game_tables WHERE game_table_id = ?", (self._game_table_id,)) + self._created = False + self._updated = True + self._delete = False + + def delete(self): + if not self._created: + raise GameTableException("Cannot delete a table if it is not created.") + if not self._updated: + raise GameTableException("Cannot delete a table if it is dirty.") + self._delete = True @property def game_table_id(self): @@ -137,7 +155,7 @@ class GameService: if len(rows) == 0: return None - return GameTable(rows[0], rows[1], rows[2], rows[3], rows[4], True, True) + return GameTable(rows[0], rows[1], rows[2], rows[3], rows[4], True, True, False) def read_all(self, cursor=None): with SmartCursor(cursor, self.connection) as smartCursor: @@ -145,7 +163,7 @@ class GameService: "SELECT game_table_id, game_table_name, game_table_link, active, docker_id FROM game_tables" ).fetchall() return [ - GameTable(row[0], row[1], row[2], row[3], row[4], True, True) + GameTable(row[0], row[1], row[2], row[3], row[4], True, True, False) for row in rows ] @@ -155,6 +173,6 @@ class GameService: "SELECT game_table_id, game_table_name, game_table_link, active, docker_id FROM game_tables WHERE active != 0" ).fetchall() return [ - GameTable(row[0], row[1], row[2], row[3], row[4], True, True) + GameTable(row[0], row[1], row[2], row[3], row[4], True, True, False) for row in rows ] diff --git a/src/tables.py b/src/tables.py index d6fbf49..09efeba 100644 --- a/src/tables.py +++ b/src/tables.py @@ -1,4 +1,4 @@ -from flask import Blueprint, Flask, g, jsonify, request +from flask import Blueprint, Flask, g, jsonify, request, current_app from game_tables import GameService, GameTable from key_tables import KeyService, KeyTable import container_managment @@ -10,6 +10,7 @@ tables = Blueprint("tables_api", __name__) @tables.route("/tables", methods=["POST"]) def create_table(): + current_app.logger.info(request.get_json()) db = get_db() with SmartCursor(connection=db) as smartCursor: table = GameTable( @@ -38,7 +39,17 @@ def update_table(table_id): @tables.route("tables/", methods=["DELETE"]) def delete_table(table_id): - return + db = get_db() + gameService = GameService(db) + table = gameService.read_by_id(table_id) + if table == None: + return jsonify({}), 404 + + table.delete() + with SmartCursor(connection=db) as smartCursor: + table.commit(smartCursor) + db.commit() + return jsonify({}), 200 @tables.route("/tables/active")