Compare commits

..

No commits in common. "main" and "v0.5.3" have entirely different histories.
main ... v0.5.3

3 changed files with 0 additions and 27 deletions

View file

@ -1,8 +1,5 @@
import os import os
from sqlmodel import SQLModel, create_engine from sqlmodel import SQLModel, create_engine
import logging
logger = logging.getLogger(__name__)
sqlite_url = os.environ.get("DATABASE_URL", "sqlite:///database.db") sqlite_url = os.environ.get("DATABASE_URL", "sqlite:///database.db")
@ -11,4 +8,3 @@ engine = create_engine(sqlite_url, echo=False)
def create_db_and_tables(engine): def create_db_and_tables(engine):
SQLModel.metadata.create_all(engine) SQLModel.metadata.create_all(engine)
logger.debug("Created tables, if not already present")

View file

@ -15,8 +15,6 @@ from textual.widgets import Button, DataTable, Footer, Header, Input, Static
from .database import create_db_and_tables, engine from .database import create_db_and_tables, engine
from .models import add_to_database, load_initial_data, make_teilchen_input 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( logging.basicConfig(
level="NOTSET", level="NOTSET",
handlers=[TextualHandler()], handlers=[TextualHandler()],
@ -66,7 +64,6 @@ class SearchBar(Static):
async def parse_input(self, event: Input.Submitted) -> None: async def parse_input(self, event: Input.Submitted) -> None:
if not (tc := await make_teilchen_input(event.value)): if not (tc := await make_teilchen_input(event.value)):
logger.debug("could not create TeilchenCreate from data: %s", event.value)
return return
event.input.value = "" event.input.value = ""

View file

@ -82,40 +82,20 @@ async def make_teilchen_input(text: str) -> TeilchenCreate | None:
async def load_initial_data(engine) -> Sequence[Teilchen]: 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: with Session(engine) as session:
statement = select( statement = select(
Teilchen.id, Teilchen.name, Teilchen.description, Teilchen.number, Teilchen.tags Teilchen.id, Teilchen.name, Teilchen.description, Teilchen.number, Teilchen.tags
) # ty:ignore[no-matching-overload] ) # ty:ignore[no-matching-overload]
all_teilchen = session.exec(statement).all() all_teilchen = session.exec(statement).all()
logger.debug("Loading initial data: found %s records", len(all_teilchen))
return all_teilchen return all_teilchen
async def add_to_database(tc: TeilchenCreate, engine) -> 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`)
"""
logger.debug("received: %s", str(tc))
with Session(engine) as session: with Session(engine) as session:
teilchen = Teilchen.model_validate(tc) teilchen = Teilchen.model_validate(tc)
session.add(teilchen) session.add(teilchen)
session.commit() session.commit()
session.refresh(teilchen) session.refresh(teilchen)
logger.debug("created: %s", str(teilchen))
return teilchen return teilchen