예제 #1
0
파일: models.py 프로젝트: imfht/flaskapp1
class DeviceEventsMonth(BaseAggr):
    __tablename__ = 'device_events_month'
    countTime = db.Column(db.DateTime, primary_key=True)
    tenantID = db.Column(db.String, primary_key=True)
    deviceID = db.Column(db.String(100), primary_key=True)
    streamID = db.Column(db.String(100), primary_key=True)
    dataPointID = db.Column(db.String(200), primary_key=True)
예제 #2
0
class DictCode(BaseModel):
    __tablename__ = 'dict_code'
    code = db.Column(db.String(50))  # code的字段名
    codeValue = db.Column(db.SmallInteger)  # code的值
    codeStringValue = db.Column(db.String(50))  # code的字符串值
    enLabel = db.Column(db.String(50))  # en label
    zhLabel = db.Column(db.String(50))  # zh label
예제 #3
0
class Group(BaseModel):
    __tablename__ = 'groups'
    groupID = db.Column(db.String(6), default=random_group_uid, unique=True)
    groupName = db.Column(db.String(50))
    description = db.Column(db.String(300))
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
    devices = db.relationship('Device', secondary=GroupDevice,
                              lazy='dynamic')  # group devices
예제 #4
0
class Permission(BaseModel):
    __tablename__ = 'permissions'
    roleIntID = db.Column(
        db.Integer,
        db.ForeignKey('roles.id', onupdate="CASCADE", ondelete="CASCADE"))
    resourceIntID = db.Column(
        db.Integer,
        db.ForeignKey('resources.id', onupdate="CASCADE", ondelete="CASCADE"))
예제 #5
0
class LoginLog(BaseModel):
    __tablename__ = 'login_logs'
    IP = db.Column(db.String(50))  # IP
    isLogged = db.Column(db.SmallInteger)  # 登录结果 失败0,成功1
    loginTime = db.Column(db.DateTime)  # 登录时间
    userIntID = db.Column(
        db.Integer,
        db.ForeignKey('users.id', onupdate="CASCADE", ondelete="CASCADE"))
예제 #6
0
class AppApiLogMonth(BaseModel):
    __tablename__ = 'app_api_logs_month'
    countTime = db.Column(db.DateTime)  # 统计时间
    apiCount = db.Column(db.Integer)  # 应用api调用月统计数量
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
예제 #7
0
class AppApiLogDay(BaseModel):
    __tablename__ = 'app_api_logs_day'
    countTime = db.Column(db.DateTime)
    apiCount = db.Column(db.Integer)
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
예제 #8
0
파일: models.py 프로젝트: imfht/flaskapp1
class Message(BaseModel):
    __tablename__ = 'messages'
    msgTitle = db.Column(db.String(100))
    msgContent = db.Column(db.String(300))
    messageType = db.Column(db.Integer)
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"),
                         nullable=True)
예제 #9
0
class AppApiLog(BaseModel):
    __tablename__ = 'app_api_logs'
    createAt = db.Column(db.DateTime, server_default=func.now())
    url = db.Column(db.String(200))
    method = db.Column(db.String(100))
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
예제 #10
0
class Message(BaseModel):
    __tablename__ = 'messages'
    msgTitle = db.Column(db.String(100))  # 消息标题
    msgContent = db.Column(db.String(300))  # 消息内容
    messageType = db.Column(
        db.Integer)  # 消息类型,1:财务消息,2:产品消息,3:安全消息,4:其它消息,5:公告
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"),
                         nullable=True)
예제 #11
0
class Role(BaseModel):
    __tablename__ = 'roles'
    roleName = db.Column(db.String(50))  # 角色名
    description = db.Column(db.String(300))  # 描述
    roleType = db.Column(db.SmallInteger)  # 角色类型,1:用户角色 2:应用角色
    isShare = db.Column(db.SmallInteger, default=0)  # 角色是否公用1公用, 0私有
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"),
                         nullable=True)
예제 #12
0
파일: models.py 프로젝트: imfht/flaskapp1
class Role(BaseModel):
    __tablename__ = 'roles'
    roleName = db.Column(db.String(50))
    description = db.Column(db.String(300))
    roleType = db.Column(db.SmallInteger)  # 1:user role 2:app role
    isShare = db.Column(db.SmallInteger, default=0)  # 0: private, 1: public
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"),
                         nullable=True)
예제 #13
0
class EmqxBillMonth(BaseModel):
    __tablename__ = 'emqx_bills_month'
    msgType = db.Column(db.Integer)  # 消息类型
    msgCount = db.Column(db.Integer)  # 月消息数量
    msgSize = db.Column(db.Integer)  # 月消息流量
    countTime = db.Column(db.DateTime)  # 统计时间
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
예제 #14
0
class EmqxBillHour(ModelMixin, db.Model):
    __tablename__ = 'emqx_bills_hour'
    __table_args__ = (db.Index('emqx_bills_hour_countTime_idx', "countTime"), )
    msgType = db.Column(db.Integer, primary_key=True)  # 消息类型
    msgCount = db.Column(db.Integer)  # 小时消息数量
    msgSize = db.Column(db.Integer)  # 小时消息流量
    countTime = db.Column(db.DateTime, primary_key=True)  # 统计时间
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"),
                         primary_key=True)
예제 #15
0
파일: models.py 프로젝트: imfht/flaskapp1
class Resource(BaseModel):
    __tablename__ = 'resources'
    code = db.Column(db.String(50), unique=True)
    url = db.Column(db.String(50))
    method = db.Column(db.String(10))  # get post put delete
    order = db.Column(db.Integer)
    level = db.Column(db.Integer)
    icon = db.Column(db.String(50))
    enable = db.Column(db.SmallInteger, server_default='1')
    parentCode = db.Column(db.String(50), db.ForeignKey('resources.code'))
    tabs = db.Column(db.SmallInteger)
    children = db.relationship('Resource', cascade='all, delete-orphan')
    parent = db.relationship('Resource', remote_side=[code])
    service = db.Column(db.String(50))
예제 #16
0
class Invitation(BaseModel):
    __tablename__ = 'invitations'
    inviteEmail = db.Column(db.String(50))  # 被邀请人邮箱
    roleIntID = db.Column(db.Integer)  # 角色id
    tenantID = db.Column(db.String(9))  # 租户id
    inviteStatus = db.Column(db.Integer, default=0)  # 邀请状态,0:未加入,1:已加入
    userIntID = db.Column(
        db.Integer,
        db.ForeignKey('users.id', onupdate="CASCADE", ondelete="CASCADE"))

    def generate_auth_token(self):
        expires_in = current_app.config['TOKEN_LIFETIME_INVITATION']
        s = JWT(current_app.config['SECRET_KEY'], expires_in=expires_in)
        return s.dumps({'invitation_id': self.id})
예제 #17
0
class Resource(BaseModel):
    __tablename__ = 'resources'
    code = db.Column(db.String(50), unique=True)  # 资源唯一标识, 前端根据code的内容来翻译
    url = db.Column(db.String(50))  # 资源url
    method = db.Column(db.String(10))  # 请求方法 get post put delete
    order = db.Column(db.Integer)  # 显示顺序,只对菜单类型有效
    level = db.Column(db.Integer)  # 资源级别:一级、二级、三级
    icon = db.Column(db.String(50))  # 一级菜单图标
    enable = db.Column(db.SmallInteger, server_default='1')  # 是否启用该资源
    parentCode = db.Column(db.String(50),
                           db.ForeignKey('resources.code'))  # 上级资源Code
    tabs = db.Column(db.SmallInteger)  # 是否包含tabs
    children = db.relationship('Resource', cascade='all, delete-orphan')  # 子资源
    parent = db.relationship('Resource', remote_side=[code])
    service = db.Column(db.String(50))  # resource 所属服务
예제 #18
0
class HistoryAlert(BaseModel):
    __tablename__ = 'history_alerts'
    createAt = db.Column(db.DateTime, server_default=func.now())
    alertName = db.Column(db.String(50))
    alertContent = db.Column(db.String(300))
    alertTimes = db.Column(db.Integer)
    alertDetail = db.Column(JSON)
    alertSeverity = db.Column(db.SmallInteger)
    startTime = db.Column(db.DateTime)
    endTime = db.Column(db.DateTime)
    deviceID = db.Column(db.String(100))
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
예제 #19
0
class Invitation(BaseModel):
    __tablename__ = 'invitations'
    inviteEmail = db.Column(db.String(50))
    roleIntID = db.Column(db.Integer)
    tenantID = db.Column(db.String(9))
    inviteStatus = db.Column(db.Integer, default=0)  # 0: not joined 1:joined
    userIntID = db.Column(
        db.Integer,
        db.ForeignKey('users.id', onupdate="CASCADE", ondelete="CASCADE"))

    def generate_auth_token(self):
        expires_in = current_app.config['TOKEN_LIFETIME_INVITATION']
        s = JWT(current_app.config['SECRET_KEY'], expires_in=expires_in)
        token = s.dumps({'invitation_id': self.id})
        if isinstance(token, bytes):
            token = token.decode('utf-8')
        return token
예제 #20
0
파일: models.py 프로젝트: imfht/flaskapp1
class DeviceEventLatest(ModelMixin, db.Model):
    """ Latest device events """
    __tablename__ = 'device_events_latest'
    msgTime = db.Column(db.DateTime)
    tenantID = db.Column(db.String(9), primary_key=True)
    deviceID = db.Column(db.String(100), primary_key=True)
    dataType = db.Column(db.SmallInteger)  # 1:event  2:response
    streamID = db.Column(db.String(100))
    topic = db.Column(db.String(500))
    data = db.Column(JSONB)
    responseResult = db.Column(JSONB)
예제 #21
0
파일: models.py 프로젝트: imfht/flaskapp1
class ActorTask(BaseModel):
    __tablename__ = 'actor_tasks'
    taskID = db.Column(db.String(50), unique=True)
    taskName = db.Column(db.String(512))
    taskStatus = db.Column(db.SmallInteger)  # 1:Waiting 2:Executing 3:Success 4:Failed 5:Retry
    taskCount = db.Column(db.SmallInteger, server_default='1')
    taskInfo = db.Column(JSONB)
    taskProgress = db.Column(db.Integer, server_default='0')
    taskResult = db.Column(JSONB)
예제 #22
0
class Lwm2mObject(BaseModel):
    __tablename__ = 'lwm2m_objects'
    objectName = db.Column(db.String)  # 对象名
    objectID = db.Column(db.Integer, unique=True)  # 对象int型ID
    description = db.Column(db.String)  # 对象描述
    objectURN = db.Column(db.String)  # 对象URN
    objectVersion = db.Column(db.String)  # 对象版本
    multipleInstance = db.Column(db.String)  # Multiple表示有多个实例,Single表示单个实例
    mandatory = db.Column(db.String)  # 强制性,Optional表示可选,Mandatory表示强制
예제 #23
0
class ActorTask(BaseModel):
    __tablename__ = 'actor_tasks'
    taskID = db.Column(db.String(50), unique=True)  # 任务ID
    taskName = db.Column(db.String(512))  # 任务名称
    taskStatus = db.Column(db.SmallInteger)  # 任务状态 1 等待 2 执行 3 成功 4 失败 5 重试
    taskCount = db.Column(db.SmallInteger, server_default='1')  # 任务执行次数
    taskInfo = db.Column(JSONB)  # 任务信息
    taskProgress = db.Column(db.Integer, server_default='0')  # 任务执行进度
    taskResult = db.Column(JSONB)  # 任务执行结果
예제 #24
0
class Gateway(Device):
    __tablename__ = 'gateways'
    id = db.Column(db.Integer,
                   db.ForeignKey('devices.id',
                                 onupdate="CASCADE",
                                 ondelete="CASCADE"),
                   primary_key=True)
    devices = db.relationship('EndDevice',
                              foreign_keys="EndDevice.gateway",
                              lazy='dynamic')  # 设备
    __mapper_args__ = {'polymorphic_identity': 2}
예제 #25
0
파일: models.py 프로젝트: imfht/flaskapp1
class DeviceEvent(ModelMixin, db.Model):
    """ device upload event """
    __tablename__ = 'device_events'
    __table_args__ = (db.Index('device_events_msgTime_idx', "msgTime"), )
    msgTime = db.Column(db.DateTime, primary_key=True)
    tenantID = db.Column(db.String(9), primary_key=True)
    deviceID = db.Column(db.String(100), primary_key=True)
    dataType = db.Column(db.SmallInteger,
                         primary_key=True)  # 1:event  2:response
    topic = db.Column(db.String(500))
    streamID = db.Column(db.String(100))
    data = db.Column(JSONB)
    responseResult = db.Column(JSONB)
예제 #26
0
class Application(BaseModel):
    __tablename__ = 'applications'
    appID = db.Column(db.String(6), default=random_app_uid, unique=True)
    appName = db.Column(db.String(50))
    appToken = db.Column(db.String(100), default=generate_uuid)  # 32-bit
    expiredAt = db.Column(db.DateTime)  # app token expired time
    description = db.Column(db.String(300))
    appStatus = db.Column(db.Integer)  # 0:blocked,1:run
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
    roleIntID = db.Column(db.Integer, db.ForeignKey('roles.id'))  # app role id
    groups = db.relationship('Group',
                             secondary=ApplicationGroup,
                             lazy='dynamic')
예제 #27
0
class TimerPublish(BaseModel):
    __tablename__ = 'timer_publish'
    taskName = db.Column(db.String)  # 任务名
    taskStatus = db.Column(db.SmallInteger,
                           server_default='2')  # 任务状态2 执行 3 成功
    timerType = db.Column(db.SmallInteger)  # 定时类型1 固定 , 2 间隔
    topic = db.Column(db.String(1000))  # 主题(mqtt)
    payload = db.Column(JSONB)  # 下发消息内容
    intervalTime = db.Column(JSONB)  # 间隔时间{'weekday': 'hour': 'minute'}
    crontabTime = db.Column(db.DateTime)  # 指定下发时间
    deviceIntID = db.Column(db.Integer,
                            db.ForeignKey('devices.id',
                                          onupdate="CASCADE",
                                          ondelete="CASCADE"))  # 设备id
    userIntID = db.Column(db.Integer,
                          db.ForeignKey('users.id',
                                        onupdate="CASCADE",
                                        ondelete="CASCADE"))  # 用户
예제 #28
0
class Rule(BaseModel):
    __tablename__ = 'rules'
    ruleName = db.Column(db.String(50))
    remark = db.Column(db.String(50))
    enable = db.Column(db.SmallInteger, default=1)
    sql = db.Column(db.String)
    fromTopics = db.Column(JSONB)
    scopeData = db.Column(JSONB)
    ruleType = db.Column(db.SmallInteger)
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))

    actions = db.relationship('Action',
                              secondary=RuleAction,
                              backref=db.backref('rules', lazy='dynamic'))
예제 #29
0
class CurrentAlert(BaseModel):
    __tablename__ = 'current_alerts'
    createAt = db.Column(db.DateTime, server_default=func.now())
    alertName = db.Column(db.String(50))
    alertContent = db.Column(db.String(300))
    alertTimes = db.Column(db.Integer)
    alertDetail = db.Column(JSON)
    alertSeverity = db.Column(db.SmallInteger)
    startTime = db.Column(db.DateTime)
    deviceID = db.Column(db.String(100))
    ruleIntID = db.Column(
        db.Integer,
        db.ForeignKey('rules.id', onupdate="CASCADE", ondelete="CASCADE"))
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
    __table_args__ = (db.Index('alerts_rule_key',
                               'tenantID',
                               'deviceID',
                               'ruleIntID',
                               unique=True), )
예제 #30
0
파일: models.py 프로젝트: imfht/flaskapp1
class Product(BaseModel):
    """
    cloudProtocol: 1:MQTT,2:CoAp,3:LwM2M,4:LoRaWAN,5:HTTP,6:WebSocket
    """
    __tablename__ = 'products'
    productID = db.Column(db.String(6), default=random_product_uid, unique=True)  # 产品标识
    productName = db.Column(db.String(50))  # 产品名称
    description = db.Column(db.String(300))  # 产品描述
    cloudProtocol = db.Column(db.SmallInteger, server_default='1')  # 云端协议, 网关类型产品显示为上联协议
    gatewayProtocol = db.Column(db.Integer)  # 网关协议
    productType = db.Column(db.SmallInteger, server_default='1')  # 产品类型1:设备,2:网关
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
    devices = db.relationship('Device', backref='products', lazy='dynamic')