package services import ( "time" "GoMembership/internal/models" "GoMembership/internal/repositories" ) type MembershipServiceInterface interface { RegisterMembership(membership *models.Membership) (uint, error) FindMembershipByUserID(userID uint) (*models.Membership, error) RegisterSubscription(subscription *models.SubscriptionModel) (uint, error) GetMembershipModelNames() ([]string, error) GetModelByName(modelname *string) (*models.SubscriptionModel, error) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) } type MembershipService struct { Repo repositories.MembershipRepositoryInterface SubscriptionRepo repositories.SubscriptionModelsRepositoryInterface } func (service *MembershipService) RegisterMembership(membership *models.Membership) (uint, error) { membership.StartDate = time.Now() return service.Repo.CreateMembership(membership) } func (service *MembershipService) FindMembershipByUserID(userID uint) (*models.Membership, error) { return service.Repo.FindMembershipByUserID(userID) } // Membership_Subscriptions func (service *MembershipService) RegisterSubscription(subscription *models.SubscriptionModel) (uint, error) { return service.SubscriptionRepo.CreateSubscriptionModel(subscription) } func (service *MembershipService) GetMembershipModelNames() ([]string, error) { return service.SubscriptionRepo.GetMembershipModelNames() } func (service *MembershipService) GetModelByName(modelname *string) (*models.SubscriptionModel, error) { return repositories.GetModelByName(modelname) } func (service *MembershipService) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) { if where == nil { where = map[string]interface{}{} } return service.SubscriptionRepo.GetSubscriptions(where) }