hotword.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from datetime import datetime
  2. from app.models.db import Base
  3. from sqlalchemy import Column, Integer, String, DateTime, text
  4. from pydantic import BaseModel
  5. from app.errors.base import ParamsError
  6. class ASRHotword(Base):
  7. __tablename__ = "asr_hotword"
  8. id = Column("id", Integer, primary_key=True, autoincrement=True)
  9. hotword = Column("hotword", String(255), nullable=False, default="")
  10. weight = Column("weight", Integer, nullable=False, default=0)
  11. created_at = Column(
  12. "created_at",
  13. DateTime(timezone=True),
  14. nullable=False,
  15. default=datetime.now,
  16. server_default=text("CURRENT_TIMESTAMP"),
  17. )
  18. updated_at = Column(
  19. "updated_at",
  20. DateTime(timezone=True),
  21. nullable=False,
  22. default=datetime.now,
  23. server_default=text("CURRENT_TIMESTAMP"),
  24. onupdate=datetime.now,
  25. server_onupdate=text("CURRENT_TIMESTAMP"),
  26. )
  27. def to_dict(self):
  28. return {
  29. 'id': self.id,
  30. 'hotword': self.hotword,
  31. 'weight': self.weight,
  32. 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
  33. 'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'),
  34. }
  35. class ReplaceHotword(Base):
  36. __tablename__ = "replace_hotword"
  37. id = Column("id", Integer, primary_key=True, autoincrement=True)
  38. origin_word = Column("origin_word", String(255), nullable=False, default="")
  39. hotword = Column("hotword", String(255), nullable=False, default="")
  40. created_at = Column(
  41. "created_at",
  42. DateTime(timezone=True),
  43. nullable=False,
  44. default=datetime.now,
  45. server_default=text("CURRENT_TIMESTAMP"),
  46. )
  47. updated_at = Column(
  48. "updated_at",
  49. DateTime(timezone=True),
  50. nullable=False,
  51. default=datetime.now,
  52. server_default=text("CURRENT_TIMESTAMP"),
  53. onupdate=datetime.now,
  54. server_onupdate=text("CURRENT_TIMESTAMP"),
  55. )
  56. def to_dict(self):
  57. return {
  58. 'id': self.id,
  59. 'origin_word': self.origin_word,
  60. 'hotword': self.hotword,
  61. 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
  62. 'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'),
  63. }
  64. class ASRHotwordModel(BaseModel):
  65. id : int = 0
  66. hotword: str = ""
  67. weight: int = 0
  68. hotword_list: list = []
  69. def get_create(self):
  70. if self.hotword:
  71. self.hotword = self.hotword.replace(",", ",")
  72. self.hotword_list = self.hotword.split(",")
  73. return self
  74. else:
  75. raise ParamsError(message="Hotword and weight can't be empty")
  76. def get_update(self):
  77. if self.id and (self.hotword or self.weight):
  78. return self
  79. else:
  80. raise ParamsError(message="ID and either hotword or weight can't be empty")
  81. def get_delete(self):
  82. if self.id:
  83. return self
  84. else:
  85. raise ParamsError(message="ID can't be empty")
  86. class ReplaceHotwordModel(BaseModel):
  87. id : int = 0
  88. origin_word: str = ""
  89. hotword: str = ""
  90. meeting_id: str = ""
  91. replace_list: list = []
  92. def get_create(self):
  93. if self.replace_list:
  94. return self
  95. else:
  96. raise ParamsError(message="Origin word and hotword can't be empty")
  97. def get_update(self):
  98. if self.id and (self.origin_word or self.hotword):
  99. return self
  100. else:
  101. raise ParamsError(message="ID and either origin word or hotword can't be empty")
  102. def get_delete(self):
  103. if self.id:
  104. return self
  105. else:
  106. raise ParamsError(message="ID can't be empty")