a simple NoSQL runtime for small demos and proof-of-concepts
1from typing import *
2from pathlib import Path
3from fastapi import FastAPI
4from database import MetaDatabase
5
6PROJECT_PATH = Path(__file__).parent
7METADB_PATH = PROJECT_PATH / ".pocapi"
8
9metadb = MetaDatabase(METADB_PATH)
10app = FastAPI()
11
12# TODO delete database/table
13
14@app.post("/{dbname}/{tablename}/edit")
15async def edit(dbname, tablename, jq_filter: str, args: Dict[str, Any]):
16 """
17 edit a table using a jq filter.
18 results are saved back to the table.
19 """
20 await metadb[dbname].edit(tablename, jq_filter, args)
21
22@app.post("/{dbname}/{tablename}/query")
23async def query(dbname, tablename, jq_filter: str, args: Dict[str, Any]):
24 """
25 query a table using a jq filter.
26 results are returned.
27 """
28 return await metadb[dbname].query(tablename, jq_filter, args)