32 lines
890 B
Go
32 lines
890 B
Go
package database
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/yonwoo9/go-comtrade"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// StorageComtradeIntoMongoDB return the result of storing comtrade data into mongoDB
|
|
func StorageComtradeIntoMongoDB(ctx context.Context, comtradeData *comtrade.Comtrade, dbName string, client *mongo.Client, logger *zap.Logger) error {
|
|
collection := client.Database(dbName).Collection(comtradeData.Conf.StationName)
|
|
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
|
|
defer cancel()
|
|
|
|
comtradeBson, err := bson.Marshal(comtradeData)
|
|
if err != nil {
|
|
logger.Error("bson marshal comtrade data failed", zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
_, err = collection.InsertOne(ctx, comtradeBson)
|
|
if err != nil {
|
|
logger.Error("insert comtrade data into mongoDB failed", zap.Error(err))
|
|
return err
|
|
}
|
|
return nil
|
|
}
|