| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- import enum
- from datetime import datetime
- from app.models.db import Base
- from sqlalchemy import Column, Integer, String, DateTime, Enum, text, Text
- from pydantic import BaseModel
- from app.errors.base import ParamsError
- class AIMeetingSpeecher(enum.Enum):
- UNKNOW = 0
- USER = 1
- AI = 2
- class AIMeetingConversation(Base):
- __tablename__ = "ai_meeting_conversation"
- id = Column("id", String(36), primary_key=True)
- meeting_id = Column("meeting_id", String(36), nullable=False, default=0)
- title = Column("title", String(255), nullable=False, default="")
- minutes_id = Column("minutes_id", Integer, nullable=False, default=0)
- created_at = Column(
- "created_at",
- DateTime(timezone=True),
- nullable=False,
- default=datetime.now,
- server_default=text("CURRENT_TIMESTAMP"),
- )
- updated_at = Column(
- "updated_at",
- DateTime(timezone=True),
- nullable=False,
- default=datetime.now,
- server_default=text("CURRENT_TIMESTAMP"),
- onupdate=datetime.now,
- server_onupdate=text("CURRENT_TIMESTAMP"),
- )
- class AIMeetingMinutesRecord(Base):
- __tablename__ = "ai_meeting_minutes_record"
- id = Column("id", String(36), primary_key=True)
- meeting_id = Column("meeting_id", String(36), nullable=False, default="")
- conversation_id = Column("conversation_id", String(36), nullable=False, default="")
- content = Column("content", Text, nullable=False, default="")
- speecher = Column("speecher", Enum(AIMeetingSpeecher), nullable=False, default=AIMeetingSpeecher.UNKNOW)
- download_url = Column("download_url", String(255))
- created_at = Column(
- "created_at",
- DateTime(timezone=True),
- nullable=False,
- default=datetime.now,
- server_default=text("CURRENT_TIMESTAMP"),
- index=True
- )
- updated_at = Column(
- "updated_at",
- DateTime(timezone=True),
- nullable=False,
- default=datetime.now,
- server_default=text("CURRENT_TIMESTAMP"),
- onupdate=datetime.now,
- server_onupdate=text("CURRENT_TIMESTAMP"),
- )
- def to_dict(self):
- return {
- 'id': self.id,
- 'meeting_id': self.meeting_id,
- 'speecher': self.speecher,
- 'content': self.content,
- 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
- 'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'),
- }
- class AIMeetingConversationModel(BaseModel):
- id: int = 0
- meeting_id: str = ""
- title: str = ""
- minutes_id: int = 0
- def get_create(self):
- if self.meeting_id and self.minutes_id:
- return self
- else:
- raise ParamsError(message="Meeting ID, title, and minutes ID can't be empty")
-
- def get_update(self):
- if self.id and (self.meeting_id or self.title or self.minutes_id):
- return self
- else:
- raise ParamsError(message="ID and at least one of meeting ID, title, or minutes ID can't be empty")
-
- def get_delete(self):
- if self.id:
- return self
- else:
- raise ParamsError(message="ID can't be empty")
-
- class AIMeetingMinutesRecordModel(BaseModel):
- id: str = ""
- meeting_id: str = ""
- # conversation_id: s = 0
- content: str = ""
- speecher: AIMeetingSpeecher = 0
- view_content: list = []
- message: str = ""
- def get_create(self):
- if self.meeting_id and self.conversation_id and self.content and self.speecher:
- return self
- else:
- raise ParamsError(message="Meeting ID, conversation ID, content, and speecher can't be empty")
-
- def get_update(self):
- if self.id and self.message:
- return self
- else:
- raise ParamsError(message="ID and at least one of content or speecher can't be empty")
-
- def get_delete(self):
- if self.id:
- return self
- else:
- raise ParamsError(message="ID can't be empty")
- def get_conversation(self):
- if self.meeting_id and self.content and self.message:
- return self
- else:
- raise ParamsError(message="message,content and meeting_id can't be empty")
- def get_regenerate(self):
- if self.content and self.message and self.id:
- return self
- else:
- raise ParamsError(message="message,content and id can't be empty")
-
|