Skip to content

Instantly share code, notes, and snippets.

@codemation
Last active November 13, 2020 08:27
Show Gist options
  • Save codemation/7ae37444370e6c233cf23da9300ecb13 to your computer and use it in GitHub Desktop.
Save codemation/7ae37444370e6c233cf23da9300ecb13 to your computer and use it in GitHub Desktop.
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