示例#1
0
class Vendedor(db.Model):
    idvendedor = db.Column(db.Integer, primary_key=True)
    dni = db.Column(db.Integer, nullable=False, unique=True)
    email = db.Column(db.String(200), nullable=True, unique=True)
    password = db.Column(db.String(250), nullable=False)
    nombre = db.Column(db.String(250))
    apellidos = db.Column(db.String(250))
    telefono = db.Column(db.String(250))
    banco = db.Column(db.String(250))
    nro_cuenta = db.Column(db.String(250))
    nro_cuenta_int = db.Column(db.String(250))
    activo = db.Column(db.String(2))
    relacionuservet = db.relationship('Uservet', backref='vendedor', lazy=True)
    relacionpagovendedor = db.relationship('PagoVendedor',
                                           backref='vendedor',
                                           lazy=True)

    def __init__(self, dni, email, password, nombre, apellidos, telefono,
                 banco, nro_cuenta, nro_cuenta_int, activo):
        self.dni = dni
        self.email = email
        self.password = password
        self.nombre = nombre
        self.apellidos = apellidos
        self.telefono = telefono
        self.banco = banco
        self.nro_cuenta = nro_cuenta
        self.nro_cuenta_int = nro_cuenta_int
        self.activo = activo
示例#2
0
class Usuario(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(255))
    email = db.Column(db.String(120),unique = True)
    phone = db.Column(db.Integer, nullable = True)
    pais = db.Column(db.String(200) , nullable = True)
    provincia = db.Column(db.String(200) , nullable = True)
    ciudad = db.Column(db.String(200) , nullable = True)
    distrito = db.Column(db.String(200) , nullable = True)
    direccion = db.Column(db.String(200) , nullable = True)
    role = db.Column(db.Integer)
    pets = db.relationship('Pet',backref='pet_id')
    uservets = db.relationship('UserVet',backref='pet_id')
    fecha_registro = db.Column(db.DateTime,default=datetime.utcnow)
    auth0id = db.Column(db.String(255))
    def __init__(self,name,email,phone,pais,provincia,ciudad,distrito,direccion,role,fecha_registro,auth0id):
        self.name = name
        self.email = email 
        self.phone = phone 
        self.pais = pais 
        self.provincia = provincia  
        self.ciudad = ciudad 
        self.distrito = distrito 
        self.direccion = direccion 
        self.role = role 
        self.fecha_registro= fecha_registro
        self.auth0id = auth0id
示例#3
0
class ChatbotModel(db.Model):
    __tablename__ = "chatbots"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))

    user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
    user = db.relationship("UserModel")

    intents = db.relationship("IntentModel", lazy="dynamic")

    def __init__(self, user_id, name):
        self.user_id = user_id
        self.name = name

    def json(self):
        return {
            "id": self.id,
            "user_id": self.user_id,
            "name": self.name,
            "intents": [i.json() for i in self.intents.all()],
        }

    @classmethod
    def get_all(cls, user_id):
        return cls.query.filter_by(user_id=user_id)

    @classmethod
    def get_by_name(cls, name):
        return cls.query.filter_by(name=name).first()

    def save(self):
        db.session.add(self)
        db.session.commit()
示例#4
0
class Veterinaria(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(255))
    logo = db.Column(db.String(255))    
    ruc = db.Column(db.String(25))
    telefono = db.Column(db.String(25))
    whatsapp = db.Column(db.String(25))
    pais = db.Column(db.String(200))
    provincia = db.Column(db.String(200))
    ciudad = db.Column(db.String(200))
    Distrito = db.Column(db.String(200))
    Address = db.Column(db.String(250))
    status = db.Column(db.Integer,nullable = False)
    fecha_registro = db.Column(db.DateTime,default=datetime.utcnow)
    uservets = db.relationship('UserVet',backref='uservetid')
    services = db.relationship('Services',backref='serviceid')
    

    def __init__(self,name,logo,ruc,telefono,whatsapp,pais,provincia,ciudad,Distrito,Address,status,fecha_registro):
        self.name = name
        self.logo = logo 
        self.ruc = ruc 
        self.telefono = telefono 
        self.whatsapp = whatsapp  
        self.pais = pais 
        self.provincia = provincia 
        self.ciudad = ciudad 
        self.Distrito = Distrito 
        self.Address = Address 
        self.status = status 
        self.fecha_registro =fecha_registro
示例#5
0
class StoreModel(db.Model):
    __tablename__ = "store"

    storeId = db.Column(
        db.String(80), primary_key=True
    )  # prefix ST_ + Serial +  registerDate(from UserModel) + userId
    storeName = db.Column(db.String(40), nullable=False)
    storeLocation = db.Column(db.Text, nullable=True)
    storeCoverImage = db.Column(db.Text, nullable=True)
    storePicture = db.Column(db.Text, nullable=True)

    createDate = db.Column(db.BigInteger, default=time)
    updateDate = db.Column(db.BigInteger, onupdate=time)

    userId = db.Column(db.String(50), db.ForeignKey('users.userId'))
    user = db.relationship('UserModel')
    product = db.relationship('ProductModel',
                              lazy="dynamic",
                              cascade="all ,delete-orphan")

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod
    def findSerial(cls):
        return cls.query.count()

    @classmethod
    def findByStoreId(cls, storeid):
        return cls.query.filter_by(storeId=storeid).first()

    @classmethod
    def findByUserId(cls, userid):
        return cls.query.filter_by(userId=userid).first()

    @classmethod
    def isLimit(cls, userid) -> bool:
        return cls.query.filter_by(userId=userid).count() >= 5

    @classmethod
    def findByStoreName(cls, storename):
        return cls.query.filter_by(storeName=storename).first()

    def insert(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#6
0
class HospitalModel(db.Model):
    __tablename__ = 'hospital'

    id = db.Column(db.Integer,
                   db.Sequence('seq_hospital_id', start=1, increment=1),
                   primary_key=True)
    name = db.Column(db.String(255))
    direccion = db.Column(db.String(255))
    service = db.Column(db.String(255))

    status = db.Column(db.String(1), default=1)
    created = db.Column(db.DateTime, default=datetime.datetime.utcnow)

    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    user = db.relationship('UserModel')

    def __init__(self, name, direccion, service, user_id):
        self.name = name
        self.direccion = direccion
        self.service = service
        self.user_id = user_id

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()
示例#7
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)
    wallet = db.relationship('Wallet', uselist=False)
示例#8
0
class StoreModel(db.Model):
    __tablename__ = 'stores'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    items = db.relationship('ItemModel', lazy='dynamic')

    def __init__(self, name):
        self.name = name

    def json(self):
        return {
            'id': self.id,
            'name': self.name,
            'items': [item.json() for item in self.items.all()]
        }

    @classmethod
    def find_by_name(cls, name):
        return cls.query.filter_by(name=name).first()

    @classmethod
    def find_all(cls):
        return cls.query.all()

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self):
        db.session.delete(self)
        db.session.commit()
示例#9
0
class UserModel(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer,
                   db.Sequence('seq_users_id', start=1, increment=1),
                   primary_key=True)
    identification = db.Column(db.String(255))
    email = db.Column(db.String(255))
    phone = db.Column(db.String(255))
    password = db.Column(db.String(255))
    status = db.Column(db.String(1), default=2)  # 2 = user new
    created = db.Column(db.DateTime, default=datetime.datetime.utcnow)

    rol_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    rol = db.relationship('RolModel')

    def __init__(self, identification, password, email, phone, rol_id):
        self.identification = identification
        self.password = password
        self.email = email
        self.phone = phone
        self.rol_id = rol_id

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    @classmethod
    def find_by_identification(cls, identification):
        return cls.query.filter_by(identification=identification).first()

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()
示例#10
0
class BrandModel(db.Model):
    __tablename__ = 'brands'                

    brandId = db.Column(db.String(80),primary_key=True,nullable=False,default=DefaultFunc.generateId)
    brandName = db.Column(db.String(50),nullable=False)

    createDate = db.Column(db.BigInteger,default=time)
    updateDate = db.Column(db.BigInteger,onupdate=time)
    
    product = db.relationship('ProductModel',lazy="dynamic")

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod
    def findById(cls,brandid):
        return cls.query.filter_by(brandId=brandid).first()

    @classmethod
    def findByBrandName(cls,name):
        return cls.query.filter_by(brandName=name).first()
    
    def insert(self):
        db.session.add(self)
        db.session.commit()
    
    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#11
0
文件: user.py 项目: gleisonbs/rosie
class UserModel(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    password = db.Column(db.String(80))

    chatbots = db.relationship("ChatbotModel", lazy="dynamic")

    def __init__(self, username: str, password: str):
        self.username = username
        self.password = password

    def json(self) -> UserJSON:
        return {"id": self.id, "username": self.username}

    @classmethod
    def find_by_username(cls, username: str) -> "UserModel":
        return cls.query.filter_by(username=username).first()

    @classmethod
    def find_by_id(cls, _id: int) -> "UserModel":
        return cls.query.filter_by(id=_id).first()

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()
示例#12
0
class ProfileModel(db.Model):
    __tablename__ = 'profile'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    lastname = db.Column(db.String(80), nullable=True)
    facebook = db.Column(db.String(80), nullable=True)
    instragram = db.Column(db.String(80), nullable=True)
    location = db.Column(db.Text, nullable=True)
    avatar = db.Column(db.Text, nullable=True)

    createDate = db.Column(db.BigInteger, default=time)
    updateDate = db.Column(db.BigInteger, onupdate=time)

    userId = db.Column(db.String(50), db.ForeignKey('users.userId'))
    user = db.relationship('UserModel')

    @classmethod
    def findById(cls, userid):
        return cls.query.filter_by(userId=userid).first()

    def insert(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#13
0
class Item(db.Model):
    __tablename__ = 'items'
    id = db.Column(db.INTEGER, primary_key=True)
    name = db.Column(db.String(80))
    price = db.Column(db.Float(precision=2))

    stores = db.relationship('Store',
                             secondary=inventory,
                             backref=db.backref('items', lazy='dynamic'))

    def __init__(self, name, price):
        self.name = name
        self.price = price

    @classmethod
    def find_by_name(cls, name):
        return cls.query.filter_by(name=name).first()

    @classmethod
    def find_all(cls):
        return cls.query.all()

    def json(self):
        return {'name': self.name, 'price': self.price}

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self):
        db.session.delete(self)
        db.session.commit()
示例#14
0
class ItemModel(db.Model):
    __tablename__ = 'items'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    price = db.Column(db.Float(precision=2))
    store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))
    store = db.relationship('StoreModel')

    def __init__(self, name, price, store_id):
        self.name = name
        self.price = price
        self.store_id = store_id

    def json(self):
        return {'id': self.id,'name': self.name, 'price': self.price, 'store_id': self.store_id}

    @classmethod
    def find_by_name(cls, name):
        return cls.query.filter_by(name=name).first()

    @classmethod
    def find_all(cls):
        return cls.query.all()

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self):
        db.session.delete(self)
        db.session.commit()
示例#15
0
class Swap(BaseModel):
    """ Swap Model class """

    __tablename__ = 'swaps'

    driver_id = db.Column(db.Integer,
                          db.ForeignKey('drivers.id'),
                          nullable=False)
    station_id = db.Column(db.Integer,
                           db.ForeignKey('stations.id'),
                           nullable=False)
    old_battery = db.Column(JSON, nullable=False)
    new_battery = db.Column(JSON, nullable=False)
    distance_covered = db.Column(db.Float, nullable=False)
    energy_used = db.Column(db.Float, nullable=False)

    driver = db.relationship('Driver', backref='swap_driver', lazy='joined')
    station = db.relationship('Station', backref='swap_station', lazy='joined')
示例#16
0
class Suscripcion(db.Model):
    idsuscripcion = db.Column(db.Integer, primary_key=True)
    tipo = db.Column(db.String(250))
    fecha_renovacion = db.Column(db.Date)
    fecha_vencimiento = db.Column(db.Date)
    estado = db.Column(db.String(50))
    relacionuservet = db.relationship('Uservet',
                                      backref='suscripcion',
                                      lazy=True)
    relacionpagosuscripcion = db.relationship('PagoSuscripcion',
                                              backref='suscripcion',
                                              lazy=True)

    def __init__(self, tipo, fecha_renovacion, fecha_vencimiento, estado):
        self.tipo = tipo
        self.fecha_renovacion = fecha_renovacion
        self.fecha_vencimiento = fecha_vencimiento
        self.estado = estado
示例#17
0
class OrderHistoryModel(db.Model):
    __tablename__ = 'orderhistories'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    quantity = db.Column(db.Integer, nullable=False)
    flaskSaleStatus = db.Column(db.Boolean, nullable=False)

    createDate = db.Column(db.BigInteger, default=time)
    updateDate = db.Column(db.BigInteger, onupdate=time)

    orderId = db.Column(db.String(80), db.ForeignKey('orders.orderId'))
    proId = db.Column(db.String(80), db.ForeignKey('products.proId'))

    order = db.relationship('OrderModel')
    product = db.relationship('ProductModel')

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod
    def fetchById(cls, _id):
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def fetchByOrderId(cls, orderid):
        return cls.query.filter_by(orderId=orderid).all()

    @classmethod
    def fetchByProId(cls, proid):
        return cls.query.filter_by(proId=proid).all()

    @classmethod
    def insertMany(self, value):
        db.session.add_all(value)
        db.session.commit()

    def insert(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#18
0
class Cliente(db.Model):
    idcliente = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(250))
    apellidos = db.Column(db.String(250))
    dni = db.Column(db.Integer, unique=True)
    email = db.Column(db.String(250))
    telefono = db.Column(db.String(250))
    registradopor = db.Column(db.String(250))
    relacionmascota = db.relationship('Mascota', backref='cliente', lazy=True)
    relacionatencion = db.relationship('Atencion',
                                       backref='cliente',
                                       lazy=True)

    def __init__(self, nombre, apellidos, dni, email, telefono, registradopor):
        self.nombre = nombre
        self.apellidos = apellidos
        self.dni = dni
        self.email = email
        self.telefono = telefono
        self.registradopor = registradopor
示例#19
0
class OrderModel(db.Model):
    __tablename__ = 'orders'

    orderId = db.Column(db.String(80),primary_key=True) #userid + time() + 
    inOrederStatus = db.Column(db.Boolean,default=True)
    createDate = db.Column(db.BigInteger,default=time)
    updateDate = db.Column(db.BigInteger,onupdate=time)

    userId = db.Column(db.String(50),db.ForeignKey('users.userId'))
    user = db.relationship('UserModel')
    orderhistory = db.relationship(OrderHistoryModel,lazy="dynamic",cascade="all ,delete-orphan")

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod
    def generateId(cls,userid):
        return f"ORDER_{userid}_{int(time())}"

    @classmethod
    def fetchJoinAll(cls):
        return UserModel.query.filter_by(userId=cls.userId).all()

    @classmethod
    def findById(cls,orderid):
        return cls.query.filter_by(orderId=orderid).first()

    @classmethod
    def findByUserId(cls,userid):
        return cls.query.filter_by(userId=userid).all()

    def insert(self):
        db.session.add(self)
        db.session.commit()
    
    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#20
0
class Driver(BaseModel):
    """ Driver Model class """

    __tablename__ = 'drivers'

    name = db.Column(db.String(250), nullable=False, unique=True)
    license_number = db.Column(db.String(100), nullable=False, unique=True)
    motorcycle_id = db.Column(db.Integer,
                              db.ForeignKey('motorcycles.id'),
                              nullable=False)
    motorcycle = db.relationship('Motorcycle',
                                 backref='driver_motorcycle',
                                 lazy='joined')
示例#21
0
class UserModel(db.Model):
    __tablename__ = 'users'

    userId = db.Column(db.String(50),primary_key=True,default=DefaultFunc.generateId)
    password = db.Column(db.String(80),nullable=True)
    email = db.Column(db.String(80),nullable=False)
    name = db.Column(db.String(50),nullable=True)
    role = db.Column(db.SmallInteger,default='0')

    createDate = db.Column(db.BigInteger,default=time)
    updateDate = db.Column(db.BigInteger,onupdate=time)

    profile = db.relationship(ProfileModel,lazy="dynamic",cascade="all ,delete-orphan")
    product = db.relationship(ProductModel,lazy="dynamic",cascade="all ,delete-orphan")
    order = db.relationship(OrderModel,lazy='subquery',cascade="all ,delete-orphan")

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod    
    def findById(cls,userid) -> "UserModel":
        return cls.query.filter_by(userId=userid).first()

    @classmethod    
    def findByEmail(cls,email) -> "UserModel":
        return cls.query.filter_by(email=email).first()

    @classmethod    
    def findByName(cls,name) -> "UserModel":
        return cls.query.filter_by(name=name).first()

    def insert(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#22
0
class CommentModel(db.Model):
    __tablename__ = 'comments'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    commentId = db.Column(db.String(70), primary_key=True)  #userid + time()
    commentRating = db.Column(db.Integer, default='0')
    commentMsg = db.Column(db.Text, nullable=False)
    userId = db.Column(db.String(50), db.ForeignKey('users.userId'))
    proId = db.Column(db.String(50), db.ForeignKey('products.proId'))

    createDate = db.Column(db.BigInteger, default=time)
    updateDate = db.Column(db.BigInteger, onupdate=time)

    user = db.relationship('UserModel')
    product = db.relationship(ProductModel)

    @classmethod
    def fetchAll(cls):
        return cls.query.all()

    @classmethod
    def fetchByUser(self, userid):
        return cls.query.filter_by(userId=userid).all()

    @classmethod
    def fetchByProduct(self, proid):
        return cls.query.filter_by(userId=proid).all()

    @classmethod
    def insert(self):
        db.session.add(self)
        db.session.commit()

    @classmethod
    def delete(self):
        db.session.delete(self)
        db.session.commit()
示例#23
0
class Atencion(db.Model):
    idatencion = db.Column(db.Integer, primary_key=True)
    # hoy = datetime.now(pytz.timezone('America/Lima'))
    fecha_atencion = db.Column(db.DateTime,
                               default=datetime.now(
                                   pytz.timezone('America/Lima')))
    receta = db.Column(db.String(300))
    sintomas = db.Column(db.String(300))
    informe = db.Column(db.String(300))
    observaciones = db.Column(db.String(300))
    nombremascota = db.Column(db.String(100))
    total = db.Column(db.Float)
    idcliente = db.Column(db.Integer, db.ForeignKey('cliente.idcliente'))
    idvet = db.Column(db.Integer, db.ForeignKey('vet.idvet'))
    atendido_por = db.Column(db.String(100))
    creado_por = db.Column(db.String(100))
    estado_atencion = db.Column(db.String(100))
    nombre_apellido = db.Column(db.String(100))
    dni = db.Column(db.String(20))
    email = db.Column(db.String(100))
    idreservacion = db.Column(db.Integer)
    relacionatenciondetalle = db.relationship('AtencionDetalle',
                                              backref='atencion',
                                              lazy=True)

    def __init__(self, fecha_atencion, receta, sintomas, informe,
                 observaciones, nombremascota, total, idcliente, idvet,
                 atendido_por, creado_por, estado_atencion, nombre_apellido,
                 dni, email, idreservacion):
        self.fecha_atencion = fecha_atencion
        self.receta = receta
        self.sintomas = sintomas
        self.informe = informe
        self.observaciones = observaciones
        self.nombremascota = nombremascota
        self.total = total
        self.idcliente = idcliente
        self.idvet = idvet
        self.atendido_por = atendido_por
        self.creado_por = creado_por
        self.estado_atencion = estado_atencion
        self.nombre_apellido = nombre_apellido
        self.dni = dni
        self.email = email
        self.idreservacion = idreservacion
示例#24
0
class Vet(db.Model):
    idvet = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(100))
    logo = db.Column(db.String(200))
    imagen = db.Column(db.String(200))
    telefono = db.Column(db.String(100))
    whatsapp = db.Column(db.String(100))
    acceso = db.Column(db.String(100))
    ciudad = db.Column(db.String(100))
    distrito = db.Column(db.String(100))
    direccion = db.Column(db.String(100))
    creado = db.Column(db.DateTime,
                       default=datetime.now(pytz.timezone('America/Lima')))
    vision = db.Column(db.String(500))
    mision = db.Column(db.String(500))
    mensaje = db.Column(db.String(500))
    nombre_unico = db.Column(db.String(30), unique=True)
    clave_reporte = db.Column(db.String(200))
    uservets = db.relationship('Uservet', backref='vet', lazy=True)
    relacionservicios = db.relationship('Servicios', backref='vet', lazy=True)
    relacionatencion = db.relationship('Atencion', backref='vet', lazy=True)
    relacionempleado = db.relationship('Empleado', backref='vet', lazy=True)
    relacionproductos = db.relationship('Productos', backref='vet', lazy=True)
    relacionkardex = db.relationship('Kardex', backref='vet', lazy=True)
    relacionreservacion = db.relationship('Reservacion',
                                          backref='vet',
                                          lazy=True)

    def __init__(self, nombre, logo, imagen, telefono, whatsapp, acceso,
                 ciudad, distrito, direccion, creado):
        self.nombre = nombre
        self.logo = logo
        self.imagen = imagen
        self.telefono = telefono
        self.whatsapp = whatsapp
        self.acceso = acceso
        self.ciudad = ciudad
        self.distrito = distrito
        self.direccion = direccion
        self.creado = creado
示例#25
0
class ProductModel(db.Model):
    __tablename__ = "products"

    proId = db.Column(
        db.String(80), nullable=False,
        primary_key=True)  # PROD_ + serial + pro_name + userId or storeId
    proName = db.Column(db.String(50), nullable=False)
    proPrice = db.Column(db.Float, nullable=False, default="0")
    proImg = db.Column(db.Text, nullable=True, default=None)
    proQuantity = db.Column(db.Integer, default='1')
    feature = db.Column(db.Text, nullable=True, default=None)
    flashSaleStatus = db.Column(db.Boolean, default=False)
    # authorId = db.Column(db.String(80),nullable=False)
    desc = db.Column(db.Text, nullable=True, default=None)

    createDate = db.Column(db.BigInteger, default=time)
    updateDate = db.Column(db.BigInteger, onupdate=time)

    catId = db.Column(
        db.String(80),
        db.ForeignKey('catagories.catId'),
        nullable=False,
    )
    userId = db.Column(
        db.String(80),
        db.ForeignKey('users.userId'),
        nullable=True,
    )
    storeId = db.Column(
        db.String(80),
        db.ForeignKey('store.storeId'),
        nullable=True,
    )
    brandId = db.Column(
        db.String(80),
        db.ForeignKey('brands.brandId'),
        nullable=True,
        default='0',
    )

    catagory = db.relationship(CatagoryModel)
    user = db.relationship('UserModel')
    brand = db.relationship('BrandModel')
    store = db.relationship(StoreModel)
    orderhistory = db.relationship(OrderHistoryModel,
                                   lazy="dynamic",
                                   cascade="all ,delete-orphan")

    @classmethod
    def newProid(cls, authorid, serialNumber):
        return f"PROD_{serialNumber}_{int(time())}_{authorid}"

    @classmethod
    def findSerial(cls):
        return cls.query.count()

    @classmethod
    def fetchAll(cls):
        return cls.query.order_by(cls.createDate.desc()).all()

    @classmethod
    def findByProId(cls, proid):
        return cls.query.filter_by(proId=proid).first()

    @classmethod
    def isLimit(cls, userid) -> bool:
        return cls.query.filter_by(userId=userid).count() > 10

    @classmethod
    def findByUserId(cls, userid):
        return cls.query.filter_by(userId=userid).order_by(
            cls.createDate.desc())

    @classmethod
    def findByStoreId(cls, storeid):
        return cls.query.filter_by(storeId=storeid).all()

    @classmethod
    def insertMany(cls, value):
        db.session.add_all(value)
        db.session.commit()

    def insert(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()