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 }