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