mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 14:33:26 +00:00
build: add models
This commit is contained in:
parent
741b84b875
commit
c0e35c4c3f
|
@ -1,4 +1,5 @@
|
||||||
from .base_sqlalchemy import Base, IdCreatedUpdatedBaseMixin
|
from .joke import Joke
|
||||||
|
from .orm import Base, IdCreatedUpdatedBaseMixin, JokeORM
|
||||||
from .token import Token
|
from .token import Token
|
||||||
|
|
||||||
__all__ = ["Base", "IdCreatedUpdatedBaseMixin", "Token"]
|
__all__ = ["Base", "IdCreatedUpdatedBaseMixin", "Joke", "JokeORM", "Token"]
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
import uuid
|
|
||||||
|
|
||||||
import sqlalchemy
|
|
||||||
import sqlalchemy.dialects.postgresql
|
|
||||||
import sqlalchemy.ext.declarative
|
|
||||||
import sqlalchemy.orm
|
|
||||||
|
|
||||||
|
|
||||||
class Base(sqlalchemy.orm.DeclarativeBase):
|
|
||||||
"""Base class for all models."""
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class IdCreatedUpdatedBaseMixin(Base):
|
|
||||||
@sqlalchemy.ext.declarative.declared_attr
|
|
||||||
def uuid(cls):
|
|
||||||
return sqlalchemy.Column(
|
|
||||||
sqlalchemy.dialects.postgresql.UUID(as_uuid=True),
|
|
||||||
primary_key=True,
|
|
||||||
default=uuid.uuid4,
|
|
||||||
unique=True,
|
|
||||||
nullable=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
@sqlalchemy.ext.declarative.declared_attr
|
|
||||||
def created_at(cls):
|
|
||||||
return sqlalchemy.Column(sqlalchemy.DateTime, server_default=sqlalchemy.sql.func.now())
|
|
||||||
|
|
||||||
@sqlalchemy.ext.declarative.declared_attr
|
|
||||||
def updated_at(cls):
|
|
||||||
return sqlalchemy.Column(sqlalchemy.DateTime, server_default=sqlalchemy.sql.func.now())
|
|
||||||
|
|
||||||
@sqlalchemy.ext.declarative.declared_attr.directive
|
|
||||||
def __tablename__(cls) -> str:
|
|
||||||
return cls.__name__.lower()
|
|
4
src/fastapi_app/lib/models/orm/__init__.py
Normal file
4
src/fastapi_app/lib/models/orm/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
from .base import Base, IdCreatedUpdatedBaseMixin
|
||||||
|
from .joke import JokeORM
|
||||||
|
|
||||||
|
__all__ = ["Base", "IdCreatedUpdatedBaseMixin", "JokeORM"]
|
35
src/fastapi_app/lib/models/orm/base.py
Normal file
35
src/fastapi_app/lib/models/orm/base.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
import datetime
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import sqlalchemy
|
||||||
|
import sqlalchemy.dialects.postgresql
|
||||||
|
import sqlalchemy.ext.declarative
|
||||||
|
import sqlalchemy.orm as sa_orm
|
||||||
|
import sqlalchemy.sql as sa_sql
|
||||||
|
|
||||||
|
|
||||||
|
class Base(sa_orm.DeclarativeBase):
|
||||||
|
"""Base class for all models."""
|
||||||
|
|
||||||
|
@sqlalchemy.ext.declarative.declared_attr.directive
|
||||||
|
def __tablename__(cls):
|
||||||
|
return cls.__name__.lower()
|
||||||
|
|
||||||
|
__mapper_args__ = {"eager_defaults": True}
|
||||||
|
|
||||||
|
id: sa_orm.Mapped[uuid.UUID] = sa_orm.mapped_column(primary_key=True, default=uuid.uuid4)
|
||||||
|
|
||||||
|
|
||||||
|
class IdCreatedUpdatedBaseMixin:
|
||||||
|
# id: sa_orm.Mapped[int] = sa_orm.mapped_column(primary_key=True)
|
||||||
|
# id_field: sa_orm.Mapped[uuid.UUID] = sa_orm.mapped_column(name="uuid", primary_key=True, unique=True, default=uuid.uuid4, nullable=False)
|
||||||
|
created: sa_orm.Mapped[datetime.datetime] = sa_orm.mapped_column(server_default=sa_sql.func.now())
|
||||||
|
updated: sa_orm.Mapped[datetime.datetime] = sa_orm.mapped_column(
|
||||||
|
server_default=sa_sql.func.now(), onupdate=sa_sql.func.now()
|
||||||
|
)
|
||||||
|
|
||||||
|
# __mapper_args__ = {"eager_defaults": True}
|
||||||
|
|
||||||
|
# @sqlalchemy.ext.declarative.declared_attr.directive
|
||||||
|
# def __tablename__(cls) -> str:
|
||||||
|
# return cls.__name__.lower()
|
13
src/fastapi_app/lib/models/orm/joke.py
Normal file
13
src/fastapi_app/lib/models/orm/joke.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
import sqlalchemy.orm as sa_orm
|
||||||
|
|
||||||
|
import lib.models.orm.base as base
|
||||||
|
|
||||||
|
Base = base.Base
|
||||||
|
|
||||||
|
|
||||||
|
class JokeORM(Base):
|
||||||
|
__tablename__ = "joke" # type: ignore
|
||||||
|
|
||||||
|
type_field: sa_orm.Mapped[str] = sa_orm.mapped_column(name="type", nullable=False)
|
||||||
|
setup: sa_orm.Mapped[str] = sa_orm.mapped_column()
|
||||||
|
punchline: sa_orm.Mapped[str] = sa_orm.mapped_column()
|
Loading…
Reference in New Issue
Block a user