123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- from sqlalchemy import func
- from .engine import db
- from .types import StringUUID
- class IntentionType(db.Model):
- __tablename__ = 'intention_types'
- __table_args__ = (
- db.PrimaryKeyConstraint('id', name='intention_type_id_pkey'),
- )
- id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
- name = db.Column(db.String(255), nullable=False)
- created_by = db.Column(StringUUID, nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
- updated_by = db.Column(StringUUID, nullable=True)
- updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
- @property
- def intention_count(self):
- return (
- db.session.query(func.count(Intention.id))
- .filter(Intention.type_id==self.id)
- .scalar()
- )
- class Intention(db.Model):
- __tablename__ = "intentions"
- __table_args__ = (
- db.PrimaryKeyConstraint("id", name="intention_pkey"),
- db.Index("intention_type_idx", "type_id"),
- )
- id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
- type_id = db.Column(StringUUID, nullable=False)
- name = db.Column(db.String(255), nullable=False)
- created_by = db.Column(StringUUID, nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
- updated_by = db.Column(StringUUID, nullable=True)
- updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
- @property
- def type_name(self):
- return (
- db.session.query(IntentionType.name)
- .filter(IntentionType.id==self.type_id)
- .first().name
- )
- @property
- def type(self):
- return (
- db.session.query(IntentionType)
- .filter(IntentionType.id==self.type_id)
- .first()
- )
- @property
- def corpus(self):
- return (
- db.session.query(IntentionCorpus)
- .filter(IntentionCorpus.intention_id==self.id)
- .all()
- )
- @property
- def keywords(self):
- return (
- db.session.query(IntentionKeyword)
- .filter(IntentionKeyword.intention_id==self.id)
- .all()
- )
- @property
- def corpus_count(self):
- return (
- db.session.query(func.count(IntentionCorpus.id))
- .filter(IntentionCorpus.intention_id == self.id)
- .scalar()
- )
- @property
- def keywords_count(self):
- return (
- db.session.query(func.count(IntentionKeyword.id))
- .filter(IntentionKeyword.intention_id == self.id)
- .scalar()
- )
- class IntentionKeyword(db.Model):
- __tablename__ = "intention_keywords"
- __table_args__ = (
- db.PrimaryKeyConstraint('id', name='intention_keyword_pkey'),
- )
- id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
- name = db.Column(db.String(255), nullable=False)
- intention_id = db.Column(StringUUID, nullable=False)
- created_by = db.Column(StringUUID, nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
- updated_by = db.Column(StringUUID, nullable=True)
- updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
- @property
- def intention(self):
- return (
- db.session.query(Intention).filter(Intention.id==self.intention_id).first()
- )
- class IntentionCorpus(db.Model):
- __tablename__ = "intention_corpus"
- __table_args__ = (
- db.PrimaryKeyConstraint('id', name='intention_corpus_pkey'),
- db.Index("intention_corpus_idx", "intention_id"),
- )
- id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
- question = db.Column(db.String(255), nullable=False)
- question_config = db.Column(db.JSON, nullable=False)
- intention_id = db.Column(StringUUID, nullable=False)
- created_by = db.Column(StringUUID, nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
- updated_by = db.Column(StringUUID, nullable=True)
- updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
- @property
- def intention(self):
- return (
- db.session.query(Intention)
- .filter(Intention.id==self.intention_id)
- .first()
- )
- @property
- def similarity_questions(self):
- return (
- db.session.query(IntentionCorpusSimilarityQuestion)
- .filter(IntentionCorpusSimilarityQuestion.corpus_id==self.id)
- .all()
- )
- class IntentionCorpusSimilarityQuestion(db.Model):
- __tablename__ = "intention_corpus_similarity_questions"
- __table_args__ = (
- db.PrimaryKeyConstraint('id', name='intention_corpus_similarity_question_pkey'),
- db.Index("intention_corpus_similarity_question_idx", "corpus_id"),
- )
- id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
- question = db.Column(db.String(255), nullable=False)
- question_config = db.Column(db.JSON, nullable=False)
- corpus_id = db.Column(StringUUID, nullable=False)
- created_by = db.Column(StringUUID, nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
- updated_by = db.Column(StringUUID, nullable=True)
- updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
- @property
- def corpus(self):
- return (
- db.session.query(IntentionCorpus)
- .filter(IntentionCorpus.id==self.corpus_id)
- .first()
- )
|