Untitled

 avatar
unknown
plain_text
a month ago
3.2 kB
0
Indexable
# Tailor App Backend (Initial Setup)
# Using Flask for backend API and SQLite for lightweight database.

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tailor_app.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

# Models
class Customer(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)
    phone = db.Column(db.String(15), unique=True, nullable=False)
    measurements = db.Column(db.Text, nullable=True)
    
class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
    description = db.Column(db.Text, nullable=False)
    status = db.Column(db.String(20), default='pending')
    due_date = db.Column(db.Date, nullable=False)
    price = db.Column(db.Float, nullable=False)

# Routes
@app.route('/customers', methods=['GET', 'POST'])
def manage_customers():
    if request.method == 'POST':
        data = request.json
        new_customer = Customer(
            name=data['name'],
            email=data['email'],
            phone=data['phone'],
            measurements=data.get('measurements', '')
        )
        db.session.add(new_customer)
        db.session.commit()
        return jsonify({"message": "Customer added successfully!"}), 201

    customers = Customer.query.all()
    return jsonify([{
        'id': customer.id,
        'name': customer.name,
        'email': customer.email,
        'phone': customer.phone,
        'measurements': customer.measurements
    } for customer in customers])

@app.route('/orders', methods=['GET', 'POST'])
def manage_orders():
    if request.method == 'POST':
        data = request.json
        new_order = Order(
            customer_id=data['customer_id'],
            description=data['description'],
            status=data.get('status', 'pending'),
            due_date=data['due_date'],
            price=data['price']
        )
        db.session.add(new_order)
        db.session.commit()
        return jsonify({"message": "Order added successfully!"}), 201

    orders = Order.query.all()
    return jsonify([{
        'id': order.id,
        'customer_id': order.customer_id,
        'description': order.description,
        'status': order.status,
        'due_date': str(order.due_date),
        'price': order.price
    } for order in orders])

@app.route('/orders/<int:order_id>', methods=['PUT', 'DELETE'])
def update_or_delete_order(order_id):
    order = Order.query.get_or_404(order_id)

    if request.method == 'PUT':
        data = request.json
        order.status = data.get('status', order.status)
        db.session.commit()
        return jsonify({"message": "Order updated successfully!"})

    db.session.delete(order)
    db.session.commit()
    return jsonify({"message": "Order deleted successfully!"})

if __name__ == '__main__':
    db.create_all()  # Initialize the database
    app.run(debug=True)
Leave a Comment