69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
import sqlite3
|
|
import sys
|
|
from flask import Flask, request, jsonify
|
|
app = Flask(__name__)
|
|
|
|
DATABASE='/data/database.sqlite3'
|
|
db = sqlite3.connect(DATABASE)
|
|
cu = db.cursor()
|
|
db.execute('SELECT name FROM sqlite_master')
|
|
if len(cu.fetchall()) == 0:
|
|
print('creating database schema...')
|
|
db.execute('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT UNIQUE)')
|
|
db.execute('CREATE TABLE IF NOT EXISTS gateway (id INTEGER PRIMARY KEY, name TEXT UNIQUE, user INTEGER REFERENCES user(id))')
|
|
db.commit()
|
|
cu.close()
|
|
db.close()
|
|
|
|
@app.route('/')
|
|
def hello_world():
|
|
return 'It works!'
|
|
|
|
@app.route('/users', methods=['GET'])
|
|
def get_users():
|
|
db = sqlite3.connect(DATABASE)
|
|
cu = db.cursor()
|
|
|
|
users = []
|
|
for row in cu.execute('SELECT id, name FROM user'):
|
|
users.append({'id': row[0], 'name': row[1]})
|
|
|
|
cu.close()
|
|
db.close()
|
|
return jsonify(users)
|
|
|
|
@app.route('/users', methods=['POST'])
|
|
def post_users():
|
|
db = sqlite3.connect(DATABASE)
|
|
cu = db.cursor()
|
|
|
|
name = request.json['name']
|
|
print('creating ' + str(name))
|
|
|
|
try:
|
|
cu.execute('INSERT INTO user (name) VALUES (?)', (name,))
|
|
return jsonify({'status': 'ok'})
|
|
except sqlite3.Error as e:
|
|
return jsonify({'status': 'error', 'message': str(e)}), 409
|
|
finally:
|
|
db.commit()
|
|
cu.close()
|
|
db.close()
|
|
|
|
@app.route('/gateways', methods=['GET'])
|
|
def get_gateway():
|
|
db = sqlite3.connect(DATABASE)
|
|
cu = db.cursor()
|
|
|
|
gateways = []
|
|
for row in cu.execute('SELECT id, name, user FROM gateway'):
|
|
gateways.append({'id': row[0], 'name': row[1], 'user': row[2], 'network': row[3]})
|
|
|
|
cu.close()
|
|
db.close()
|
|
return jsonify(gateways)
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host="::", port=5000, debug=True)
|
|
|