aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2020-07-10 22:32:52 +0100
committerrubenwardy <rw@rubenwardy.com>2020-07-10 22:32:54 +0100
commitc3d96c745924f458846f08d90f48be0c1a4cc0ed (patch)
tree502d8c2cf583aacf440ac2f62b19b40cb3489ef9
parentb9386d5a47aace49afa99d4f3a36a895bea40697 (diff)
downloadcheatdb-c3d96c745924f458846f08d90f48be0c1a4cc0ed.tar.xz
Add more sort options to package API, correct documentation
Fixes #204
-rw-r--r--app/flatpages/help/api.md26
-rw-r--r--app/querybuilder.py10
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: