From c5ec5d46a43aa384c27cbe9cd4176a4f7f8b5710 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sun, 20 Feb 2022 10:29:10 -0800 Subject: [PATCH] More filter options for skins --- .../api/graphql/SkinsConnection.ts | 24 +++++++++++++++---- .../skin-database/api/graphql/schema.graphql | 17 ++++++++++++- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/packages/skin-database/api/graphql/SkinsConnection.ts b/packages/skin-database/api/graphql/SkinsConnection.ts index 4daf8990..c091f5d3 100644 --- a/packages/skin-database/api/graphql/SkinsConnection.ts +++ b/packages/skin-database/api/graphql/SkinsConnection.ts @@ -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; diff --git a/packages/skin-database/api/graphql/schema.graphql b/packages/skin-database/api/graphql/schema.graphql index 5d6088cd..21c571be 100644 --- a/packages/skin-database/api/graphql/schema.graphql +++ b/packages/skin-database/api/graphql/schema.graphql @@ -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 {