Last active
November 13, 2020 08:27
-
-
Save codemation/7ae37444370e6c233cf23da9300ecb13 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from easyrpc.proxy import EasyRpcProxy | |
from fastapi import FastAPI | |
from aiopyql.data import Database | |
server = FastAPI() | |
@server.on_event('startup') | |
async def setup(): | |
server.data = {} | |
server.data['keystore'] = await EasyRpcProxy.create( | |
'0.0.0.0', | |
8220, | |
'/ws/database', | |
server_secret='abcd1234', | |
namespace='keystore' | |
) | |
@server.post("/{table}") | |
async def insert_or_update_table(table, data: dict): | |
for key, value in data.items(): | |
exists = not (await server.data['keystore']['select']('*', where={'key': key}) == [] ) | |
if exists: | |
await server.data['keystore']['update']( | |
value=value, | |
where={'key': key} | |
) | |
else: | |
await server.data['keystore']['insert']( | |
key=key, | |
value=value | |
) | |
@server.get("/{table}") | |
async def get_table_items(table: str): | |
return await server.data['keystore']['select']('*') | |
@server.get("/{table}/{key}") | |
async def get_table_item(table: str, key: str): | |
return await server.data['keystore']['select']('*', where={'key': key}) | |
@server.delete("/{table}") | |
async def delete_table_item(table: str, where: dict): | |
return await server.data['keystore']['delete'](where=where) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment