95 lines
2.1 KiB
Python
95 lines
2.1 KiB
Python
from flask import Flask, request
|
|
from flask_restful import Resource, Api, reqparse
|
|
import pyodbc
|
|
|
|
|
|
def main():
|
|
|
|
global databaseConnectionDescriptor
|
|
global databaseSelector
|
|
|
|
databaseSelector.execute("SELECT Initialized FROM system")
|
|
|
|
for row in databaseSelector:
|
|
print(row)
|
|
if not row[0] == True:
|
|
InitializeStorage(databaseSelector)
|
|
|
|
|
|
app = Flask(__name__)
|
|
storage = Api(app)
|
|
|
|
if __name__ == '__main__':
|
|
app.run(port=5051, debug=False)
|
|
|
|
@app.route("/storage/query", methods=["GET"])
|
|
def query():
|
|
ExecuteArbitraryQuery(databaseSelector, request.args.get("query"))
|
|
|
|
@app.route("/storage/write", methods=["PUT"])
|
|
def write():
|
|
InsertRowIntoTable(databaseSelector,
|
|
request.headers.get("X-Table"),
|
|
request.headers.get("X-Rows"),
|
|
request.headers.get("X-Values")
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ExecuteArbitraryQuery(databaseSelector, query: str):
|
|
databaseSelector.execute(query)
|
|
|
|
databaseConnectionDescriptor.commit()
|
|
|
|
def InsertRowIntoTable(databaseSelector, table: str, rows: str, values: str):
|
|
databaseSelector.execute(
|
|
"INSERT INTO " + table + "(" + rows + ")" +
|
|
"VALUES" + "(" + values + ");"
|
|
)
|
|
|
|
def InitializeStorage(databasseSelector):
|
|
databaseSelector.execute(
|
|
'''
|
|
CREATE TABLE principal (
|
|
Owner TINYTEXT,
|
|
Data LONGTEXT,
|
|
Hash LONGTEXT,
|
|
Writeable BOOLEAN
|
|
);
|
|
'''
|
|
)
|
|
|
|
databaseSelector.execute(
|
|
'''
|
|
CREATE TABLE IF NOT EXISTS system (
|
|
Initialized BOOLEAN
|
|
);
|
|
'''
|
|
)
|
|
|
|
databaseSelector.execute(
|
|
'''
|
|
INSERT INTO system (Initialized)
|
|
VALUES (True);
|
|
'''
|
|
)
|
|
|
|
print("[INFO] Storage initialized!")
|
|
|
|
databaseConnectionDescriptor.commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
databaseConnectionDescriptor = pyodbc.connect('DRIVER={Devart ODBC Driver for SQLite};Direct=True;Database=selfprivacy-storage.db;String Types= Unicode')
|
|
databaseSelector = databaseConnectionDescriptor.cursor()
|
|
main() |