Source code for greatday.db

"""Contains all database utilities."""

from __future__ import annotations

from functools import lru_cache as cache
from typing import Any

from sqlalchemy.future import Engine
from sqlmodel import SQLModel, create_engine as sqlmodel_create_engine


[docs]@cache def create_cached_engine(url: str, /, **kwargs: Any) -> Engine: """Helper function for creating a new (if necessary) sqlalchemy engine.""" engine = create_engine(url, **kwargs) return engine
[docs]def create_engine(url: str, /, **kwargs: Any) -> Engine: """Wrapper around sqlmodel.create_engine() that makes sure tables exist.""" engine = sqlmodel_create_engine(url, **kwargs) SQLModel.metadata.create_all(engine) return engine