ファイル
nizika_ai/models.py
T
2025-08-17 04:04:13 +09:00

108 行
2.1 KiB
Python

from __future__ import annotations
from datetime import datetime
from eloquent import Model # 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
@property
def query (
self,
) -> Query:
return self.belongs_to (Query)
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).get ()]
class QueryAnswerHistory (Model):
id: int
query_id: int
answer_id: int
__timestamps__ = False
@property
def query (
self,
) -> Query:
return self.belongs_to (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