This repository has been archived on 2022-06-15. You can view files and clone it, but cannot push or open issues/pull-requests.
selfprivacy-storage-api/main.py

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()