From b88b1411270c76907845182d184b0df82e8e65b3 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 13 Jun 2026 03:11:42 +0200 Subject: [PATCH] Solution --- .gitignore | 1 + app/managers.py | 36 +++++++++++++++++++++++++++++++++++- app/models.py | 6 +++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d4a2e5c5..de782341 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ venv/ .pytest_cache/ **__pycache__/ **db.sqlite3 +**db.sqlite diff --git a/app/managers.py b/app/managers.py index 129d8bd2..26f52e36 100644 --- a/app/managers.py +++ b/app/managers.py @@ -3,4 +3,38 @@ from app.models import Actor -# add manager here +class ActorManager: + def __init__(self, db_name: str, table_name: str) -> None: + self.db_name = db_name + self.table_name = table_name + self._connection = sqlite3.connect(self.db_name) + + def create(self, first_name: str, last_name: str) -> None: + self._connection.execute( + f"INSERT INTO {self.table_name} (first_name, last_name) " + f"VALUES (?, ?)", + (first_name, last_name), + ) + self._connection.commit() + + def all(self) -> list[Actor]: + actor_cursor = self._connection.execute( + f"SELECT * FROM {self.table_name}" + ) + return [Actor(*row) for row in actor_cursor] + + def update(self, pk: int, new_first_name: str, new_last_name: str) -> None: + self._connection.execute( + f"UPDATE {self.table_name} " + f"SET first_name=?, last_name=? " + f"WHERE id=? ", + (new_first_name, new_last_name, pk), + ) + self._connection.commit() + + def delete(self, pk: int) -> None: + self._connection.execute( + f"DELETE FROM {self.table_name} WHERE id=?", + (pk,) + ) + self._connection.commit() diff --git a/app/models.py b/app/models.py index 1dfd38e5..3e228ce3 100644 --- a/app/models.py +++ b/app/models.py @@ -1,4 +1,8 @@ from dataclasses import dataclass -# add dataclass here +@dataclass +class Actor: + id: int + first_name: str + last_name: str