Files
hanko/backend/test/identity_persister.go
lfleischmann eec7a473a5 feat: add third party integrations
add third party integrations
2023-02-23 13:05:05 +01:00

55 lines
1.3 KiB
Go

package test
import (
"github.com/teamhanko/hanko/backend/persistence"
"github.com/teamhanko/hanko/backend/persistence/models"
)
func NewIdentityPersister(init []models.Identity) persistence.IdentityPersister {
if init == nil {
return &identityPersister{[]models.Identity{}}
}
return &identityPersister{append([]models.Identity{}, init...)}
}
type identityPersister struct {
identities []models.Identity
}
func (i identityPersister) Get(userProviderID string, providerName string) (*models.Identity, error) {
for _, identity := range i.identities {
if identity.ProviderID == userProviderID && identity.ProviderName == providerName {
return &identity, nil
}
}
return nil, nil
}
func (i identityPersister) Create(identity models.Identity) error {
i.identities = append(i.identities, identity)
return nil
}
func (i identityPersister) Update(identity models.Identity) error {
for idx, data := range i.identities {
if data.ID == identity.ID {
i.identities[idx] = identity
}
}
return nil
}
func (i identityPersister) Delete(identity models.Identity) error {
index := -1
for idx, data := range i.identities {
if data.ID == identity.ID {
index = idx
}
}
if index > -1 {
i.identities = append(i.identities[:index], i.identities[index+1:]...)
}
return nil
}