diff --git a/model/sqlite_model.py b/model/sqlite_model.py index 31f685f..8ff8d1c 100644 --- a/model/sqlite_model.py +++ b/model/sqlite_model.py @@ -99,3 +99,7 @@ class SqliteModel: squad[pretty_key] = squad.pop(key) return squads + + def name2tags(self, name: str) -> list[dict]: + v = self.get_db().execute(sqlite_sql_requests.name2tags, {'name': name}).fetchall() + return v diff --git a/model/sqlite_sql_requests.py b/model/sqlite_sql_requests.py index 448d773..391c5e5 100644 --- a/model/sqlite_sql_requests.py +++ b/model/sqlite_sql_requests.py @@ -43,3 +43,12 @@ from squadrons_current_data where tag like :tag order by platform; """ + +name2tags = """select + platform, + squad_id, + updated as updated_at, + name, + tag +from squadrons_current_data +where lower(name) = lower(:name);""" diff --git a/web/__init__.py b/web/__init__.py index 8318a3d..bd32710 100644 --- a/web/__init__.py +++ b/web/__init__.py @@ -67,6 +67,11 @@ class SquadsInfoByTag: resp.text = json.dumps(model_answer) +class SquadsName2Tags: + def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, name: str): + resp.content_type = falcon.MEDIA_JSON + resp.text = json.dumps(model.name2tags(name)) + class AppFixedLogging(falcon.App): def _python_error_handler(self, req: falcon.request.Request, resp: falcon.response.Response, error, params): __exception__ = error @@ -79,6 +84,7 @@ application.add_route('/squads/now/by-tag/{details_type}/{tag}', SquadsInfoByTag application.add_route('/api/squads/now/by-tag/{details_type}/{tag}', SquadsInfoByTag(is_pattern=False)) application.add_route('/api/squads/now/search/by-tag/{details_type}/{tag}', SquadsInfoByTag(is_pattern=True)) +application.add_route('/api/squads/now/by-name/{name}', SquadsName2Tags()) if __name__ == '__main__': import waitress