160 lines
4.7 KiB
Python
160 lines
4.7 KiB
Python
from sqlite3 import Connection, Cursor
|
|
from database import SmartCursor
|
|
import random
|
|
|
|
class GameTable:
|
|
_game_table_id: int
|
|
_game_table_name: str
|
|
_game_table_link: str
|
|
_active: bool
|
|
_docker_id: str
|
|
_created: bool
|
|
_updated: bool
|
|
|
|
def __init__(
|
|
self,
|
|
game_table_id: int,
|
|
game_table_name: str,
|
|
game_table_link: str,
|
|
active: bool,
|
|
docker_id: int,
|
|
created: bool = False,
|
|
updated: bool = False,
|
|
):
|
|
self._game_table_id = game_table_id
|
|
self._game_table_name = game_table_name
|
|
self._game_table_link = game_table_link
|
|
self._active = active
|
|
self._docker_id = docker_id
|
|
self._created = created
|
|
self._updated = updated
|
|
|
|
def toJson(self):
|
|
return {
|
|
"id": self._game_table_id,
|
|
"table_name": self._game_table_name,
|
|
"table_link": self._game_table_link,
|
|
"active": self._active,
|
|
}
|
|
|
|
def commit(self, cursor):
|
|
if not self._created:
|
|
if self._game_table_id == 0:
|
|
self._game_table_id = random.randint(1, 999999999)
|
|
cursor.execute(
|
|
"""INSERT INTO game_tables
|
|
(game_table_id, game_table_name, game_table_link, active, docker_id)
|
|
VALUES (?, ?, ?, ?, ?)""",
|
|
(
|
|
self._game_table_id,
|
|
self._game_table_name,
|
|
self._game_table_link,
|
|
self._active,
|
|
self._docker_id,
|
|
),
|
|
)
|
|
self._created = True
|
|
self._updated = True
|
|
return
|
|
if not self._updated:
|
|
cursor.execute(
|
|
"""UPDATE game_tables
|
|
SET game_table_name = ?, game_table_link = ?, active = ?, docker_id = ?
|
|
WHERE game_table_id = ?""",
|
|
(
|
|
self._game_table_name,
|
|
self._game_table_link,
|
|
self._active,
|
|
self._docker_id,
|
|
self._game_table_id,
|
|
),
|
|
)
|
|
self._updated = True
|
|
return
|
|
|
|
@property
|
|
def game_table_id(self):
|
|
return self._game_table_id
|
|
|
|
@game_table_id.setter
|
|
def set_game_table_id(self, game_table_id: int):
|
|
self._updated = False
|
|
self._game_table_id = game_table_id
|
|
|
|
@property
|
|
def game_table_name(self):
|
|
return self._game_table_name
|
|
|
|
@game_table_name.setter
|
|
def game_table_name(self, game_table_name: str):
|
|
self._updated = False
|
|
self._game_table_name = game_table_name
|
|
|
|
@property
|
|
def game_table_link(self):
|
|
return self._game_table_link
|
|
|
|
@game_table_link.setter
|
|
def game_table_link(self, game_table_link):
|
|
self._updated = False
|
|
self._game_table_link = game_table_link
|
|
|
|
@property
|
|
def active(self):
|
|
return self._active
|
|
|
|
@active.setter
|
|
def active(self, active: bool):
|
|
self._updated = False
|
|
self._active = active
|
|
|
|
@property
|
|
def docker_id(self):
|
|
return self._docker_id
|
|
|
|
@docker_id.setter
|
|
def docker_id(self, docker_id: int):
|
|
self._upadted = False
|
|
self._docker_id = docker_id
|
|
|
|
|
|
class GameService:
|
|
connection: Connection
|
|
|
|
def __init__(self, connection: Connection):
|
|
self.connection = connection
|
|
|
|
def read_by_id(self, game_table_id, cursor=None):
|
|
with SmartCursor(cursor, self.connection) as smartCursor:
|
|
rows = smartCursor.execute(
|
|
"""SELECT game_table_id, game_table_name, game_table_link, active, docker_id
|
|
FROM game_tables
|
|
WHERE game_table_id = ?""",
|
|
(game_table_id,),
|
|
).fetchone()
|
|
|
|
if len(rows) == 0:
|
|
return None
|
|
|
|
return GameTable(rows[0], rows[1], rows[2], rows[3], rows[4], True, True)
|
|
|
|
def read_all(self, cursor=None):
|
|
with SmartCursor(cursor, self.connection) as smartCursor:
|
|
rows = smartCursor.execute(
|
|
"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)
|
|
for row in rows
|
|
]
|
|
|
|
def read_active(self, cursor=None):
|
|
with SmartCursor(cursor, self.connection) as smartCursor:
|
|
rows = smartCursor.execute(
|
|
"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)
|
|
for row in rows
|
|
]
|