diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-07-10 22:32:52 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-07-10 22:32:54 +0100 |
commit | c3d96c745924f458846f08d90f48be0c1a4cc0ed (patch) | |
tree | 502d8c2cf583aacf440ac2f62b19b40cb3489ef9 | |
parent | b9386d5a47aace49afa99d4f3a36a895bea40697 (diff) | |
download | cheatdb-c3d96c745924f458846f08d90f48be0c1a4cc0ed.tar.xz |
Add more sort options to package API, correct documentation
Fixes #204
-rw-r--r-- | app/flatpages/help/api.md | 26 | ||||
-rw-r--r-- | app/querybuilder.py | 10 |
2 files changed, 31 insertions, 5 deletions
diff --git a/app/flatpages/help/api.md b/app/flatpages/help/api.md index 893d3b0..fd00693 100644 --- a/app/flatpages/help/api.md +++ b/app/flatpages/help/api.md @@ -60,9 +60,29 @@ Example: Supported query parameters: * `type` - Package types (`mod`, `game`, `txp`). -* `q` - Query string +* `q` - Query string. +* `author` - Filter by author. +* `tag` - Filter by tags. * `random` - When present, enable random ordering and ignore `sort`. +* `limit` - Return at most `limit` packages. * `hide` - Hide content based on [Content Flags](/help/content_flags/). -* `sort` - Sort by (`name`, `views`, `date`, `score`). -* `order` - Sort ascending (`Asc`) or descending (`desc`). +* `sort` - Sort by (`name`, `title`, `score`, `downloads`, `created_at`). +* `order` - Sort ascending (`asc`) or descending (`desc`). * `protocol_version` - Only show packages supported by this Minetest protocol version. +* `engine_version` - Only show packages supported by this Minetest engine version, eg: `5.3.0`. + + +## Topic Queries + +Example: + + /api/topics/?q=mobs + +Supported query parameters: + +* `q` - Query string. +* `sort` - Sort by (`name`, `views`, `date`). +* `order` - Sort ascending (`asc`) or descending (`desc`). +* `show_added` - Show topics that have an existing package. +* `show_discarded` - Show topics marked as discarded. +* `limit` - Return at most `limit` topics. diff --git a/app/querybuilder.py b/app/querybuilder.py index 5b75b4c..d511836 100644 --- a/app/querybuilder.py +++ b/app/querybuilder.py @@ -79,7 +79,13 @@ class QueryBuilder: to_order = None if self.order_by is None or self.order_by == "score": to_order = Package.score - elif self.order_by == "created_at": + elif self.order_by == "name": + to_order = Package.name + elif self.order_by == "title": + to_order = Package.title + elif self.order_by == "downloads": + to_order = Package.downloads + elif self.order_by == "created_at" or self.order_by == "date": to_order = Package.created_at else: abort(400) @@ -134,7 +140,7 @@ class QueryBuilder: query = query.order_by(db.asc(ForumTopic.wip), db.asc(ForumTopic.name), db.asc(ForumTopic.title)) elif self.order_by == "views": query = query.order_by(db.desc(ForumTopic.views)) - elif self.order_by == "date": + elif self.order_by == "created_at" or self.order_by == "date": query = query.order_by(db.asc(ForumTopic.created_at)) if self.search: |