from minibase.app import db
from datetime import datetime

class nbiotDevice(db.Model):
    __tablename__ = 'nbiotDevice'
    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(50), nullable=False)
    serial_no = db.Column(db.String(50), nullable=False)
    device_id = db.Column(db.String(30), nullable=False)
    imsi = db.Column(db.String(30), nullable=False)
    iccid = db.Column(db.String(50), nullable=False)
    ip = db.Column(db.String(20), nullable=True)
    port = db.Column(db.String(20), nullable=True)
    registration_date = db.Column(db.DateTime, nullable=True)
    activation_date = db.Column(db.DateTime, nullable=True)
    deactivation_date = db.Column(db.DateTime, nullable=True)
    image_file = db.Column(db.String(20), nullable=False, default='def_sensor.png')
    created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    updated = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)

    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
    status_id = db.Column(db.Integer, db.ForeignKey('nbiotDeviceStatus.id'), nullable=False)
    type_id = db.Column(db.Integer, db.ForeignKey('nbiotDeviceType.id'), nullable=False)
    area_id = db.Column(db.Integer, db.ForeignKey('nbiotDeviceArea.id'), nullable=False)
    manufacturer_id = db.Column(db.Integer, db.ForeignKey('companies.id'), nullable=False)
    company_id = db.Column(db.Integer, db.ForeignKey('companies.id'), nullable=False)


class nbiotDeviceStatus(db.Model):
    __tablename__ = 'nbiotDeviceStatus'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    description = db.Column(db.String(300), nullable=False)


class nbiotDeviceType(db.Model):
    __tablename__ = 'nbiotDeviceType'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    description = db.Column(db.String(300), nullable=False)


class nbiotDeviceArea(db.Model):
    __tablename__ = 'nbiotDeviceArea'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    description = db.Column(db.String(300), nullable=False)


class waterDetector(db.Model):
    __tablename__ = 'waterDetector'
    id = db.Column(db.Integer, primary_key=True)
    pins = db.Column(db.Integer, nullable=True)
    alarms = db.Column(db.Integer, nullable=True)
    voltage = db.Column(db.Integer, nullable=True)
    signal = db.Column(db.Integer, nullable=True)
    sleepTime = db.Column(db.Integer, nullable=True)
    scanTime = db.Column(db.Integer, nullable=True)
    holdTime = db.Column(db.Integer, nullable=True)
    timeStamp = db.Column(db.DateTime, nullable=False)