Files
hanko/backend/test/email_persister.go
bjoern-m ca62cf421f feat: introduce hanko profile element and related api changes (#495)
* feat: introduce hanko profile element and related api changes
2023-01-25 10:55:23 +01:00

82 lines
1.7 KiB
Go

package test
import (
"github.com/gofrs/uuid"
"github.com/teamhanko/hanko/backend/persistence"
"github.com/teamhanko/hanko/backend/persistence/models"
)
func NewEmailPersister(init []models.Email) persistence.EmailPersister {
return &emailPersister{append([]models.Email{}, init...)}
}
type emailPersister struct {
emails []models.Email
}
func (e *emailPersister) Get(emailId uuid.UUID) (*models.Email, error) {
for _, email := range e.emails {
if email.ID.String() == emailId.String() {
return &email, nil
}
}
return nil, nil
}
func (e *emailPersister) FindByUserId(userId uuid.UUID) (models.Emails, error) {
var emails []models.Email
for _, email := range e.emails {
if email.UserID.String() == userId.String() {
emails = append(emails, email)
}
}
return emails, nil
}
func (e *emailPersister) FindByAddress(address string) (*models.Email, error) {
for _, email := range e.emails {
if email.Address == address {
return &email, nil
}
}
return nil, nil
}
func (e *emailPersister) Create(email models.Email) error {
e.emails = append(e.emails, email)
return nil
}
func (e *emailPersister) Update(email models.Email) error {
for i, data := range e.emails {
if data.ID == email.ID {
e.emails[i] = email
}
}
return nil
}
func (e *emailPersister) Delete(email models.Email) error {
index := -1
for i, data := range e.emails {
if data.ID == email.ID {
index = i
}
}
if index > -1 {
e.emails = append(e.emails[:index], e.emails[index+1:]...)
}
return nil
}
func (e *emailPersister) CountByUserId(userId uuid.UUID) (int, error) {
count := 0
for _, email := range e.emails {
if email.UserID.String() == userId.String() {
count++
}
}
return count, nil
}