backend/db_handler/mongo/mongo_users_db_handler.go
2025-03-13 23:58:00 +02:00

82 lines
1.9 KiB
Go

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
}