Compare commits
No commits in common. "e5bb663ee8437b345ee655af634a2d8583b5cdce" and "600b211d3cc9d9b2e1837569f3d862c7aaa28126" have entirely different histories.
e5bb663ee8
...
600b211d3c
3 changed files with 0 additions and 27 deletions
|
|
@ -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")
|
|
||||||
|
|
|
||||||
|
|
@ -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 = ""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue