Ejemplo n.º 1
0
class Picture(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    owner = peewee.CharField(max_length=36)

    class Meta:
        table_name = 'pictures'
Ejemplo n.º 2
0
class Games(BaseModel):
    id = pw.BigAutoField()
    timestamp = pw.DateTimeField(index=True)
    channel = pw.ForeignKeyField(Channels,
                                 backref='games',
                                 on_delete='CASCADE',
                                 index=True)
Ejemplo n.º 3
0
class LeaveMessagePluginData(BaseModel):
    """
    留言数据表
    """
    id = pw.BigAutoField()  # 留言id
    ref_id = pw.BigIntegerField(default=-1)  # 关联留言id(一个对话下来的留言id, 取第一个留言的id)
    user_id = pw.BigIntegerField(index=True)  # 留言所属客户id
    user_name = pw.CharField(max_length=50)  # 留言用户名
    status = pw.CharField(max_length=20,
                          choices=[('untreated', '未处理'), ('treating', '处理中'),
                                   ('treated', '已处理'), ('canceled', '已撤销')],
                          default='untreated',
                          index=True)  # 处理状态
    msg = pw.CharField(max_length=2000)  # 客户留言信息
    pic_urls = pw.CharField(max_length=1000,
                            default='')  # 客户上传的图片文件url清单, 逗号分隔
    ref_msg = pw.CharField(max_length=2000, default='')  # 留言引用对话消息内容
    resp_time = pw.DateTimeField(null=True)  # 回复时间
    resp_user_id = pw.BigIntegerField(index=True, default=0)  # 回复用户id
    resp_user_name = pw.CharField(default='')  # 回复用户名
    resp_msg = pw.CharField(max_length=2000, default='')  # 回复信息
    resp_pic_urls = pw.CharField(max_length=1000,
                                 default='')  # 回复的图片文件url清单, 逗号分隔
    create_time = pw.DateTimeField(default=datetime.datetime.now)  # 创建时间

    class Meta:
        # 定义数据库表名
        table_name = 'leave_message_plugin_data'
Ejemplo n.º 4
0
class Cat(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    name = peewee.CharField(max_length=256)
    age = peewee.SmallIntegerField()
    sex = peewee.BooleanField()
    breed = peewee.BigIntegerField()
    health_status = peewee.BigIntegerField()
    castrated = peewee.BooleanField()
    vaccinated = peewee.BooleanField()
    dewormed = peewee.BooleanField()
    colour = peewee.BigIntegerField()
    description = peewee.TextField()
    health_log = peewee.TextField()
    adoptive = peewee.BooleanField()
    adopted_by = peewee.CharField(index=True, max_length=36, null=True)
    pictures = peewee.TextField()
    created_at = peewee.DateTimeField(default=datetime.datetime.now)
    updated_at = peewee.DateTimeField()

    def save(self, *args, **kwargs):
        self.updated_at = datetime.datetime.now()
        return super(Cat, self).save(*args, **kwargs)

    class Meta:
        table_name = 'cats'
Ejemplo n.º 5
0
class Favourite(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    user = peewee.CharField(index=True, max_length=36)
    cat = peewee.CharField(max_length=36)
    created_at = peewee.DateTimeField(default=datetime.datetime.now)

    class Meta:
        table_name = 'favourites'
Ejemplo n.º 6
0
class Donation(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    donator = peewee.CharField(index=True, max_length=36, null=True)
    amount = peewee.DoubleField()
    created_at = peewee.DateTimeField(default=datetime.datetime.now)

    class Meta:
        table_name = 'donations'
Ejemplo n.º 7
0
class Domain(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    domain = peewee.CharField(max_length=255)
    created_at = peewee.DateTimeField()
    updated_at = peewee.DateTimeField()

    class Meta:
        table_name = 'domains'
Ejemplo n.º 8
0
class Comment(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    author = peewee.CharField(index=True, max_length=36, null=True)
    cat = peewee.CharField(index=True, max_length=36, null=True)
    text = peewee.TextField()
    created_at = peewee.DateTimeField(default=datetime.datetime.now)

    class Meta:
        table_name = 'comments'
Ejemplo n.º 9
0
class RestfulApiUser(BaseModel):
    """
    RestfulApi的使用用户表
    """
    id = pw.BigAutoField(primary_key=True)  # 自增字段
    user_name = pw.CharField(max_length=32, index=True, unique=True)  # 登陆用户名
    password_hash = pw.CharField(max_length=128)  # 密码哈希值

    class Meta:
        # 定义数据库表名
        table_name = 'restful_api_user'
Ejemplo n.º 10
0
class NoMatchAnswers(BaseModel):
    """
    未匹配上问题记录
    """
    id = pw.BigAutoField()  # 自增字段
    session_info = pw.CharField(max_length=4000, default='')
    question = pw.CharField(max_length=4000)  # 未匹配到的问题
    create_time = pw.DateTimeField(default=datetime.datetime.now)  # 创建时间

    class Meta:
        # 定义数据库表名
        table_name = 'no_match_answers'
Ejemplo n.º 11
0
class Mail(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    canary = peewee.CharField(max_length=36)
    received_on = peewee.DateTimeField()
    mail_from = peewee.CharField(max_length=255, column_name='from')
    subject = peewee.CharField(max_length=255)
    body = peewee.TextField()
    created_at = peewee.DateTimeField(default=datetime.datetime.now)
    updated_at = peewee.DateTimeField(default=datetime.datetime.now)

    class Meta:
        table_name = 'mail'
Ejemplo n.º 12
0
class VirtualAlias(BaseModel):
    id = peewee.BigAutoField(unique=True,
                             index=True,
                             primary_key=True,
                             null=False)
    domain_id = peewee.ForeignKeyField(VirtualDomain,
                                       backref='aliases',
                                       null=False,
                                       on_delete='CASCADE')
    source = peewee.CharField(max_length=255, null=False)
    destination = peewee.CharField(max_length=255, null=False)

    class Meta:
        table_name = 'virtual_aliases'
Ejemplo n.º 13
0
class VirtualUser(BaseModel):
    id = peewee.BigAutoField(unique=True,
                             index=True,
                             primary_key=True,
                             null=False)
    domain_id = peewee.ForeignKeyField(VirtualDomain,
                                       backref='users',
                                       null=False,
                                       on_delete='CASCADE')
    password = peewee.CharField(max_length=255, null=False)
    email = peewee.CharField(unique=True, max_length=255, null=False)

    class Meta:
        table_name = 'virtual_users'
Ejemplo n.º 14
0
class ExtQuestion(BaseModel):
    """
    扩展问题清单(标准问题的其他问法)
    """
    id = pw.BigAutoField()  # 自增字段
    milvus_id = pw.BigIntegerField(index=True)  # milvus向量ID
    std_question_id = pw.BigIntegerField()  # 对应的标准问题ID
    question = pw.CharField(max_length=4000)  # 问题描述字段

    class Meta:
        # 定义数据库表名
        table_name = 'ext_questions'
        indexes = (
            # 多列唯一索引
            (('milvus_id', 'std_question_id'), True),
        )
Ejemplo n.º 15
0
class User(peewee.Model):

    user_id = peewee.BigAutoField(primary_key=True)
    first_name = peewee.CharField(max_length=50, null=True)
    last_name = peewee.CharField(max_length=50, null=True)
    patronymic = peewee.CharField(max_length=50, null=True)
    email = peewee.CharField(max_length=50, unique=True)
    active = peewee.BooleanField(default=False)
    avatar = peewee.TextField(null=True)
    hashed_password = peewee.CharField(max_length=255, null=True)

    class Meta:
        table_name = 'users'
        database = db

    def __repr__(self):
        return f'user_id: {self.user_id}, user_fullname: {self.first_name + " " + self.last_name}'
Ejemplo n.º 16
0
class Canary(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    domain = peewee.CharField(max_length=36)
    site = peewee.CharField(max_length=36)
    assignee = peewee.CharField(max_length=36)
    updated_by = peewee.CharField(max_length=36)
    testing = peewee.BooleanField()
    setup = peewee.BooleanField()
    email = peewee.CharField(max_length=255)
    password = peewee.CharField(max_length=255)
    data = peewee.TextField()
    created_at = peewee.DateTimeField()
    updated_at = peewee.DateTimeField()

    class Meta:
        table_name = 'canaries'
Ejemplo n.º 17
0
class SendMessageQueue(BaseModel):
    """
    待发送客户消息列表
    """
    id = pw.BigAutoField(primary_key=True)  # 消息id
    from_user_id = pw.BigIntegerField(index=True)  # 消息来源用户ID
    from_user_name = pw.CharField(default='系统')  # 消息来源用户名
    user_id = pw.BigIntegerField(index=True)  # 要推送到的用户ID
    msg_type = pw.CharField(
        choices=[('text', '文本数组'), ('json', 'json字符串'), ],
        default='text',
    )  # 消息类型
    msg = pw.CharField(max_length=4000)  # 消息内容
    create_time = pw.DateTimeField(default=datetime.datetime.now)  # 创建时间

    class Meta:
        # 定义数据库表名
        table_name = 'send_message_queue'
Ejemplo n.º 18
0
class Messages(BaseModel):
    id = pw.BigAutoField()
    timestamp = pw.DateTimeField(index=True)
    state = pw.IntegerField(index=True)
    content = pw.TextField()
    word = pw.ForeignKeyField(Words,
                              backref='messages',
                              on_delete='CASCADE',
                              index=True)
    game = pw.ForeignKeyField(Games,
                              backref='game',
                              on_delete='CASCADE',
                              index=True,
                              null=True)
    channel = pw.ForeignKeyField(Channels,
                                 backref='messages',
                                 on_delete='CASCADE',
                                 index=True)
    user = pw.ForeignKeyField(Users, backref='messages', index=True)
Ejemplo n.º 19
0
class FormPluginData(BaseModel):
    """
    通用表单数据存储(如果自定义表,也需跟该表结构一致)
    """
    id = pw.BigAutoField()  # 表单id
    form_type = pw.CharField(max_length=50, index=True)  # 表单类型标识
    user_id = pw.BigIntegerField(index=True)  # 表单所属客户id
    user_name = pw.CharField(max_length=50)  # 表单用户名
    status = pw.CharField(max_length=20,
                          choices=[('untreated', '未处理'), ('treating', '处理中'),
                                   ('treated', '已处理'), ('canceled', '已撤销')],
                          default='untreated',
                          index=True)  # 处理状态
    preview = pw.CharField(max_length=4000)  # 预览,json字符串格式,data的一部分内容,用于预览显示
    data = pw.BlobField()  # 表单详细数据, json字符串的格式转为二进制存储
    last_upd_time = pw.DateTimeField(default=datetime.datetime.now)  # 最后更新时间
    create_time = pw.DateTimeField(default=datetime.datetime.now)  # 创建时间

    class Meta:
        # 定义数据库表名
        table_name = 'form_plugin_data'
Ejemplo n.º 20
0
class StdQuestion(BaseModel):
    """
    标准问题清单
    """
    id = pw.BigAutoField()  # 自增字段
    tag = pw.CharField(default='', index=True)  # 查找问题的字符标识
    q_type = pw.CharField(
        choices=[('ask', '问答类'), ('context', '场景类')],
        default='ask',
    )  # 问题类型, ask-问答类(问题对应答案),context-场景类(问题对应上下文场景)
    milvus_id = pw.BigIntegerField(index=True)  # milvus向量ID
    collection = pw.CharField()  # 问题所属分类集
    partition = pw.CharField(default='')  # 问题所属场景
    question = pw.CharField(max_length=4000)  # 问题描述字段

    class Meta:
        # 定义数据库表名
        table_name = 'std_questions'
        indexes = (
            # 多列唯一索引
            (('milvus_id', 'collection', 'partition'), False),
        )
Ejemplo n.º 21
0
class User(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    uuid = peewee.CharField(unique=True, index=True, max_length=36)
    email = peewee.CharField(unique=True, index=True)
    password = peewee.CharField(max_length=1024)
    firstname = peewee.CharField(max_length=256)
    lastname = peewee.CharField(max_length=256)
    activated = peewee.BooleanField(default=False)
    admin = peewee.BooleanField(default=False)
    picture = peewee.CharField(max_length=36)
    created_at = peewee.DateTimeField(default=datetime.datetime.now)
    updated_at = peewee.DateTimeField()

    def getName(self):
        return self.firstname + ' ' + self.lastname

    def save(self, *args, **kwargs):
        self.updated_at = datetime.datetime.now()
        return super(User, self).save(*args, **kwargs)

    class Meta:
        table_name = 'users'
Ejemplo n.º 22
0
class Message(BaseModel):
    id = peewee.BigAutoField(unique=True)
    listener = peewee.ForeignKeyField(Listener, on_delete='CASCADE')
    data = peewee.TextField()
    timestamp = peewee.DateTimeField()
Ejemplo n.º 23
0
class Users(BaseModel):
    id = pw.BigAutoField()
    discord_user_id = pw.BigIntegerField(unique=True)
    name = pw.CharField(null=True)
Ejemplo n.º 24
0
class Colour(BaseModel):
    id = peewee.BigAutoField(unique=True, index=True, primary_key=True)
    name = peewee.CharField(unique=True, max_length=256)

    class Meta:
        table_name = 'colours'
Ejemplo n.º 25
0
class BannedWords(BaseModel):
    id = pw.BigAutoField()
    word = pw.CharField(unique=True)
Ejemplo n.º 26
0
class Test_Table(peewee.Model):
    id = peewee.BigAutoField(primary_key=True)
    name = peewee.CharField(10)
    status = TinyIntegerField(default=0)
Ejemplo n.º 27
0
class Channels(BaseModel):
    id = pw.BigAutoField()
    discord_id = pw.BigIntegerField()
    name = pw.CharField(null=True)
    current_game = pw.DeferredForeignKey('Games', null=True)
    game_running = pw.BooleanField(default=False)
Ejemplo n.º 28
0
class Listener(BaseModel):
    id = peewee.BigAutoField(unique=True)
    chat_id = peewee.CharField()
    key = peewee.CharField()
    description = peewee.CharField()
    enable = peewee.BooleanField(default=True)
Ejemplo n.º 29
0
class Message(MySQLBaseModel):
    SEND_PENDING = 0
    SEND_SUCCESS = 1
    SEND_FAIL = 2

    id = peewee.BigAutoField(primary_key=True)
    message = peewee.TextField()
    send_status = peewee.SmallIntegerField(default=SEND_PENDING)
    is_deleted = peewee.BooleanField(default=False)
    created_at = peewee.DateTimeField(default=datetime.datetime.now)
    updated_at = peewee.DateTimeField(default=datetime.datetime.now)

    class Meta:
        db_table = 'message'

    @classmethod
    def get_record(cls,
                   id=None,
                   order_by='id',
                   order_type='desc',
                   to_dict=True):
        if id is not None:
            data = cls.select().where(cls.id == id,
                                      cls.is_deleted == 0).first()
        else:
            order_field = getattr(cls, order_by)
            if order_type.lower() == 'asc':
                data = cls.select().where(
                    cls.is_deleted == 0).order_by(-order_field)
            else:
                data = cls.select().where(
                    cls.is_deleted == 0).order_by(+order_field)
        if to_dict:
            if isinstance(data, peewee.SelectQuery):
                data = [model2dict(i) for i in data]
            else:
                data = model2dict(data)
        return data

    @classmethod
    def add_record(cls, message, to_dict=True):
        data = cls.create(message=message)
        if to_dict:
            data = model2dict(data)
        return data

    @classmethod
    def delete_record(cls, id, real=False):
        if real:
            query = cls.delete().where(cls.id == id)
        else:
            query = cls.update(is_deleted=True).where(cls.id == id)
        count = query.execute()
        data = {'deleted_count': count}
        return data

    @classmethod
    def update_record(cls,
                      id,
                      send_status=None,
                      is_deleted=None,
                      to_dict=True):
        data = cls.select().where(cls.id == id, cls.is_deleted == 0).first()
        if not data:
            return
        if send_status is not None:
            data.send_status = send_status
        if is_deleted is not None:
            data.is_deleted = is_deleted
        data.save()
        if to_dict:
            data = model2dict(data)
        return data
Ejemplo n.º 30
0
    name = peewee.CharField(max_length=256)
    created_at = peewee.DateTimeField(default=datetime.now)


class ModelB(peewee.Model):
    model_a = peewee.ForeignKeyField(ModelA)
    title = peewee.CharField(max_length=5)
    speed = peewee.IntegerField()


@pytest.mark.parametrize('field,value,expected,expected_type', [
    (peewee.IntegerField(), 5, 5, int),
    (peewee.BigIntegerField(), 5, 5, int),
    (peewee.SmallIntegerField(), 5, 5, int),
    (peewee.AutoField(), 5, 5, int),
    (peewee.BigAutoField(), 5, 5, int),
    (peewee.IdentityField(), 5, 5, int),
    (peewee.FloatField(), 5.5, 5.5, float),
    (peewee.DoubleField(), 5.5, 5.5, float),
    (peewee.DecimalField(), Decimal('13.37'), '13.37', str),
    (peewee.CharField(), 'foo', 'foo', str),
    (peewee.FixedCharField(), 'foo', 'foo', str),
    (peewee.TextField(), 'foo', 'foo', str),
    (peewee.BooleanField(), True, True, bool),
    (peewee.DateTimeField(), datetime(2018, 11,
                                      1), '2018-11-01T00:00:00', str),
    (postgres_ext.HStoreField(), {
        'foo': 'bar'
    }, {
        'foo': 'bar'
    }, dict),