Example #1
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
Example #2
0
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)
Example #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
Example #4
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)  # 任务执行结果
Example #5
0
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)
Example #6
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"))
Example #7
0
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)
Example #8
0
class DeviceEventsHour(BaseAggr):
    __tablename__ = 'device_events_hour'
    __table_args__ = (db.Index('device_events_hour_countTime_idx',
                               "countTime"), )
    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(100), primary_key=True)
    count = db.Column(db.Integer)
Example #9
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)
Example #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)
Example #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: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)
Example #12
0
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)
Example #13
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')
Example #14
0
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')
Example #15
0
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)
Example #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})
Example #17
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"))
Example #18
0
class PublishLog(ModelMixin, db.Model):
    """
    controlType: 1:Publish,2:Read,3:Write,4 Execute
    publishStatus: 0:Failed,1:Published 2:Arrived
    """
    __tablename__ = 'publish_logs'
    __table_args__ = (db.Index('publish_logs_msgTime_idx', "msgTime"), )
    topic = db.Column(db.String(1000))  # mqtt topic
    streamID = db.Column(db.String(1000))  # stream id
    payload = db.Column(JSONB)  # publish payload
    publishStatus = db.Column(db.SmallInteger)
    taskID = db.Column(db.String(64))
    msgTime = db.Column(db.DateTime,
                        server_default=func.now(),
                        primary_key=True)
    deviceID = db.Column(db.String, primary_key=True)  # device uid
    tenantID = db.Column(db.String, primary_key=True)  # tenant uid
Example #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
Example #20
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"))
Example #21
0
class DataStream(BaseModel):
    __tablename__ = 'data_streams'
    streamID = db.Column(db.String(50))  # data stream identifier
    streamName = db.Column(db.String(50))
    streamType = db.Column(db.SmallInteger)  # 1:deviceUp, 2:deviceDown
    topic = db.Column(db.String(500))
    description = db.Column(db.String(300))
    dataPoints = db.relationship('DataPoint', secondary=StreamPoint,
                                 backref=db.backref('dataStreams', lazy='dynamic'))
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"))
    productID = db.Column(db.String, db.ForeignKey('products.productID'))
    userIntID = db.Column(db.Integer,
                          db.ForeignKey('users.id',
                                        onupdate="CASCADE",
                                        ondelete="CASCADE"))
Example #22
0
class Cert(BaseModel):
    __tablename__ = 'certs'
    certName = db.Column(db.String)
    enable = db.Column(db.SmallInteger, default=1)
    CN = db.Column(db.String(36))
    key = db.Column(db.Text)  # key file string
    cert = db.Column(db.Text)  # cert file string
    devices = db.relationship('Device', secondary=CertDevice,
                              lazy='dynamic')  # cert devices
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
Example #23
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'))
Example #24
0
class DataPoint(BaseModel):
    __tablename__ = 'data_points'
    dataPointName = db.Column(db.String(50))
    dataPointID = db.Column(db.String(50))
    dataTransType = db.Column(db.Integer)  # 1: Up, 2: Down, 3 UpAndDown
    pointDataType = db.Column(db.Integer)  # 1:num, 2:str, 3:Boolean, 4:time, 5:location
    extendTypeAttr = db.Column(JSONB, server_default='{}')  # extension attr for point data type
    isLocationType = db.Column(db.SmallInteger, server_default='0')  # is location-> 0:no, 1:yes
    locationType = db.Column(db.SmallInteger)  # 1: longitude, 2: latitude, 3: altitude
    enum = db.Column(db.JSON, server_default='[]')  # enum of string or integer
    description = db.Column(db.String(300))
    tenantID = db.Column(db.String,
                         db.ForeignKey('tenants.tenantID',
                                       onupdate="CASCADE",
                                       ondelete="CASCADE"))
    productID = db.Column(db.String, db.ForeignKey('products.productID'))
    userIntID = db.Column(db.Integer,
                          db.ForeignKey('users.id',
                                        onupdate="CASCADE",
                                        ondelete="CASCADE"))
Example #25
0
class Action(BaseModel):
    """
    config
    1 alert {"alertTitle": "","alertContent": "","alertSeverity":1}
    2 mail {"title": "","content": "",,"emails":["*****@*****.**","*****@*****.**"]}
    3 Webhook {"token": "jasdkjabsk","url": "http://127.0.0.1:6010"}
    4 Publish {"topic": "", "payload": "","deviceID": "","protocol": "mqtt","prefixTopic": ""}
    5 MQTT {"topic":"topic"}
    """
    __tablename__ = 'actions'
    actionName = db.Column(db.String(50))
    actionType = db.Column(
        db.SmallInteger)  # 1:alert,2:mail,3:Webhook,4:Publish,5:MQTT
    description = db.Column(db.String(300))
    config = db.Column(JSONB)
    userIntID = db.Column(db.Integer, db.ForeignKey('users.id'))
    tenantID = db.Column(
        db.String,
        db.ForeignKey('tenants.tenantID',
                      onupdate="CASCADE",
                      ondelete="CASCADE"))
Example #26
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), )
Example #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"))  # 用户
Example #28
0
class Service(BaseModel):
    __tablename__ = 'services'
    serviceName = db.Column(db.String(50))  # 服务名称
    overview = db.Column(db.String(50))  # 服务简介
    description = db.Column(db.String(1000))  # 具体介绍
    chargeType = db.Column(db.SmallInteger)  # 计费方式1:免费,2:时长(天),3:次数,4:条数(流量)
    unitPrice = db.Column(db.Float, server_default='0.00')  # 单价
    enable = db.Column(db.SmallInteger, default=0)  # 是否启动0 未启动, 1启动
    serviceGroup = db.Column(db.SmallInteger)  # 服务分组1 基础 2 DMP 3 AEP
    icon = db.Column(db.String(50))  # 图标
    screenshots = db.Column(db.JSON)  # 截图
    code = db.Column(db.String(50))  # 服务唯一标识
    referService = db.Column(db.String(50))  # 该服务引用的服务的code
    order = db.Column(db.SmallInteger)  # 顺序
Example #29
0
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))
Example #30
0
class Service(BaseModel):
    __tablename__ = 'services'
    serviceName = db.Column(db.String(50))
    overview = db.Column(db.String(50))
    description = db.Column(db.String(1000))
    chargeType = db.Column(db.SmallInteger)
    unitPrice = db.Column(db.Float, server_default='0.00')
    enable = db.Column(db.SmallInteger, default=0)
    serviceGroup = db.Column(db.SmallInteger)
    icon = db.Column(db.String(50))
    screenshots = db.Column(db.JSON)
    code = db.Column(db.String(50))
    referService = db.Column(db.String(50))
    order = db.Column(db.SmallInteger)