learn-sql-model/learn_sql_model/models/fast_model.py
2023-05-19 14:11:01 -05:00

46 lines
1.1 KiB
Python

from typing import Optional, TYPE_CHECKING
from sqlmodel import SQLModel, select
if TYPE_CHECKING:
from learn_sql_model.config import Config
class FastModel(SQLModel):
def pre_post(self) -> None:
"""run before post"""
def pre_delete(self) -> None:
"""run before delete"""
@classmethod
def pre_get(self) -> None:
"""run before get"""
def post(self, config: "Config" = None) -> None:
if config is None:
from learn_sql_model.config import get_config
config = get_config()
self.pre_post()
with config.session as session:
session.add(self)
session.commit()
@classmethod
def get(
self, item_id: int = None, config: "Config" = None
) -> Optional["FastModel"]:
if config is None:
from learn_sql_model.config import get_config
config = get_config()
self.pre_get()
with config.session as session:
if item_id is None:
return session.exec(select(self)).all()
return session.exec(select(self).where(self.id == item_id)).one()