42 lines
981 B
Go
42 lines
981 B
Go
package repositories
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
|
|
"GoMembership/internal/models"
|
|
)
|
|
|
|
type MembershipRepository interface {
|
|
CreateMembership(membership *models.Membership) (int64, error)
|
|
FindMembershipByUserID(userID int64) (*models.Membership, error)
|
|
}
|
|
|
|
type membershipRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewMembershipRepository(db *gorm.DB) MembershipRepository {
|
|
return &membershipRepository{db}
|
|
}
|
|
|
|
func (repo *membershipRepository) CreateMembership(membership *models.Membership) (int64, error) {
|
|
result := repo.db.Create(membership)
|
|
if result.Error != nil {
|
|
return 0, result.Error
|
|
}
|
|
return membership.ID, nil
|
|
}
|
|
|
|
func (repo *membershipRepository) FindMembershipByUserID(userID int64) (*models.Membership, error) {
|
|
|
|
var membership models.Membership
|
|
result := repo.db.First(&membership, userID)
|
|
if result.Error != nil {
|
|
if result.Error == gorm.ErrRecordNotFound {
|
|
return nil, gorm.ErrRecordNotFound
|
|
}
|
|
return nil, result.Error
|
|
}
|
|
return &membership, nil
|
|
}
|