|  | from __future__ import annotations
from datetime import datetime
from eloquent import Model  # type: ignore
from eloquent.orm import belongs_to
from eloquent.query import QueryBuilder  # type: ignore
from .config import DB
class AnsweredFlag (Model):
    id:         int
    answer_id:  int
    platform:   int
    answered:   bool
    __timestamps__ = False
    @property
    def answer (
            self,
    ) -> Answer:
        return self.belongs_to (Answer)
class Answer (Model):
    id:             int
    query_id:       int
    character:      int
    content:        str
    sent_at:        datetime
    __timestamps__ = False
    @belongs_to ('query_id')
    def query_rel (
            self,
    ) -> type:
        return Query
    @property
    def answered_flags (
            self,
    ) -> list[AnsweredFlag]:
        return self.has_many (AnsweredFlag)
    def answered (
            self,
            platform:   int,
    ) -> bool | None:
        answered_flag = (AnsweredFlag.where ('answer_id', self.id)
                         .where ('platform', platform)
                         .first ())
        if answered_flag is None:
            return None
        return answered_flag.answered
class Query (Model):
    id:                 int
    user_id:            int | None
    target_character:   int
    content:            str
    image_url:          str | None
    query_type:         int
    model:              int
    sent_at:            datetime
    answered:           bool
    transfer_data:      dict[str, str] | None
    __casts__ = { 'transfer_data': 'json' }
    __timestamps__ = False
    @property
    def user (
            self,
    ) -> User:
        return self.belongs_to (User)
    @property
    def answer_histories (
            self,
    ) -> list[Answer]:
        return [x.answer for x in self.has_many (QueryAnswerHistory)]
class QueryAnswerHistory (Model):
    id:         int
    query_id:   int
    answer_id:  int
    __timestamps__ = False
    @belongs_to ('query_id')
    def query_rel (
            self,
    ) -> type:
        return Query
    @property
    def answer (
            self,
    ) -> Answer:
        return self.belongs_to (Answer)
class User (Model):
    id:         int
    platform:   int
    code:       str
    name:       str
    icon:       bytes
    __timestamps__ = False
 |