예제 #1
0
class HotelModel(db.Model):
    __tablename__ = 'hotels'

    hotel_id = db.Column(db.String, primary_key=True)
    name = db.Column(db.String(80))
    stars = db.Column(db.Float(precision=1))
    price = db.Column(db.Float(precision=2))
    city = db.Column(db.String(40))

    def __init__(self, hotel_id, name, stars, price, city):
        self.hotel_id = hotel_id
        self.name = name
        self.stars = stars
        self.price = price
        self.city = city

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

    @classmethod
    def find_hotel(cls, hotel_id):
        hotel = cls.query.filter_by(hotel_id=hotel_id).first()
        if hotel_id:
            return hotel
        return None

    def save_hotel(self):
        db.session.add(self)
        db.session.commit()
예제 #2
0
class HotelModel(db.Model):
    #mapeando a classe para o SQLAlchemy(classe representa tabela)
    #nome da tabela
    __tablename__ = 'hoteis'
    #colunas
    hotel_id = db.Column(db.String, primary_key=True)
    nome = db.Column(db.String(80))
    avaliacao = db.Column(
        db.Float(precision=1))  #precision determina quantas casas após o ponto
    diaria = db.Column(db.Float(precision=2))
    cidade = db.Column(db.String(40))

    #colunas --> atributos
    def __init__(self, hotel_id, nome, avaliacao, diaria, cidade):
        self.hotel_id = hotel_id
        self.nome = nome
        self.avaliacao = avaliacao
        self.diaria = diaria
        self.cidade = cidade

    def json(self):
        return {
            'hotel_id': self.hotel_id,
            'nome': self.nome,
            'avaliacao': self.avaliacao,
            'diaria': self.diaria,
            'cidade': self.cidade
        }

    #semelhantemente ao @staticmethod, cria métodos que pertencem à classe e não ao objeto
    #mas com a diferença que, nesse caso, desejo referenciar a classe no método --> cls
    @classmethod
    def findHotel(cls, hotel_id):
        # SELECT * FROM hoteis WHERE hotel_id = $hotel_id ...
        hotel = cls.query.filter_by(hotel_id=hotel_id).first(
        )  #query.filter_by - recurso do sql alchemy.
        if hotel:
            return hotel
        return None

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

    def updateHotel(self, nome, avaliacao, diaria, cidade):
        self.nome = nome
        self.avaliacao = avaliacao
        self.diaria = diaria
        self.cidade = cidade

    def deleteHotel(self):
        db.session.delete(self)
        db.session.commit()
예제 #3
0
class CloudModel(db.Model):
    __tablename__ = "cloud"

    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    cloudProviderEnum = db.Column(db.String(30))
    region = db.Column(db.String(255))
    zone = db.Column(db.String(255))
    amount = db.Column(db.Float(precision=2))
    services = db.relationship("ServiceModel", cascade="all")

    def __init__(self, cloudProviderEnum, region, zone, amount,
                 services: List[ServiceModel]):
        self.cloudProviderEnum = cloudProviderEnum
        self.region = region
        self.zone = zone
        self.amount = amount
        self.services = services

    def json(self):
        return {
            "id": self.id,
            "cloudProviderEnum": self.cloudProviderEnum,
            "region": self.region,
            "zone": self.zone,
            "amount": self.amount,
            "services": [service.json() for service in self.services]
        }
예제 #4
0
class ServiceModel(db.Model):
    __tablename__ = "service"

    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    name = db.Column(db.String(255))
    value = db.Column(db.Float(precision=2))
    tag = db.Column(db.String(255))
    instances = db.Column(db.String(4))
    instanceType = db.Column(db.String(255))
    cloud_id = db.Column(db.Integer, db.ForeignKey('cloud.id'), nullable=False)

    def __init__(self, name, value, tag, instances, instanceType):
        self.name = name
        self.value = value
        self.tag = tag
        self.instances = instances
        self.instanceType = instanceType

    def json(self):
        return {
            "id": self.id,
            "name": self.name,
            "value": self.value,
            "tag": self.tag,
            "instances": self.instances,
            "instanceType": self.instanceType
        }
예제 #5
0
class HotelModel(db.Model):
    __tablename__ = 'hoteis'

    hotel_id = db.Column(db.String, primary_key=True)
    nome = db.Column(db.String(80))
    estrelas = db.Column(db.Float(precision=1))
    diaria = db.Column(db.Float(precision=2))
    cidade = db.Column(db.String(40))

    def __init__(self, hotel_id, nome, estrelas, diaria, cidade):
        self.hotel_id = hotel_id
        self.nome = nome
        self.estrelas = estrelas
        self.diaria = diaria
        self.cidade = cidade

    def json(self):
        return {
            'hotel_id': self.hotel_id,
            'nome': self.nome,
            'estrelas': self.estrelas,
            'diaria': self.diaria,
            'cidade': self.cidade
        }

    @classmethod
    def find_hotel(cls, hotel_id):
        hotel = cls.query.filter_by(hotel_id=hotel_id).first()
        if hotel:
            return hotel
        return None

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

    def update_hotel(self, nome, estrelas, diaria, cidade):
        self.nome = nome
        self.estrelas = estrelas
        self.diaria = diaria
        self.cidade = cidade

    def delete_hotel(self):
        db.session.delete(self)
        db.session.commit()
예제 #6
0
class ProductModel(db.Model):
    __tablename__ = 'products'

    productId = db.Column(db.String(50), primary_key=True)
    productName = db.Column(db.String)
    category = db.Column(db.String(50))
    amount = db.Column(db.Integer)
    description = db.Column(db.String)
    price = db.Column(db.Float(precision=2))

    def __init__(self, productId, productName, category, amount, description, price):
        self.productId = productId
        self.productName = productName
        self.category = category
        self.amount = amount
        self.description = description
        self.price = price
    
    def json(self):
        return {
            'productId': self.productId,
            'productName': self.productName,
            'category': self.category,
            'amount': self.amount,
            'description': self.description,
            'price': self.price
        }
    
    @classmethod
    def find_product(cls, productId):
        product = cls.query.filter_by(productId=productId).first()
        if product:
            return product
        return None
    
    @classmethod
    def find_amount(cls, productId, orderAmount):
        product = cls.query.filter_by(product=product).first()
        if product:
            if orderAmount <= product.amount:
                return orderAmount
            return None
    
    def save_product(self):
        db.session.add(self)
        db.session.commit()

    def update_product(self, productName, category, amount, description, price):
        self.productName = productName
        self.category = category
        self.amount = amount
        self.description = description
        self.price = price

    def delete_product(self):
        db.session.delete(self)
        db.session.commit()
예제 #7
0
class OrderModel(db.Model):
    __tablename__ = 'orders'

    orderId = db.Column(db.Integer, primary_key=True)
    orderProduct = db.Column(db.String, nullable=False)
    orderAmount = db.Column(db.Integer, nullable=False)
    orderPrice = db.Column(db.Float(precision=2), default=0.0, nullable=False)
    orderEmail = db.Column(db.String, nullable=False)

    def __init__(self, orderProduct, orderAmount, orderPrice, orderEmail,
                 orderPassword):
        self.orderProduct = orderProduct
        self.orderAmount = orderAmount
        self.orderPrice = orderPrice
        self.orderEmail = orderEmail

    def json(self):
        return {
            'orderId': self.orderId,
            'orderProduct': self.orderProduct,
            'orderAmount': self.orderAmount,
            'orderPrice': self.orderPrice,
            'orderEmail': self.orderEmail
        }

    def newJson(self):
        return {
            'productId': self.productId,
            'productName': self.productName,
            'category': self.category,
            'amount': self.amount,
            'description': self.description,
            'price': self.price
        }

    @classmethod
    def find_order(cls, orderId):
        order = cls.query.filter_by(orderId=orderId).first()
        if order:
            return order
        return None

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

    def delete_order(self):
        db.session.delete(self)
        db.session.commit()
예제 #8
0
class HotelModel(db.Model):
    __tablename__ = 'hotel'

    hotel_id = db.Column(db.String, primary_key=True)
    nome = db.Column(db.String(80))
    estrelas = db.Column(db.Float(precision=1))
    diaria = db.Column(db.Float(precision=2))
    cidade = db.Column(db.String(40))

    def __init__(self, hotel_id, nome, estrelas, diaria, cidade):
        self.hotel_id = hotel_id
        self.nome = nome
        self.estrelas = hotel_id
        self.diaria = diaria
        self.cidade = cidade

    def json(self):
        return {
            'hotel_id': self.hotel_id,
            'nome': self.nome,
            'estrelas': self.estrelas,
            'diaria': self.diaria,
            'cidade': self.cidade
        }
예제 #9
0
class HotelModel(db.Model):
    __tablename__ = 'hoteis'

    hotel_id = db.Column(db.String, primary_key=True)

    nome = db.Column(db.String(80))

    estrelas = db.Column(db.Float(precision=1))

    diaria = db.Column(db.Float(precision=2))

    cidade = db.Column(db.String(80))

    def __init__(self, hotel_id, **kwargs):
        self.hotel_id = hotel_id
        self.nome = kwargs.get('nome')
        self.estrelas = kwargs.get('estrelas')
        self.diaria = kwargs.get('diaria')
        self.cidade = kwargs.get('cidade')

    def serialize(self):
        return {
            'hotel_id': self.hotel_id,
            'nome': self.nome,
            'estrelas': self.estrelas,
            'diaria': self.diaria,
            'cidade': self.cidade
        }

    @classmethod
    def get_or_none(cls, hotel_id):
        return cls.query.filter_by(hotel_id=hotel_id).first()

    @classmethod
    def get_queryset(cls, **kwargs):
        queryset = cls.query

        nome = kwargs.get('nome', '')
        if nome:
            queryset = queryset.filter_by(nome=nome)

        return queryset.all()

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

    @classmethod
    def perform_save(cls, hotel_id, **data):
        new_hotel = cls(hotel_id, **data)
        new_hotel._save_instance()
        return new_hotel

    def perform_update(self, **data):
        self.nome = data.get("nome")
        self.estrelas = data.get("estrelas")
        self.diaria = data.get("diaria")
        self.cidade = data.get("cidade")
        self._save_instance()

    def remove(self):
        db.session.delete(self)
        db.session.commit()
class ProdutoModel(db.Model):
    __tablename__ = 'produto'

    id_produto = db.Column(db.Integer, primary_key=True)
    cod_produto = db.Column(db.String(50), nullable=False)
    nome_produto = db.Column(db.String(150), nullable=False)
    valor_produto = db.Column(db.Float(precision=2), nullable=False)
    ativo = db.Column(db.String(3), nullable=False)
    cod_categoria = db.Column(
        db.Integer, db.ForeignKey('categoria.cod_categoria'))
    cod_fornecedor = db.Column(
        db.Integer, db.ForeignKey('fornecedor.cod_fornecedor'))

    def __init__(self, cod_produto, nome_produto,
                 valor_produto, ativo, cod_categoria, cod_fornecedor):
        self.cod_produto = cod_produto
        self.nome_produto = nome_produto
        self.valor_produto = valor_produto
        self.ativo = ativo
        self.cod_categoria = cod_categoria
        self.cod_fornecedor = cod_fornecedor

    def getCodProduto(self):
        return self.cod_produto

    def json(self):
        return {
            'id_produto': self.id_produto,
            'cod_produto': self.cod_produto,
            'nome_produto':  self.nome_produto,
            'valor_produto': self.valor_produto,
            'ativo': self.ativo,
            'cod_categoria': self.cod_categoria,
            'cod_fornecedor': self.cod_fornecedor
        }

    @classmethod
    def find_produto_by_cod(cls, cod_produto):
        produto = cls.query.filter_by(cod_produto=cod_produto).first()
        if produto:
            return produto
        return None

    @classmethod
    def find_produto(cls, id_produto):
        produto = cls.query.filter_by(id_produto=id_produto).first()
        if produto:
            return produto
        return None

    @classmethod
    def find_produto_categoria(cls, cod_fornecedor):
        produto = cls.query.filter_by(cod_fornecedor=cod_fornecedor).first()
        if produto:
            return produto
        return None

    @classmethod
    def find_produto_fornecedor(cls, cod_categoria):
        produto = cls.query.filter_by(cod_categoria=cod_categoria).first()
        if produto:
            return produto
        return None

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

    def update_produto(self, id_produto, cod_produto, nome_produto,
                       valor_produto, ativo, cod_categoria, cod_fornecedor):
        self.id_produto = id_produto
        self.cod_produto = cod_produto
        self.nome_produto = nome_produto
        self.valor_produto = valor_produto
        self.ativo = ativo
        self.cod_categoria = cod_categoria
        self.cod_fornecedor = cod_fornecedor

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

    def __json_categoria(self, cod_categoria):
        categoria = CategoriaModel.find_categoria(cod_categoria)
        return categoria.json()

    def __json_fornecedor(self, cod_fornecedor):
        fornecedor = FornecedorModel.find_fornecedor(cod_fornecedor)
        return fornecedor.json()
예제 #11
0
class HotelModel(db.Model):
    __tablename__ = 'hoteis'

    hotel_id = db.Column(db.String, primary_key=True)
    name = db.Column(db.String(80))
    rating = db.Column(db.Float(precision=1), )
    daily = db.Column(db.Float(precision=2), )
    city = db.Column(db.String(40), )
    site_id = db.Column(db.Integer, db.ForeignKey('sites.site_id'))

    def __init__(self, hotel_id, name, rating, daily, city, site_id):
        self.hotel_id = hotel_id
        self.name = name
        self.rating = rating
        self.daily = daily
        self.city = city
        self.site_id = site_id

    def json(self):
        return {
            "hotel_id": self.hotel_id,
            "name": self.name,
            "rating": self.rating,
            "daily": self.daily,
            "city": self.city,
            "site": self.site_id,
        }

    @classmethod
    def find_hotel(cls, hotel_id):
        hotel = cls.query.filter_by(hotel_id=hotel_id).first()
        if hotel:
            return hotel
        return None

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

    def update_hotel(self, name, rating, daily, city):
        self.name = name
        self.rating = rating
        self.daily = daily
        self.city = city

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

    @classmethod
    def find(cls, **kwargs):
        params = kwargs
        connection = psycopg2.connect(user=USER, password=PASSWORD, host=HOST, port=PORT, database=DATABASE)
        cursor = connection.cursor()

        if not params.get("cidade"):

            consulta = consulta_sem_cidade
            # cond = tuple([params[chave] for chave in params])
            # result = cursor.execute(consulta, (rating_min, rating_max, daily_min, daily_max, limit, offset))
            # result = cursor.execute(consulta, cond)
        else:
            consulta = consulta_com_cidade

        cond = tuple([params[chave] for chave in params])
        cursor.execute(consulta, cond)
        result = cursor.fetchall()

        hoteis = []

        for linha in result:
            hoteis.append({
                "hotel_id": linha[0],
                "name": linha[1],
                "rating": linha[2],
                "daily": linha[3],
                "city": linha[4],
                "site_id": linha[5],
            })

        return hoteis
예제 #12
0
class BudgetingModel(db.Model):
    __tablename__ = "budgeting"

    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    name = db.Column(db.String(255))
    totalCost = db.Column(db.Float(precision=2))
    periodEnum = db.Column(db.String(10))
    currencyEnum = db.Column(db.String(6))
    effectiveFrom = db.Column(db.Date())
    effectiveTo = db.Column(db.Date())
    description = db.Column(db.String(255))
    paymentTypeEnum = db.Column(db.String(10))
    microServices = db.relationship("MicroServiceModel", cascade="all")
    running = db.Column(db.String(3), default="NO")
    creation = db.Column(db.Date(), server_default=sqlalchemy.sql.func.now())

    def __init__(self, name, totalCost, periodEnum, currencyEnum,
                 effectiveFrom, effectiveTo, description, paymentTypeEnum,
                 microServices: List[MicroServiceModel]):
        self.name = name
        self.totalCost = totalCost
        self.periodEnum = periodEnum
        self.currencyEnum = currencyEnum
        self.effectiveFrom = effectiveFrom
        self.effectiveTo = effectiveTo
        self.description = description
        self.paymentTypeEnum = paymentTypeEnum
        self.microServices = microServices

    def json(self):
        return {
            "id":
            self.id,
            "name":
            self.name,
            "totalCost":
            self.totalCost,
            "periodEnum":
            self.periodEnum,
            "currencyEnum":
            self.currencyEnum,
            "effectiveFrom":
            str(self.effectiveFrom),
            "effectiveTo":
            str(self.effectiveTo),
            "description":
            self.description,
            "paymentTypeEnum":
            self.paymentTypeEnum,
            "running":
            self.running,
            "creation":
            str(self.creation),
            "microServices":
            [microService.json() for microService in self.microServices]
        }

    @classmethod
    def find_budgeting(cls, id):
        budgeting = cls.query.filter_by(
            id=id).first()  # select * from budgeting where id = $id
        if budgeting:
            return budgeting
        return None

    @classmethod
    def find_by_running_scenario(cls):
        budgeting = cls.query.filter_by(running="YES").first(
        )  # select * from budgeting where running = YES
        if budgeting:
            return budgeting
        return None

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

    def update_scenario_budgeting(self, running):
        self.running = running

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