Files
Homepage/backend/order-service.py

113 lines
3.3 KiB
Python

from flask import Flask, request, jsonify
import sqlite3
import os
import json
from datetime import datetime
app = Flask(__name__)
# Database setup
DB_PATH = '/data/services-order.db'
os.makedirs('/data', exist_ok=True)
def init_db():
"""Initialize the database with orders table"""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS service_order (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT NOT NULL DEFAULT 'default',
order_data TEXT NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
conn.close()
# Initialize database on startup
init_db()
@app.route('/api/order', methods=['GET'])
def get_order():
"""Get the saved service order"""
user_id = request.args.get('user_id', 'default')
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute(
'SELECT order_data FROM service_order WHERE user_id = ? ORDER BY updated_at DESC LIMIT 1',
(user_id,)
)
row = cursor.fetchone()
conn.close()
if row:
return jsonify(json.loads(row[0])), 200
else:
return jsonify({}), 200
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/api/order', methods=['POST'])
def save_order():
"""Save the service order"""
user_id = request.json.get('user_id', 'default')
order_data = request.json.get('order', {})
if not order_data:
return jsonify({'error': 'No order data provided'}), 400
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# Check if user already has an order
cursor.execute('SELECT id FROM service_order WHERE user_id = ?', (user_id,))
existing = cursor.fetchone()
if existing:
# Update existing order
cursor.execute(
'UPDATE service_order SET order_data = ?, updated_at = CURRENT_TIMESTAMP WHERE user_id = ?',
(json.dumps(order_data), user_id)
)
else:
# Insert new order
cursor.execute(
'INSERT INTO service_order (user_id, order_data) VALUES (?, ?)',
(user_id, json.dumps(order_data))
)
conn.commit()
conn.close()
return jsonify({'success': True, 'message': 'Order saved'}), 200
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/api/order', methods=['DELETE'])
def delete_order():
"""Delete saved order (reset to default)"""
user_id = request.args.get('user_id', 'default')
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('DELETE FROM service_order WHERE user_id = ?', (user_id,))
conn.commit()
conn.close()
return jsonify({'success': True, 'message': 'Order deleted'}), 200
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/health', methods=['GET'])
def health():
"""Health check endpoint"""
return jsonify({'status': 'ok'}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8082)