79 lines
1.7 KiB
Go
79 lines
1.7 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 {
|
|
dbhandler.UsersDBHandler
|
|
collection *mongo.Collection
|
|
}
|
|
|
|
func (self *MongoDbUserHandler) GetUser(username string) (*dbhandler.User, error) {
|
|
users, err := self.collection.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.collection.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.collection.InsertOne(context.TODO(), &dbhandler.User{
|
|
Username: user.Username,
|
|
Email: user.Email,
|
|
Nickname: user.Nickname,
|
|
}, &options.InsertOneOptions{})
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func NewUsersHandler(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{
|
|
collection: client.Database(config.Database).Collection(config.Collection),
|
|
}, nil
|
|
}
|