From af4af39adc86b6b41df6b12ce4b33cc63d8b8282 Mon Sep 17 00:00:00 2001 From: Florian Baumann Date: Thu, 27 Apr 2023 08:05:29 +0200 Subject: [PATCH] Filter for foil and reserved list. --- src/serra/card.go | 17 ++++++++++++++--- src/serra/root.go | 11 ++++++----- src/serra/web.go | 2 +- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/serra/card.go b/src/serra/card.go index 88bf67c..59bf82c 100644 --- a/src/serra/card.go +++ b/src/serra/card.go @@ -17,6 +17,8 @@ func init() { cardCmd.Flags().StringVarP(&oracle, "oracle", "o", "", "Contains string in card text") cardCmd.Flags().StringVarP(&cardType, "type", "t", "", "Contains string in card type line") cardCmd.Flags().BoolVarP(&detail, "detail", "d", false, "Show details for cards (url)") + cardCmd.Flags().BoolVarP(&reserved, "reserved", "w", false, "If card is on reserved list") + cardCmd.Flags().BoolVarP(&foil, "foil", "f", false, "If card is foil list") rootCmd.AddCommand(cardCmd) } @@ -30,8 +32,8 @@ otherwise you'll get a list of cards as a search result.`, SilenceErrors: true, RunE: func(cmd *cobra.Command, cards []string) error { if len(cards) == 0 { - card_list := Cards(rarity, set, sortby, name, oracle, cardType) - showCardList(card_list, detail) + cardList := Cards(rarity, set, sortby, name, oracle, cardType, reserved, foil) + showCardList(cardList, detail) } else { ShowCard(cards) } @@ -58,7 +60,7 @@ func ShowCard(cardids []string) { } } -func Cards(rarity, set, sortby, name, oracle, cardType string) []Card { +func Cards(rarity, set, sortby, name, oracle, cardType string, reserved, foil bool) []Card { client := storageConnect() coll := &Collection{client.Database("serra").Collection("cards")} defer storageDisconnect(client) @@ -108,7 +110,16 @@ func Cards(rarity, set, sortby, name, oracle, cardType string) []Card { filter = append(filter, bson.E{"typeline", bson.D{{"$regex", ".*" + cardType + ".*"}, {"$options", "i"}}}) } + if reserved { + filter = append(filter, bson.E{"reserved", true}) + } + + if foil { + filter = append(filter, bson.E{"serra_count_foil", bson.D{{"$gt", 0}}}) + } + cards, _ := coll.storageFind(filter, sortStage) + fmt.Println(filter) // This is needed because collectornumbers are strings (ie. "23a") but still we // want it to be sorted numerically ... 1,2,3,10,11,100. diff --git a/src/serra/root.go b/src/serra/root.go index 3afd79a..d47d15f 100644 --- a/src/serra/root.go +++ b/src/serra/root.go @@ -9,22 +9,23 @@ import ( var ( Version = "unknown" + address string + cardType string count int64 detail bool - limit float64 + foil bool interactive bool + limit float64 name string oracle string + port uint64 rarity string + reserved bool set string sinceBeginning bool sinceLastUpdate bool sortby string - cardType string unique bool - foil bool - address string - port uint64 ) var rootCmd = &cobra.Command{ diff --git a/src/serra/web.go b/src/serra/web.go index 26caab2..4d57c3d 100644 --- a/src/serra/web.go +++ b/src/serra/web.go @@ -47,7 +47,7 @@ func startWeb() error { func landingPage(c *gin.Context) { var query Query if c.ShouldBind(&query) == nil { - cards := Cards("", query.Set, query.Sort, query.Name, "", "") + cards := Cards("", query.Set, query.Sort, query.Name, "", "", false, false) sets := Sets("release") c.HTML(http.StatusOK, "index.tmpl", gin.H{ "title": "Serra",