From 336eeb7af278cee2dced38024d690ae168d6ec9b Mon Sep 17 00:00:00 2001 From: bronsen Date: Sun, 22 Feb 2026 20:41:40 +0100 Subject: [PATCH 1/3] codestyle: add docstrings to helper functions --- src/teilchensammler_cli/models.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/teilchensammler_cli/models.py b/src/teilchensammler_cli/models.py index 4ed6afc..7d01b4a 100644 --- a/src/teilchensammler_cli/models.py +++ b/src/teilchensammler_cli/models.py @@ -82,7 +82,14 @@ async def make_teilchen_input(text: str) -> TeilchenCreate | None: async def load_initial_data(engine) -> Sequence[Teilchen]: + """Retrieve all Teilchen records from the database. + Args: + engine (sqlalchemy.Engine): the engine or connection or whatever + + Returns: + List of Teilchen, potentially empty + """ with Session(engine) as session: statement = select( Teilchen.id, Teilchen.name, Teilchen.description, Teilchen.number, Teilchen.tags @@ -92,6 +99,15 @@ async def load_initial_data(engine) -> Sequence[Teilchen]: async def add_to_database(tc: TeilchenCreate, engine) -> Teilchen: + """Add given data as a new record into the database. + + Args: + engine (sqlalchemy.Engine): the engine or connection or whatever + tc: Teilchen data (no `id` yet) + + Returns: + The newly created Teilchen (this time with `id`) + """ with Session(engine) as session: teilchen = Teilchen.model_validate(tc) session.add(teilchen) From d8101d7c553a742b1718cb5ade7e5a3e25a99dba Mon Sep 17 00:00:00 2001 From: bronsen Date: Sun, 22 Feb 2026 20:42:42 +0100 Subject: [PATCH 2/3] models: log incoming and outgoing data with debug logger --- src/teilchensammler_cli/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/teilchensammler_cli/models.py b/src/teilchensammler_cli/models.py index 7d01b4a..9422308 100644 --- a/src/teilchensammler_cli/models.py +++ b/src/teilchensammler_cli/models.py @@ -95,6 +95,8 @@ async def load_initial_data(engine) -> Sequence[Teilchen]: Teilchen.id, Teilchen.name, Teilchen.description, Teilchen.number, Teilchen.tags ) # ty:ignore[no-matching-overload] all_teilchen = session.exec(statement).all() + + logger.debug("Loading initial data: found %s records", len(all_teilchen)) return all_teilchen @@ -108,10 +110,12 @@ async def add_to_database(tc: TeilchenCreate, engine) -> Teilchen: Returns: The newly created Teilchen (this time with `id`) """ + logger.debug("received: %s", str(tc)) with Session(engine) as session: teilchen = Teilchen.model_validate(tc) session.add(teilchen) session.commit() session.refresh(teilchen) + logger.debug("created: %s", str(teilchen)) return teilchen From e5bb663ee8437b345ee655af634a2d8583b5cdce Mon Sep 17 00:00:00 2001 From: bronsen Date: Sun, 22 Feb 2026 20:59:45 +0100 Subject: [PATCH 3/3] main,database: add debug log stanzas closes: #7 --- src/teilchensammler_cli/database.py | 4 ++++ src/teilchensammler_cli/main.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/teilchensammler_cli/database.py b/src/teilchensammler_cli/database.py index 2d9f888..60cee27 100644 --- a/src/teilchensammler_cli/database.py +++ b/src/teilchensammler_cli/database.py @@ -1,5 +1,8 @@ import os from sqlmodel import SQLModel, create_engine +import logging + +logger = logging.getLogger(__name__) sqlite_url = os.environ.get("DATABASE_URL", "sqlite:///database.db") @@ -8,3 +11,4 @@ engine = create_engine(sqlite_url, echo=False) def create_db_and_tables(engine): SQLModel.metadata.create_all(engine) + logger.debug("Created tables, if not already present") diff --git a/src/teilchensammler_cli/main.py b/src/teilchensammler_cli/main.py index 9787807..f1d7c84 100644 --- a/src/teilchensammler_cli/main.py +++ b/src/teilchensammler_cli/main.py @@ -15,6 +15,8 @@ from textual.widgets import Button, DataTable, Footer, Header, Input, Static from .database import create_db_and_tables, engine from .models import add_to_database, load_initial_data, make_teilchen_input +# Make it so that log messages go to Textual; we should be able to then see +# these in the console logging.basicConfig( level="NOTSET", handlers=[TextualHandler()], @@ -64,6 +66,7 @@ class SearchBar(Static): async def parse_input(self, event: Input.Submitted) -> None: if not (tc := await make_teilchen_input(event.value)): + logger.debug("could not create TeilchenCreate from data: %s", event.value) return event.input.value = ""