github.com/resonatecoop/user-api@v1.0.0-13.0.20220915120639-05dc9c04014a/server/membership.go (about)

     1  package server
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/resonatecoop/user-api/model"
     7  	pbUser "github.com/resonatecoop/user-api/proto/user"
     8  )
     9  
    10  // GetUserMembership
    11  func (s *Server) GetUserMembership(ctx context.Context, user *pbUser.UserRequest) (*pbUser.UserMembershipResponse, error) {
    12  	var memberships []model.UserMembership
    13  	var result pbUser.UserMembershipResponse
    14  
    15  	// it should not be possible to have two active memberships at the same time
    16  	err := s.db.NewSelect().
    17  		Model(&memberships).
    18  		Where("user_id = ?", user.Id).
    19  		Order("created_at DESC").
    20  		Limit(1).
    21  		Scan(ctx)
    22  
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  
    27  	if len(memberships) == 0 {
    28  		return &result, nil
    29  	}
    30  
    31  	membership := memberships[0]
    32  
    33  	result.Id = membership.ID.String()
    34  	result.Start = membership.Start.UTC().String()
    35  	result.End = membership.End.UTC().String()
    36  	result.MembershipClass = membership.MembershipClass.Name
    37  
    38  	return &result, nil
    39  }
    40  
    41  // TODO CancelUserMembership