diff --git a/src/serra/storage.go b/src/serra/storage.go index 0332536..45ee9f4 100644 --- a/src/serra/storage.go +++ b/src/serra/storage.go @@ -50,13 +50,13 @@ func (coll Collection) storage_add(card *Card) error { } -func (coll Collection) storage_add_set(set *Set) error { +func (coll Collection) storage_add_set(set *Set) (*mongo.InsertOneResult, error) { - _, err := coll.InsertOne(context.TODO(), set) + id, err := coll.InsertOne(context.TODO(), set) if err != nil { - return err + return id, err } - return nil + return &mongo.InsertOneResult{}, nil } diff --git a/src/serra/update.go b/src/serra/update.go index 994c836..b9eb09e 100644 --- a/src/serra/update.go +++ b/src/serra/update.go @@ -41,6 +41,17 @@ var updateCmd = &cobra.Command{ continue } + // Workaround for: + // "The field 'serra_prices' must be an array but is of type null in document" + // I dont know why I need to initialize this array alement as an empty array, but $push does + // not work on null fields. + if len(set.SerraPrices) == 0 { + set_init := bson.M{ + "$set": bson.M{"serra_prices": bson.A{}}, + } + setscoll.storage_update(bson.M{"code": bson.M{"$eq": set.Code}}, set_init) + } + bar := progressbar.NewOptions(len(cards), progressbar.OptionSetWidth(50), progressbar.OptionSetDescription(fmt.Sprintf("%s, %s%s%s\t", set.ReleasedAt[0:4], Yellow, set.Code, Reset)),