generated from PenaSide/GolangTemplate
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/errors"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
|
)
|
|
|
|
type GoogleRepository struct {
|
|
mongoDB *mongo.Collection
|
|
logger *logrus.Logger
|
|
}
|
|
|
|
func NewGoogleRepository(mongoDB *mongo.Collection, logger *logrus.Logger) *GoogleRepository {
|
|
return &GoogleRepository{
|
|
mongoDB: mongoDB,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
func (receiver *GoogleRepository) UpdateUser(ctx context.Context, user *models.GoogleUserInformation) (*models.GoogleUserInformation, error) {
|
|
var googleUserInformation models.GoogleUserInformation
|
|
|
|
updateOptions := options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(options.After)
|
|
filter := bson.D{{Key: "sub", Value: user.Subject}}
|
|
update := bson.D{{Key: "$set", Value: user}}
|
|
|
|
if err := receiver.mongoDB.FindOneAndUpdate(ctx, filter, update, updateOptions).Decode(&googleUserInformation); err != nil {
|
|
receiver.logger.Errorf("failed decode google user information: %v", err)
|
|
|
|
return nil, errors.ErrDecodeRecord
|
|
}
|
|
|
|
return &googleUserInformation, nil
|
|
}
|
|
|
|
func (receiver *GoogleRepository) FindUserBySubject(_ context.Context, _ string) (*models.GoogleUserInformation, error) {
|
|
return nil, errors.ErrMethodNotImplemented
|
|
}
|
|
|
|
func (receiver *GoogleRepository) InsertUser(_ context.Context, _ *models.GoogleUserInformation) (*models.GoogleUserInformation, error) {
|
|
return nil, errors.ErrMethodNotImplemented
|
|
}
|