113 lines
3.3 KiB
Python
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)
|