diff --git a/.gitignore b/.gitignore index e69de29..9f73bb5 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +selfprivacy-storage.db \ No newline at end of file diff --git a/main.py b/main.py index 979c2ab..05102b2 100644 --- a/main.py +++ b/main.py @@ -1,28 +1,95 @@ -from flask import Flask +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 + ")" + "VALUES" + "(" + values + ");" ) -databaseConnectionDescriptor = pyodbc.connect('DRIVER={Devart ODBC Driver for SQLite};Direct=True;Database=selfprivacy-storage;String Types= Unicode') +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() \ No newline at end of file diff --git a/selfprivacy-storage.db-journal b/selfprivacy-storage.db-journal new file mode 100644 index 0000000..a64a5a9 Binary files /dev/null and b/selfprivacy-storage.db-journal differ