Added storage schema creation and storage initialization logic
parent
642bb02d32
commit
725fde29c9
|
@ -0,0 +1 @@
|
||||||
|
selfprivacy-storage.db
|
73
main.py
73
main.py
|
@ -1,28 +1,95 @@
|
||||||
from flask import Flask
|
from flask import Flask, request
|
||||||
from flask_restful import Resource, Api, reqparse
|
from flask_restful import Resource, Api, reqparse
|
||||||
import pyodbc
|
import pyodbc
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
global databaseConnectionDescriptor
|
global databaseConnectionDescriptor
|
||||||
global databaseSelector
|
global databaseSelector
|
||||||
|
|
||||||
|
databaseSelector.execute("SELECT Initialized FROM system")
|
||||||
|
|
||||||
|
for row in databaseSelector:
|
||||||
|
print(row)
|
||||||
|
if not row[0] == True:
|
||||||
|
InitializeStorage(databaseSelector)
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
storage = Api(app)
|
storage = Api(app)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(port=5051, debug=False)
|
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):
|
def ExecuteArbitraryQuery(databaseSelector, query: str):
|
||||||
databaseSelector.execute(query)
|
databaseSelector.execute(query)
|
||||||
|
|
||||||
|
databaseConnectionDescriptor.commit()
|
||||||
|
|
||||||
def InsertRowIntoTable(databaseSelector, table: str, rows: str, values: str):
|
def InsertRowIntoTable(databaseSelector, table: str, rows: str, values: str):
|
||||||
databaseSelector.execute(
|
databaseSelector.execute(
|
||||||
"INSERT INTO " + table + "(" + rows + ")" +
|
"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()
|
databaseSelector = databaseConnectionDescriptor.cursor()
|
||||||
main()
|
main()
|
Binary file not shown.
Reference in New Issue