wip
This commit is contained in:
97
go-backend/internal/repositories/subscription_repository.go
Normal file
97
go-backend/internal/repositories/subscription_repository.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"GoMembership/internal/database"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"GoMembership/internal/models"
|
||||
)
|
||||
|
||||
type SubscriptionsRepositoryInterface interface {
|
||||
CreateSubscription(subscription *models.Subscription) (uint, error)
|
||||
UpdateSubscription(subscription *models.Subscription) (*models.Subscription, error)
|
||||
GetSubscriptionNames() ([]string, error)
|
||||
GetSubscriptions(where map[string]interface{}) (*[]models.Subscription, error)
|
||||
// GetUsersBySubscription(id uint) (*[]models.Subscription, error)
|
||||
DeleteSubscription(id *uint) error
|
||||
}
|
||||
|
||||
type SubscriptionsRepository struct{}
|
||||
|
||||
func (sr *SubscriptionsRepository) CreateSubscription(subscription *models.Subscription) (uint, error) {
|
||||
|
||||
result := database.DB.Create(subscription)
|
||||
if result.Error != nil {
|
||||
return 0, result.Error
|
||||
}
|
||||
return subscription.ID, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionsRepository) UpdateSubscription(subscription *models.Subscription) (*models.Subscription, error) {
|
||||
|
||||
result := database.DB.Model(&models.Subscription{ID: subscription.ID}).Updates(subscription)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
return subscription, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionsRepository) DeleteSubscription(id *uint) error {
|
||||
|
||||
result := database.DB.Delete(&models.Subscription{}, id)
|
||||
if result.Error != nil {
|
||||
return result.Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetSubscriptionByName(modelname *string) (*models.Subscription, error) {
|
||||
var model models.Subscription
|
||||
result := database.DB.Where("name = ?", modelname).First(&model)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
return &model, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionsRepository) GetSubscriptionNames() ([]string, error) {
|
||||
var names []string
|
||||
if err := database.DB.Model(&models.Subscription{}).Pluck("name", &names).Error; err != nil {
|
||||
return []string{}, err
|
||||
}
|
||||
return names, nil
|
||||
}
|
||||
|
||||
func (sr *SubscriptionsRepository) GetSubscriptions(where map[string]interface{}) (*[]models.Subscription, error) {
|
||||
var subscriptions []models.Subscription
|
||||
result := database.DB.Where(where).Find(&subscriptions)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
}
|
||||
return nil, result.Error
|
||||
}
|
||||
return &subscriptions, nil
|
||||
}
|
||||
|
||||
func GetUsersBySubscription(subscriptionID uint) (*[]models.User, error) {
|
||||
var users []models.User
|
||||
|
||||
err := database.DB.Preload("Membership").
|
||||
Preload("Membership.Subscription").
|
||||
Preload("BankAccount").
|
||||
Preload("Licence").
|
||||
Preload("Licence.Categories").
|
||||
Joins("JOIN memberships ON users.id = memberships.user_id").
|
||||
Joins("JOIN subscriptions ON memberships.subscription_id = subscriptions.id").
|
||||
Where("subscriptions.id = ?", subscriptionID).
|
||||
Find(&users).Error
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &users, nil
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user