1
0
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:
Artem Litvinov 2023-10-02 20:07:19 +01:00
parent 741b84b875
commit c0e35c4c3f
5 changed files with 55 additions and 38 deletions

View File

@ -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"]

View File

@ -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()

View File

@ -0,0 +1,4 @@
from .base import Base, IdCreatedUpdatedBaseMixin
from .joke import JokeORM
__all__ = ["Base", "IdCreatedUpdatedBaseMixin", "JokeORM"]

View 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()

View 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()