AI ニジカ綜合
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.3 KiB

  1. from __future__ import annotations
  2. from datetime import datetime
  3. from eloquent import Model, QueryBuilder # type: ignore
  4. from .config import DB
  5. class AnsweredFlag (Model):
  6. id: int
  7. answer_id: int
  8. platform: int
  9. answered: bool
  10. __timestamps__ = False
  11. @property
  12. def answer (
  13. self,
  14. ) -> Answer:
  15. return self.belongs_to (Answer)
  16. class Answer (Model):
  17. id: int
  18. query_id: int
  19. character: int
  20. content: str
  21. sent_at: datetime
  22. __timestamps__ = False
  23. @property
  24. def query_rel (
  25. self,
  26. ) -> Query:
  27. return self.belongs_to (Query)
  28. @property
  29. def answered_flags (
  30. self,
  31. ) -> list[AnsweredFlag]:
  32. return self.has_many (AnsweredFlag)
  33. def answered (
  34. self,
  35. platform: int,
  36. ) -> bool | None:
  37. answered_flag = (AnsweredFlag.where ('answer_id', self.id)
  38. .where ('platform', platform)
  39. .first ())
  40. if answered_flag is None:
  41. return None
  42. return answered_flag.answered
  43. class Query (Model):
  44. id: int
  45. user_id: int | None
  46. target_character: int
  47. content: str
  48. image_url: str | None
  49. query_type: int
  50. model: int
  51. sent_at: datetime
  52. answered: bool
  53. transfer_data: dict[str, str] | None
  54. __casts__ = { 'transfer_data': 'json' }
  55. __timestamps__ = False
  56. @property
  57. def user (
  58. self,
  59. ) -> User:
  60. return self.belongs_to (User)
  61. @property
  62. def answer_histories (
  63. self,
  64. ) -> list[Answer]:
  65. return [x.answer for x in self.has_many (QueryAnswerHistory)]
  66. class QueryAnswerHistory (Model):
  67. id: int
  68. query_id: int
  69. answer_id: int
  70. __timestamps__ = False
  71. @property
  72. def query_rel (
  73. self,
  74. ) -> Query:
  75. return self.belongs_to (Query)
  76. @property
  77. def answer (
  78. self,
  79. ) -> Answer:
  80. return self.belongs_to (Answer)
  81. class User (Model):
  82. id: int
  83. platform: int
  84. code: str
  85. name: str
  86. icon: bytes
  87. __timestamps__ = False