commit a10790da6044f6ec831ac9f0dad77fa35ba7c3df Author: Antero Asafe Date: Wed Mar 26 22:13:35 2025 -0400 first commit diff --git a/__pycache__/config.cpython-311.pyc b/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000..bcbf44e Binary files /dev/null and b/__pycache__/config.cpython-311.pyc differ diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..224b491 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,16 @@ +from flask import Flask +from app.database import db +from app.routes.user_routes import user_bp +from app.routes.invoice_routes import invoice_bp + +def create_app(): + app = Flask(__name__) + app.config.from_object("config") + + db.init_app(app) + + # Registrar blueprints + app.register_blueprint(user_bp, url_prefix="/users") + app.register_blueprint(invoice_bp, url_prefix="/invoices") + + return app diff --git a/app/__pycache__/__init__.cpython-311.pyc b/app/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..caa0f70 Binary files /dev/null and b/app/__pycache__/__init__.cpython-311.pyc differ diff --git a/app/__pycache__/database.cpython-311.pyc b/app/__pycache__/database.cpython-311.pyc new file mode 100644 index 0000000..968d7af Binary files /dev/null and b/app/__pycache__/database.cpython-311.pyc differ diff --git a/app/database.py b/app/database.py new file mode 100644 index 0000000..f0b13d6 --- /dev/null +++ b/app/database.py @@ -0,0 +1,3 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() diff --git a/app/models/__init__.py b/app/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models/__pycache__/__init__.cpython-311.pyc b/app/models/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..49245a3 Binary files /dev/null and b/app/models/__pycache__/__init__.cpython-311.pyc differ diff --git a/app/models/__pycache__/invoice.cpython-311.pyc b/app/models/__pycache__/invoice.cpython-311.pyc new file mode 100644 index 0000000..5d41531 Binary files /dev/null and b/app/models/__pycache__/invoice.cpython-311.pyc differ diff --git a/app/models/__pycache__/user.cpython-311.pyc b/app/models/__pycache__/user.cpython-311.pyc new file mode 100644 index 0000000..7bb0fb0 Binary files /dev/null and b/app/models/__pycache__/user.cpython-311.pyc differ diff --git a/app/models/invoice.py b/app/models/invoice.py new file mode 100644 index 0000000..8353f80 --- /dev/null +++ b/app/models/invoice.py @@ -0,0 +1,6 @@ +from app.database import db + +class Invoice(db.Model): + id = db.Column(db.Integer, primary_key=True) + amount = db.Column(db.Float, nullable=False) + user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) diff --git a/app/models/user.py b/app/models/user.py new file mode 100644 index 0000000..e147797 --- /dev/null +++ b/app/models/user.py @@ -0,0 +1,7 @@ +from app.database import db + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(100), nullable=False) + email = db.Column(db.String(100), unique=True, nullable=False) + invoices = db.relationship("Invoice", backref="user", lazy=True) diff --git a/app/routes/__init__.py b/app/routes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/routes/__pycache__/__init__.cpython-311.pyc b/app/routes/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..5b588a2 Binary files /dev/null and b/app/routes/__pycache__/__init__.cpython-311.pyc differ diff --git a/app/routes/__pycache__/invoice_routes.cpython-311.pyc b/app/routes/__pycache__/invoice_routes.cpython-311.pyc new file mode 100644 index 0000000..e89114a Binary files /dev/null and b/app/routes/__pycache__/invoice_routes.cpython-311.pyc differ diff --git a/app/routes/__pycache__/user_routes.cpython-311.pyc b/app/routes/__pycache__/user_routes.cpython-311.pyc new file mode 100644 index 0000000..2256179 Binary files /dev/null and b/app/routes/__pycache__/user_routes.cpython-311.pyc differ diff --git a/app/routes/invoice_routes.py b/app/routes/invoice_routes.py new file mode 100644 index 0000000..20c8c69 --- /dev/null +++ b/app/routes/invoice_routes.py @@ -0,0 +1,10 @@ +from flask import Blueprint, jsonify +from app.models.invoice import Invoice +from app.database import db + +invoice_bp = Blueprint("invoices", __name__) + +@invoice_bp.route("/", methods=["GET"]) +def get_invoices(): + invoices = Invoice.query.all() + return jsonify([{"id": i.id, "amount": i.amount, "user_id": i.user_id} for i in invoices]) diff --git a/app/routes/user_routes.py b/app/routes/user_routes.py new file mode 100644 index 0000000..08c18d6 --- /dev/null +++ b/app/routes/user_routes.py @@ -0,0 +1,23 @@ +from flask import Blueprint, jsonify, request +from app.models.user import User +from app.database import db + +user_bp = Blueprint("users", __name__) + +@user_bp.route("/", methods=["GET"]) +def get_users(): + users = User.query.all() + return jsonify([{"id": u.id, "name": u.name, "email": u.email} for u in users]) + +@user_bp.route("/", methods=["POST"]) +def create_user(): + data = request.get_json() + + if not data or not data.get("name") or not data.get("email"): + return jsonify({"error": "Nome e email são obrigatórios"}), 400 + + new_user = User(name=data["name"], email=data["email"]) + db.session.add(new_user) + db.session.commit() + + return jsonify({"message": "Usuário criado com sucesso!", "id": new_user.id}), 201 \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..0e7fcbf --- /dev/null +++ b/config.py @@ -0,0 +1,4 @@ +import os + +SQLALCHEMY_DATABASE_URI = "sqlite:///database.db" +SQLALCHEMY_TRACK_MODIFICATIONS = False diff --git a/instance/database.db b/instance/database.db new file mode 100644 index 0000000..4105ad8 Binary files /dev/null and b/instance/database.db differ diff --git a/run.py b/run.py new file mode 100644 index 0000000..2d75e1e --- /dev/null +++ b/run.py @@ -0,0 +1,10 @@ +from app import create_app +from app.database import db + +app = create_app() + +if __name__ == "__main__": + with app.app_context(): + db.create_all() + print("Banco de dados criado com sucesso!") + app.run(debug=True) \ No newline at end of file