mirror of
https://github.com/teamhanko/hanko.git
synced 2025-10-27 14:17:56 +08:00
82 lines
1.7 KiB
Go
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
|
|
}
|