0.29.1原版
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package store
|
||||
|
||||
import "context"
|
||||
|
||||
// UserIdentity is the linkage between an external identity subject and a local user.
|
||||
// Uniqueness is enforced on (Provider, ExternUID); one local user may have multiple
|
||||
// identities across different providers.
|
||||
type UserIdentity struct {
|
||||
ID int32
|
||||
UserID int32
|
||||
Provider string
|
||||
ExternUID string
|
||||
CreatedTs int64
|
||||
UpdatedTs int64
|
||||
}
|
||||
|
||||
// FindUserIdentity is used to filter user identities in list/get queries.
|
||||
type FindUserIdentity struct {
|
||||
ID *int32
|
||||
UserID *int32
|
||||
Provider *string
|
||||
ExternUID *string
|
||||
}
|
||||
|
||||
// DeleteUserIdentity is used to delete user identity linkage rows.
|
||||
type DeleteUserIdentity struct {
|
||||
ID *int32
|
||||
UserID *int32
|
||||
Provider *string
|
||||
}
|
||||
|
||||
// CreateUserIdentity creates a new external-identity linkage record.
|
||||
// Returns the driver error on unique-constraint violation; callers are responsible
|
||||
// for reconciling concurrent first-login races on (Provider, ExternUID).
|
||||
func (s *Store) CreateUserIdentity(ctx context.Context, create *UserIdentity) (*UserIdentity, error) {
|
||||
return s.driver.CreateUserIdentity(ctx, create)
|
||||
}
|
||||
|
||||
// ListUserIdentities returns all linkage records matching the filter.
|
||||
func (s *Store) ListUserIdentities(ctx context.Context, find *FindUserIdentity) ([]*UserIdentity, error) {
|
||||
return s.driver.ListUserIdentities(ctx, find)
|
||||
}
|
||||
|
||||
// DeleteUserIdentities deletes all linkage records matching the filter.
|
||||
func (s *Store) DeleteUserIdentities(ctx context.Context, delete *DeleteUserIdentity) error {
|
||||
return s.driver.DeleteUserIdentities(ctx, delete)
|
||||
}
|
||||
|
||||
// GetUserIdentity returns the first linkage record matching the filter, or nil if none found.
|
||||
func (s *Store) GetUserIdentity(ctx context.Context, find *FindUserIdentity) (*UserIdentity, error) {
|
||||
list, err := s.ListUserIdentities(ctx, find)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(list) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
return list[0], nil
|
||||
}
|
||||
Reference in New Issue
Block a user