refactor storage
This commit is contained in:
parent
665b7a6793
commit
f408381266
@ -9,7 +9,6 @@
|
||||
|
||||
mvp
|
||||
|
||||
* refactor cards/set to scryfall.go
|
||||
* refactor storage to have a storage object.
|
||||
* single view for card, with history
|
||||
* docker with local mounted volume and git ignore
|
||||
|
||||
@ -17,7 +17,7 @@ func Add(cards []string) {
|
||||
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
||||
|
||||
client := storage_connect()
|
||||
coll := client.Database("serra").Collection("cards")
|
||||
coll := &Collection{client.Database("serra").Collection("cards")}
|
||||
|
||||
// Loop over different cards
|
||||
for _, card := range cards {
|
||||
@ -29,7 +29,7 @@ func Add(cards []string) {
|
||||
}
|
||||
|
||||
// Write card to mongodb
|
||||
err = storage_add(coll, c)
|
||||
err = coll.storage_add(c)
|
||||
if err != nil {
|
||||
LogMessage(fmt.Sprintf("%v", err), "red")
|
||||
continue
|
||||
@ -45,11 +45,11 @@ func Cards() {
|
||||
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
||||
|
||||
client := storage_connect()
|
||||
coll := client.Database("serra").Collection("cards")
|
||||
coll := &Collection{client.Database("serra").Collection("cards")}
|
||||
|
||||
sort := bson.D{{"collectornumber", 1}}
|
||||
filter := bson.D{{}}
|
||||
cards, _ := storage_find(coll, filter, sort)
|
||||
cards, _ := coll.storage_find(filter, sort)
|
||||
|
||||
for _, card := range cards {
|
||||
fmt.Printf("%s (%s) %.2f\n", card.Name, card.Set, card.Prices.Eur)
|
||||
@ -61,7 +61,7 @@ func Sets() {
|
||||
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
||||
|
||||
client := storage_connect()
|
||||
coll := client.Database("serra").Collection("cards")
|
||||
coll := &Collection{client.Database("serra").Collection("cards")}
|
||||
|
||||
groupStage := bson.D{
|
||||
{"$group", bson.D{
|
||||
@ -72,7 +72,7 @@ func Sets() {
|
||||
}},
|
||||
}
|
||||
|
||||
sets, _ := storage_aggregate(coll, groupStage)
|
||||
sets, _ := coll.storage_aggregate(groupStage)
|
||||
for _, set := range sets {
|
||||
fmt.Printf("* %s (%.2f Eur)\n", set["_id"], set["sum"])
|
||||
}
|
||||
@ -84,11 +84,11 @@ func Update() {
|
||||
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
||||
|
||||
client := storage_connect()
|
||||
coll := client.Database("serra").Collection("cards")
|
||||
coll := &Collection{client.Database("serra").Collection("cards")}
|
||||
|
||||
sort := bson.D{{"_id", 1}}
|
||||
filter := bson.D{{}}
|
||||
cards, _ := storage_find(coll, filter, sort)
|
||||
cards, _ := coll.storage_find(filter, sort)
|
||||
|
||||
for i, card := range cards {
|
||||
fmt.Printf("Updating (%d/%d): %s (%s)...\n", i+1, len(cards), card.Name, card.SetName)
|
||||
@ -114,7 +114,7 @@ func Update() {
|
||||
"$push": bson.M{"serra_prices": bson.M{"date": primitive.NewDateTimeFromTime(time.Now()),
|
||||
"value": updated_card.Prices.Eur}}}
|
||||
|
||||
storage_update(coll, filter, update)
|
||||
coll.storage_update(filter, update)
|
||||
}
|
||||
|
||||
storage_disconnect(client)
|
||||
|
||||
@ -12,6 +12,11 @@ import (
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
// https://siongui.github.io/2017/02/11/go-add-method-function-to-type-in-external-package/
|
||||
type Collection struct {
|
||||
*mongo.Collection
|
||||
}
|
||||
|
||||
func storage_connect() *mongo.Client {
|
||||
|
||||
uri := os.Getenv("MONGODB_URI")
|
||||
@ -27,7 +32,7 @@ func storage_connect() *mongo.Client {
|
||||
return client
|
||||
}
|
||||
|
||||
func storage_add(coll *mongo.Collection, card *Card) error {
|
||||
func (coll Collection) storage_add(card *Card) error {
|
||||
|
||||
card.SerraUpdated = primitive.NewDateTimeFromTime(time.Now())
|
||||
|
||||
@ -39,7 +44,7 @@ func storage_add(coll *mongo.Collection, card *Card) error {
|
||||
|
||||
}
|
||||
|
||||
func storage_find(coll *mongo.Collection, filter, sort bson.D) ([]Card, error) {
|
||||
func (coll Collection) storage_find(filter, sort bson.D) ([]Card, error) {
|
||||
|
||||
opts := options.Find().SetSort(sort)
|
||||
cursor, err := coll.Find(context.TODO(), filter, opts)
|
||||
@ -56,7 +61,7 @@ func storage_find(coll *mongo.Collection, filter, sort bson.D) ([]Card, error) {
|
||||
|
||||
}
|
||||
|
||||
func storage_aggregate(coll *mongo.Collection, groupstage bson.D) ([]primitive.M, error) {
|
||||
func (coll Collection) storage_aggregate(groupstage bson.D) ([]primitive.M, error) {
|
||||
|
||||
// db.cards.aggregate([ {$group: { _id: "$setname", sum: { $sum: "$prices.eur"}}}])
|
||||
opts := options.Aggregate().SetMaxTime(2 * time.Second)
|
||||
@ -78,7 +83,7 @@ func storage_aggregate(coll *mongo.Collection, groupstage bson.D) ([]primitive.M
|
||||
|
||||
}
|
||||
|
||||
func storage_update(coll *mongo.Collection, filter, update bson.M) error {
|
||||
func (coll Collection) storage_update(filter, update bson.M) error {
|
||||
|
||||
// Call the driver's UpdateOne() method and pass filter and update to it
|
||||
_, err := coll.UpdateOne(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user