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