async def get_db(db_name: str, where_query: str, where_values: Optional[DataType] = None, limit: Optional[int] = None): res = dict() res["status"] = "error" if db_name not in db.get_all_tables(): res["error"] = f"'{db_name}' is not a valid database, see /api/db" return res model = models.get(db_name) if model is None: res["status"] = "unknown" return res fields = list(model.__fields__.keys()) schema_model = jsto(model.schema_json()) where = None if where_query is not None: where = where_query, where_values if where_values is None: where = where_query, tuple() entries = db.lookup(db_name, fields, where=where, limit=limit) res["status"] = "success" res["data"] = dict() res["data"]["entries"] = entries res["data"]["schema"] = schema_model return res
def parse(self): sql = self._parse_sql() model = self._parse_model() for schema_file in self.path.glob("*.json"): schema_name = schema_file.name.replace(".json", "") schema_data = jsto(schema_file.read_text()) if schema_data is None: continue self.raw[schema_name] = schema_data for key, value in schema_data.items(): entry = schema_name, key, value sql.send(entry) model.send(entry) if self.debug: print("Graph", self.graph) for table, entries in self.sql.items(): print("SQL", table) for entry in entries: print("\t", entry) meta_entries = self.sql_meta[table] if len(meta_entries) > 0: for m_entry in meta_entries: print("\t", m_entry) print()
async def get_schema(schema_name: str): res = dict() model = models.get(schema_name) if model is None: res["status"] = "unknown" return res schema_model = jsto(model.schema_json()) res["status"] = "success" res["data"] = schema_model return res
def is_valid(db_name: str, data: KeyedDict) -> int: res = dict() res["status"] = "error" if db_name not in db.get_all_tables(): res["data"] = f"'{db_name}' is not a valid database, see /api/db" return 1, res model = models.get(db_name) if model is None: res["status"] = "unknown" res["data"] = None return 2, res schema_model = jsto(model.schema_json()) try: validate(instance=data, schema=schema_model) return 0, res except ValidationError as e: res["data"] = str(e) return 3, res
async def get_dynamic_schema(): res = dict() res["status"] = "success" res["data"] = jsto(DynamicEntry.schema_json()) return res