package mongo import ( "context" "git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler" "git.acooldomain.co/server-manager/backend-kubernetes-go/models" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) type MongoDbUserHandler struct { con *mongo.Client collectionName string databaseName string } func (self *MongoDbUserHandler) GetUser(username string) (*dbhandler.User, error) { users, err := self.con.Database(self.databaseName).Collection(self.collectionName).Find(context.TODO(), bson.D{bson.E{Key: "username", Value: username}}) if err != nil { return nil, err } var user dbhandler.User err = users.Decode(&user) if err != nil { return nil, err } return &user, nil } func (self *MongoDbUserHandler) ListUsers() ([]dbhandler.User, error) { users, err := self.con.Database(self.databaseName).Collection(self.collectionName).Find(context.TODO(), bson.D{}) if err != nil { return nil, err } var response []dbhandler.User users.All(nil, &response) return response, nil } func (self *MongoDbUserHandler) CreateUser(user dbhandler.User) error { _, err := self.con.Database(self.databaseName).Collection(self.collectionName).InsertOne(context.TODO(), &dbhandler.User{ Username: user.Username, Email: user.Email, Nickname: user.Nickname, }, &options.InsertOneOptions{}) if err != nil { return err } return nil } func NewMMongoDbUsersHandler(config models.MongoDBConfig) (*MongoDbUserHandler, error) { clientOptions := options.Client().ApplyURI(config.Url).SetAuth(options.Credential{ Username: config.Username, Password: config.Password, }) client, err := mongo.Connect(context.TODO(), clientOptions) if err != nil { return nil, err } return &MongoDbUserHandler{ con: client, databaseName: config.Database, collectionName: config.Collection, }, nil }