More filter options for skins

This commit is contained in:
Jordan Eldredge 2022-02-20 10:29:10 -08:00
parent 4b64a69f49
commit c5ec5d46a4
2 changed files with 36 additions and 5 deletions

View file

@ -17,10 +17,26 @@ export default class SkinsConnection {
_getQuery() {
let query = knex("skins").where({ skin_type: 1 });
if (this._filter === "APPROVED") {
query = query
.leftJoin("skin_reviews", "skin_reviews.skin_md5", "=", "skins.md5")
.where("review", "APPROVED");
// TODO: What happens if there are multiple tweets/reviews?
// Do we return multiple instances of that skin?
switch (this._filter) {
case "APPROVED":
query = query
.leftJoin("skin_reviews", "skin_reviews.skin_md5", "=", "skins.md5")
.where("review", "APPROVED");
break;
case "REJECTED":
query = query
.leftJoin("skin_reviews", "skin_reviews.skin_md5", "=", "skins.md5")
.where("review", "REJECTED");
break;
case "NSFW":
query = query
.leftJoin("skin_reviews", "skin_reviews.skin_md5", "=", "skins.md5")
.where("review", "NSFW");
break;
case "TWEETED":
query = query.leftJoin("tweets", "tweet.skin_md5", "=", "skins.md5");
}
return query;

View file

@ -248,9 +248,24 @@ enum SkinsSortOption {
enum SkinsFilterOption {
"""
All the skins that have been approved for tweeting
Only the skins that have been approved for tweeting
"""
APPROVED
"""
Only the skins that have been rejected for tweeting
"""
REJECTED
"""
Only the skins that have been marked NSFW
"""
NSFW
"""
Only the skins that have been tweeted
"""
TWEETED
}
type Query {