package repositories import ( "GoMembership/internal/database" "gorm.io/gorm" "GoMembership/internal/models" ) type SubscriptionModelsRepositoryInterface interface { CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (uint, error) GetMembershipModelNames() ([]string, error) GetModelByName(modelname *string) (*models.SubscriptionModel, error) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) } type SubscriptionModelsRepository struct{} func (sr *SubscriptionModelsRepository) CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (uint, error) { 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 } func (sr *SubscriptionModelsRepository) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) { var subscriptions []models.SubscriptionModel 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 }