package dao import ( "cds/models" "container/list" "context" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo/options" ) func GetGameByAppId(id uint) (game *models.Game, err error) { db, _ := get() defer disconnect(db.Client()) coll := db.Collection("games") var result models.Game err = coll.FindOne(context.TODO(), bson.D{{"appid", id}}).Decode(&result) if err != nil { return nil, err } else { return &result, nil } } func GetGameById(id string) (game *models.Game, err error) { db, _ := get() defer disconnect(db.Client()) coll := db.Collection("games") objectId, err := primitive.ObjectIDFromHex(id) var result models.Game err = coll.FindOne(context.TODO(), bson.D{{"_id", objectId}}).Decode(&result) if err != nil { return nil, err } else { return &result, nil } } func SearchSimilarNames(name string) (ret *list.List, err error) { ret = list.New() db, _ := get() defer disconnect(db.Client()) coll := db.Collection("games") regex := bson.D{{"$regex", ".*" + name + ".*"}} opt := options.Find().SetLimit(10) var result models.Game cur, err := coll.Find(context.TODO(), bson.D{{"name", regex}}, opt) if err != nil { return nil, err } for cur.Next(context.TODO()) { err = cur.Decode(&result) if err != nil { return nil, err } else { ret.PushBack(result) } } return ret, nil }