From 14c6d9b862d8d3d0d9696c6aa34c8eb2f5549acb Mon Sep 17 00:00:00 2001 From: Antero Asafe Matos de Oliveira~ Date: Mon, 3 Mar 2025 15:58:48 -0400 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20codigo=20anterior?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/bank.py | 44 ------------------------------------------ models/invoice_item.py | 21 ++++++++++++++++++++ models/invoices.py | 19 ++++++++++++++++++ models/models.py | 10 ---------- models/user.py | 17 ---------------- models/users.py | 42 ++++++++++++++++++++++++++++++++++++++++ routes/crud.py | 18 ----------------- routes/invoice.py | 20 ------------------- 8 files changed, 82 insertions(+), 109 deletions(-) delete mode 100644 models/bank.py create mode 100644 models/invoice_item.py create mode 100644 models/invoices.py delete mode 100644 models/models.py delete mode 100644 models/user.py create mode 100644 models/users.py delete mode 100644 routes/crud.py delete mode 100644 routes/invoice.py diff --git a/models/bank.py b/models/bank.py deleted file mode 100644 index 0c83c83..0000000 --- a/models/bank.py +++ /dev/null @@ -1,44 +0,0 @@ -from sqlalchemy import create_engine -from sqlalchemy.orm import sessionmaker - -# Conectar ao banco SQLite (ou outro banco, ex: PostgreSQL, MySQL) -engine = create_engine("sqlite:///meubanco.db", echo=True) - -# Criar tabelas no banco de dados -base.metadata.create_all(engine) - -# Criar uma sessão para interagir com o banco -SessionLocal = sessionmaker(bind=engine) -session = SessionLocal() - -from datetime import date - -# Criando um cliente -cliente = Cliente(nome="Empresa XYZ", email="contato@empresa.com") -session.add(cliente) -session.commit() - -# Criando uma fatura para esse cliente -fatura = Fatura( - numero="INV-2025-001", - data_emissao=date(2025, 2, 28), - data_vencimento=date(2025, 3, 30), - valor_total=1500.00, - status="pendente", - cliente_id=cliente.id -) - -# Salvando no banco -session.add(fatura) -session.commit() - - -from werkzeug.security import generate_password_hash - -# Criando um novo usuário -novo_user = user( - nome="João Silva", - email="joao@example.com", - senha_hash=generate_password_hash("minha_senha_segura") -) - diff --git a/models/invoice_item.py b/models/invoice_item.py new file mode 100644 index 0000000..70eecbe --- /dev/null +++ b/models/invoice_item.py @@ -0,0 +1,21 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +class InvoiceItem(db.Model): + id = db.Column(db.Integer, primary_key=True) + invoice_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), nullable=False) + description = db.Column(db.String(255), nullable=False) # Descrição do item + quantity = db.Column(db.Integer, nullable=False) # Quantidade + unit_price = db.Column(db.Numeric(10, 2), nullable=False) # Preço unitário + total_price = db.Column(db.Numeric(10, 2), nullable=False) # Preço total + + def __init__(self, description, quantity, unit_price, invoice_id): + self.description = description + self.quantity = quantity + self.unit_price = unit_price + self.total_price = quantity * unit_price + self.invoice_id = invoice_id + + def __repr__(self): + return f"" diff --git a/models/invoices.py b/models/invoices.py new file mode 100644 index 0000000..9872c39 --- /dev/null +++ b/models/invoices.py @@ -0,0 +1,19 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +class Invoice(db.Model): + id = db.Column(db.Integer, primary_key=True) + number = db.Column(db.String(20), unique=True, nullable=False) # Número da fatura + customer = db.Column(db.String(255), nullable=False) # Nome do cliente + issue_date = db.Column(db.Date, nullable=False) # Data de emissão + due_date = db.Column(db.Date, nullable=False) # Data de vencimento + total_amount = db.Column(db.Numeric(10, 2), nullable=False) # Valor total + status = db.Column(db.Enum('pending', 'paid', 'canceled', name='status_enum'), default='pending') # Status da fatura + created_at = db.Column(db.DateTime, default=db.func.current_timestamp()) # Data de criação + updated_at = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp()) # Última atualização + + items = db.relationship('InvoiceItem', backref='invoice', lazy=True, cascade="all, delete-orphan") + + def __repr__(self): + return f"" diff --git a/models/models.py b/models/models.py deleted file mode 100644 index 2c0d972..0000000 --- a/models/models.py +++ /dev/null @@ -1,10 +0,0 @@ -from app import db # Importa o banco de dados inicializado - -# Modelo de exemplo (Usuário) -class User(db.Model): - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(80), nullable=False) - email = db.Column(db.String(120), unique=True, nullable=False) - - def __repr__(self): - return f"" diff --git a/models/user.py b/models/user.py deleted file mode 100644 index abd7cd9..0000000 --- a/models/user.py +++ /dev/null @@ -1,17 +0,0 @@ -from sqlalchemy import Column, Integer, String, Boolean -from sqlalchemy.orm import declarative_base - -# Criando a base para os modelos -Base = declarative_base() - -class Usuario(Base): - __tablename__ = 'usuarios' # Nome da tabela no banco de dados - - id = Column(Integer, primary_key=True, autoincrement=True) # Chave primária - nome = Column(String(100), nullable=False) # Nome do usuário - email = Column(String(100), unique=True, nullable=False) # E-mail único - senha_hash = Column(String(255), nullable=False) # Senha criptografada - ativo = Column(Boolean, default=True) # Indica se o usuário está ativo - - def __repr__(self): - return f"" diff --git a/models/users.py b/models/users.py new file mode 100644 index 0000000..da83397 --- /dev/null +++ b/models/users.py @@ -0,0 +1,42 @@ +from flask_sqlalchemy import SQLAlchemy +from werkzeug.security import generate_password_hash, check_password_hash + +db = SQLAlchemy() + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + email = db.Column(db.String(255), unique=True, nullable=False) + phone_number = db.Column(db.String(15), nullable=True) + address = db.Column(db.Text, nullable=True) + date_of_birth = db.Column(db.Date, nullable=True) + password_hash = db.Column(db.String(255), nullable=False) + is_admin = db.Column(db.Boolean, default=False) + created_at = db.Column(db.DateTime, default=db.func.current_timestamp()) + + invoices = db.relationship('Invoice', backref='user', lazy=True) + + def set_password(self, password): + self.password_hash = generate_password_hash(password) + + def check_password(self, password): + return check_password_hash(self.password_hash, password) + + def __repr__(self): + return f"" + +class Invoice(db.Model): + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) # Ligação com o usuário + number = db.Column(db.String(20), unique=True, nullable=False) # Número da fatura + customer = db.Column(db.String(255), nullable=False) # Nome do cliente + issue_date = db.Column(db.Date, nullable=False) # Data de emissão + due_date = db.Column(db.Date, nullable=False) # Data de vencimento + total_amount = db.Column(db.Numeric(10, 2), nullable=False) # Valor total + status = db.Column(db.Enum('pending', 'paid', 'canceled', name='status_enum'), default='pending') # Status da fatura + created_at = db.Column(db.DateTime, default=db.func.current_timestamp()) # Data de criação + updated_at = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp()) # Última atualização + + items = db.relationship('InvoiceItem', backref='invoice', lazy=True, cascade="all, delete-orphan") + + def __repr__(self): + return f"" diff --git a/routes/crud.py b/routes/crud.py deleted file mode 100644 index 14fd02c..0000000 --- a/routes/crud.py +++ /dev/null @@ -1,18 +0,0 @@ -from database import SessionLocal -from models.models import User - -# Criando uma nova sessão -session = SessionLocal() - -# Criando um novo usuário -new_user = User(name="João", email="joao@email.com") -session.add(new_user) -session.commit() - -# Buscando todos os usuários -users = session.query(User).all() -for user in users: - print(user.id, user.name, user.email) - -# Fechando a sessão -session.close() diff --git a/routes/invoice.py b/routes/invoice.py deleted file mode 100644 index 1b811be..0000000 --- a/routes/invoice.py +++ /dev/null @@ -1,20 +0,0 @@ -from sqlalchemy import Column, Integer, String, Date, Float, ForeignKey -from sqlalchemy.orm import relationship, declarative_base - -Base = declarative_base() - -class Fatura(Base): - __tablename__ = 'faturas' # Nome da tabela no banco - - id = Column(Integer, primary_key=True, autoincrement=True) # Chave primária - numero = Column(String(50), unique=True, nullable=False) # Número da fatura - data_emissao = Column(Date, nullable=False) # Data de emissão da fatura - data_vencimento = Column(Date, nullable=False) # Data de vencimento - valor_total = Column(Float, nullable=False) # Valor total da fatura - status = Column(String(20), nullable=False, default="pendente") # Status da fatura - - cliente_id = Column(Integer, ForeignKey('clientes.id'), nullable=False) # FK para cliente - cliente = relationship("Cliente", back_populates="faturas") # Relacionamento com Cliente - - def __repr__(self): - return f""