73 lines
1.7 KiB
Python
73 lines
1.7 KiB
Python
from __future__ import annotations
|
|
from typing import ClassVar
|
|
|
|
from utils import Utils
|
|
from database import Database
|
|
|
|
|
|
class Ant:
|
|
def __init__(self) -> None:
|
|
now = Utils.now()
|
|
self.id: int
|
|
self.created = now
|
|
self.updated = now
|
|
self.name = ""
|
|
self.status = ""
|
|
self.hits = 0
|
|
self.triumph = 0
|
|
|
|
def get_name(self) -> str:
|
|
return self.name or "Nameless"
|
|
|
|
def get_age(self) -> str:
|
|
now = Utils.now()
|
|
return Utils.time_ago(self.created, now)
|
|
|
|
def describe(self) -> None:
|
|
Utils.print(f"Name is {self.get_name()}")
|
|
Utils.print(f"It hatched {self.get_age()}")
|
|
|
|
|
|
class Ants:
|
|
ants: ClassVar[list[Ant]] = []
|
|
|
|
@staticmethod
|
|
def get_all() -> None:
|
|
Database.cursor.execute(
|
|
"SELECT id, created, updated, name, status, hits, triumph FROM ants"
|
|
)
|
|
rows = Database.cursor.fetchall()
|
|
|
|
for row in rows:
|
|
ant = Ant()
|
|
ant.id = row[0]
|
|
ant.created = row[1]
|
|
ant.updated = row[2]
|
|
ant.name = row[3]
|
|
ant.status = row[4]
|
|
ant.hits = row[5]
|
|
ant.triumph = row[6]
|
|
Ants.ants.append(ant)
|
|
|
|
@staticmethod
|
|
def hatch() -> None:
|
|
now = Utils.now()
|
|
|
|
Database.cursor.execute(
|
|
"INSERT INTO ants (created, updated) VALUES (?, ?)",
|
|
(now, now),
|
|
)
|
|
|
|
Database.connection.commit()
|
|
Database.cursor.execute("SELECT last_insert_rowid()")
|
|
row = Database.cursor.fetchone()
|
|
|
|
ant = Ant()
|
|
ant.id = row[0]
|
|
|
|
Utils.print(f"Ant hatched: {ant.id}")
|
|
|
|
@staticmethod
|
|
def terminate() -> None:
|
|
pass
|