Files
hk4e/dispatch/dao/account_mongo.go
2023-02-05 07:18:43 +08:00

74 lines
1.5 KiB
Go

package dao
import (
"context"
"hk4e/dispatch/model"
"hk4e/pkg/logger"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
)
func (d *Dao) InsertAccount(account *model.Account) (primitive.ObjectID, error) {
db := d.db.Collection("account")
id, err := db.InsertOne(context.TODO(), account)
if err != nil {
return primitive.ObjectID{}, err
} else {
_id, ok := id.InsertedID.(primitive.ObjectID)
if !ok {
logger.Error("get insert id error")
return primitive.ObjectID{}, nil
}
return _id, nil
}
}
func (d *Dao) UpdateAccountFieldByFieldName(fieldName string, fieldValue any, fieldUpdateName string, fieldUpdateValue any) (int64, error) {
db := d.db.Collection("account")
updateCount, err := db.UpdateOne(
context.TODO(),
bson.D{
{fieldName, fieldValue},
},
bson.D{
{"$set", bson.D{
{fieldUpdateName, fieldUpdateValue},
}},
},
)
if err != nil {
return 0, err
} else {
return updateCount.ModifiedCount, nil
}
}
func (d *Dao) QueryAccountByField(fieldName string, fieldValue any) (*model.Account, error) {
db := d.db.Collection("account")
find, err := db.Find(
context.TODO(),
bson.D{
{fieldName, fieldValue},
},
)
if err != nil {
return nil, err
}
result := make([]*model.Account, 0)
for find.Next(context.TODO()) {
item := new(model.Account)
err := find.Decode(item)
if err != nil {
return nil, err
}
result = append(result, item)
}
if len(result) == 0 {
return nil, nil
} else {
return result[0], nil
}
}