beerds/server/modules/recognizer/repository/models.py

45 lines
1.6 KiB
Python

from dataclasses import dataclass, field
from datetime import UTC, datetime
from dataclasses_ujson.dataclasses_ujson import UJsonMixin # type: ignore
from sqlalchemy import (
Column,
DateTime,
ForeignKeyConstraint,
String,
)
from server.infra.db.db_mapper import mapper_registry
@mapper_registry.mapped
@dataclass
class Results(UJsonMixin):
__sa_dataclass_metadata_key__ = "sa"
__tablename__ = "recognizer_results"
__table_args__ = (ForeignKeyConstraint(["attachment_id"], ["attachments.id"], "votes_attachment_id_fk"),)
id: str = field(metadata={"sa": Column(String(), primary_key=True, nullable=False)})
attachment_id: str = field(metadata={"sa": Column(String(), nullable=False)})
user_id: str = field(metadata={"sa": Column(String(), nullable=False)})
device_id: str = field(metadata={"sa": Column(String(), nullable=False)})
created_at: datetime = field(
default=datetime.now(UTC),
metadata={"sa": Column(DateTime(timezone=True), nullable=False)},
)
@mapper_registry.mapped
@dataclass
class ResultBeerds(UJsonMixin):
__sa_dataclass_metadata_key__ = "sa"
__tablename__ = "recognizer_results_beerds"
__table_args__ = (
ForeignKeyConstraint(["recognizer_results_id"], ["recognizer_results.id"], "recognizer_results_id_fk"),
ForeignKeyConstraint(["beerd_id"], ["beerds.id"], "recognizer_results_beerd_id_fk"),
)
id: str = field(metadata={"sa": Column(String(), primary_key=True, nullable=False)})
recognizer_results_id: str = field(metadata={"sa": Column(String(), nullable=False)})
beerd_id: str = field(metadata={"sa": Column(String(), nullable=False)})