added validation; DB is global now
This commit is contained in:
@@ -1,24 +1,18 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"GoMembership/internal/database"
|
||||
"GoMembership/internal/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type BankAccountRepository interface {
|
||||
type BankAccountRepositoryInterface interface {
|
||||
CreateBankAccount(account *models.BankAccount) (int64, error)
|
||||
}
|
||||
|
||||
type bankAccountRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
type BankAccountRepository struct{}
|
||||
|
||||
func NewBankAccountRepository(db *gorm.DB) BankAccountRepository {
|
||||
return &bankAccountRepository{db}
|
||||
}
|
||||
|
||||
func (repo *bankAccountRepository) CreateBankAccount(account *models.BankAccount) (int64, error) {
|
||||
result := repo.db.Create(account)
|
||||
func (repo *BankAccountRepository) CreateBankAccount(account *models.BankAccount) (int64, error) {
|
||||
result := database.DB.Create(account)
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
}
|
||||
|
||||
@@ -1,24 +1,18 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"GoMembership/internal/database"
|
||||
"GoMembership/internal/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type ConsentRepository interface {
|
||||
type ConsentRepositoryInterface interface {
|
||||
CreateConsent(consent *models.Consent) (int64, error)
|
||||
}
|
||||
|
||||
type consentRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
type ConsentRepository struct{}
|
||||
|
||||
func NewConsentRepository(db *gorm.DB) ConsentRepository {
|
||||
return &consentRepository{db}
|
||||
}
|
||||
|
||||
func (repo *consentRepository) CreateConsent(consent *models.Consent) (int64, error) {
|
||||
result := repo.db.Create(consent)
|
||||
func (repo *ConsentRepository) CreateConsent(consent *models.Consent) (int64, error) {
|
||||
result := database.DB.Create(consent)
|
||||
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
|
||||
@@ -1,36 +1,31 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"GoMembership/internal/database"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"GoMembership/internal/models"
|
||||
)
|
||||
|
||||
type MembershipRepository interface {
|
||||
type MembershipRepositoryInterface interface {
|
||||
CreateMembership(membership *models.Membership) (int64, error)
|
||||
FindMembershipByUserID(userID int64) (*models.Membership, error)
|
||||
}
|
||||
|
||||
type membershipRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
type MembershipRepository struct{}
|
||||
|
||||
func NewMembershipRepository(db *gorm.DB) MembershipRepository {
|
||||
return &membershipRepository{db}
|
||||
}
|
||||
|
||||
func (repo *membershipRepository) CreateMembership(membership *models.Membership) (int64, error) {
|
||||
result := repo.db.Create(membership)
|
||||
func (repo *MembershipRepository) CreateMembership(membership *models.Membership) (int64, error) {
|
||||
result := database.DB.Create(membership)
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
}
|
||||
return membership.ID, nil
|
||||
}
|
||||
|
||||
func (repo *membershipRepository) FindMembershipByUserID(userID int64) (*models.Membership, error) {
|
||||
func (repo *MembershipRepository) FindMembershipByUserID(userID int64) (*models.Membership, error) {
|
||||
|
||||
var membership models.Membership
|
||||
result := repo.db.First(&membership, userID)
|
||||
result := database.DB.First(&membership, userID)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
|
||||
@@ -1,27 +1,40 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"GoMembership/internal/database"
|
||||
|
||||
"GoMembership/internal/models"
|
||||
)
|
||||
|
||||
type SubscriptionModelsRepository interface {
|
||||
type SubscriptionModelsRepositoryInterface interface {
|
||||
CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (int64, error)
|
||||
GetMembershipModelNames() ([]string, error)
|
||||
GetModelByName(modelname *string) (*models.SubscriptionModel, error)
|
||||
}
|
||||
|
||||
type subscriptionModelsRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
type SubscriptionModelsRepository struct{}
|
||||
|
||||
func NewSubscriptionModelsRepository(db *gorm.DB) SubscriptionModelsRepository {
|
||||
return &subscriptionModelsRepository{db}
|
||||
}
|
||||
func (sr *SubscriptionModelsRepository) CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (int64, error) {
|
||||
|
||||
func (repo *subscriptionModelsRepository) CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (int64, error) {
|
||||
result := repo.db.Create(subscriptionModel)
|
||||
result := database.DB.Create(subscriptionModel)
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
}
|
||||
return subscriptionModel.ID, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionModelsRepository) GetModelByName(modelname *string) (*models.SubscriptionModel, error) {
|
||||
var model models.SubscriptionModel
|
||||
if err := database.DB.Where("name = ?", modelname).First(&model).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &model, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionModelsRepository) GetMembershipModelNames() ([]string, error) {
|
||||
var names []string
|
||||
if err := database.DB.Model(&models.SubscriptionModel{}).Pluck("name", &names).Error; err != nil {
|
||||
return []string{}, err
|
||||
}
|
||||
return names, nil
|
||||
}
|
||||
|
||||
@@ -3,10 +3,11 @@ package repositories
|
||||
import (
|
||||
"time"
|
||||
|
||||
"GoMembership/internal/constants"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"GoMembership/internal/constants"
|
||||
"GoMembership/internal/database"
|
||||
|
||||
"gorm.io/gorm/clause"
|
||||
|
||||
"GoMembership/internal/models"
|
||||
@@ -14,7 +15,7 @@ import (
|
||||
"GoMembership/pkg/logger"
|
||||
)
|
||||
|
||||
type UserRepository interface {
|
||||
type UserRepositoryInterface interface {
|
||||
CreateUser(user *models.User) (int64, error)
|
||||
UpdateUser(userID int64, user *models.User) error
|
||||
FindUserByID(id int64) (*models.User, error)
|
||||
@@ -24,28 +25,22 @@ type UserRepository interface {
|
||||
VerifyUserOfToken(token *string) (*models.User, error)
|
||||
}
|
||||
|
||||
type userRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
type UserRepository struct{}
|
||||
|
||||
func NewUserRepository(db *gorm.DB) UserRepository {
|
||||
return &userRepository{db}
|
||||
}
|
||||
|
||||
func (repo *userRepository) CreateUser(user *models.User) (int64, error) {
|
||||
result := repo.db.Create(user)
|
||||
func (ur *UserRepository) CreateUser(user *models.User) (int64, error) {
|
||||
result := database.DB.Create(user)
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
}
|
||||
return user.ID, nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) UpdateUser(userID int64, user *models.User) error {
|
||||
func (ur *UserRepository) UpdateUser(userID int64, user *models.User) error {
|
||||
logger.Info.Printf("Updating User: %#v\n", user)
|
||||
if user == nil {
|
||||
return errors.ErrNoData
|
||||
}
|
||||
result := repo.db.Session(&gorm.Session{FullSaveAssociations: true}).Updates(&user)
|
||||
result := database.DB.Session(&gorm.Session{FullSaveAssociations: true}).Updates(&user)
|
||||
if result.Error != nil {
|
||||
return result.Error
|
||||
}
|
||||
@@ -57,9 +52,9 @@ func (repo *userRepository) UpdateUser(userID int64, user *models.User) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) FindUserByID(id int64) (*models.User, error) {
|
||||
func (ur *UserRepository) FindUserByID(id int64) (*models.User, error) {
|
||||
var user models.User
|
||||
result := repo.db.Preload("Consents").Preload("BankAccount").Preload("Verification").Preload("Membership").First(&user, id)
|
||||
result := database.DB.Preload("Consents").Preload("BankAccount").Preload("Verification").Preload("Membership").First(&user, id)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
@@ -69,9 +64,9 @@ func (repo *userRepository) FindUserByID(id int64) (*models.User, error) {
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) FindUserByEmail(email string) (*models.User, error) {
|
||||
func (ur *UserRepository) FindUserByEmail(email string) (*models.User, error) {
|
||||
var user models.User
|
||||
result := repo.db.Where("email = ?", email).First(&user)
|
||||
result := database.DB.Where("email = ?", email).First(&user)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
@@ -81,9 +76,9 @@ func (repo *userRepository) FindUserByEmail(email string) (*models.User, error)
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) IsVerified(userID *int64) (bool, error) {
|
||||
func (ur *UserRepository) IsVerified(userID *int64) (bool, error) {
|
||||
var user models.User
|
||||
result := repo.db.Select("status").First(&user, userID)
|
||||
result := database.DB.Select("status").First(&user, userID)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return false, gorm.ErrRecordNotFound
|
||||
@@ -93,9 +88,9 @@ func (repo *userRepository) IsVerified(userID *int64) (bool, error) {
|
||||
return user.Status != constants.UnverifiedStatus, nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) VerifyUserOfToken(token *string) (*models.User, error) {
|
||||
func (ur *UserRepository) VerifyUserOfToken(token *string) (*models.User, error) {
|
||||
var emailVerification models.Verification
|
||||
result := repo.db.Where("verification_token = ?", token).First(&emailVerification)
|
||||
result := database.DB.Where("verification_token = ?", token).First(&emailVerification)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
@@ -104,11 +99,11 @@ func (repo *userRepository) VerifyUserOfToken(token *string) (*models.User, erro
|
||||
}
|
||||
|
||||
// Check if the user is already verified
|
||||
verified, err := repo.IsVerified(&emailVerification.UserID)
|
||||
verified, err := ur.IsVerified(&emailVerification.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
user, err := repo.FindUserByID(emailVerification.UserID)
|
||||
user, err := ur.FindUserByID(emailVerification.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -121,7 +116,7 @@ func (repo *userRepository) VerifyUserOfToken(token *string) (*models.User, erro
|
||||
user.Status = constants.VerifiedStatus
|
||||
user.Verification = emailVerification
|
||||
|
||||
err = repo.UpdateUser(emailVerification.UserID, user)
|
||||
err = ur.UpdateUser(emailVerification.UserID, user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -129,9 +124,9 @@ func (repo *userRepository) VerifyUserOfToken(token *string) (*models.User, erro
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (repo *userRepository) SetVerificationToken(user *models.User, token *string) (int64, error) {
|
||||
func (ur *UserRepository) SetVerificationToken(user *models.User, token *string) (int64, error) {
|
||||
// Check if user is already verified
|
||||
verified, err := repo.IsVerified(&user.ID)
|
||||
verified, err := ur.IsVerified(&user.ID)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
@@ -146,7 +141,7 @@ func (repo *userRepository) SetVerificationToken(user *models.User, token *strin
|
||||
}
|
||||
|
||||
// Use GORM to insert or update the Verification record
|
||||
result := repo.db.Clauses(clause.OnConflict{
|
||||
result := database.DB.Clauses(clause.OnConflict{
|
||||
Columns: []clause.Column{{Name: "user_id"}},
|
||||
DoUpdates: clause.AssignmentColumns([]string{"verification_token", "created_at"}),
|
||||
}).Create(&verification)
|
||||
|
||||
Reference in New Issue
Block a user