Files
hanko/backend/test/audit_log_persister.go
Frederic Jahn c934badea1 test: fix tests
2023-01-13 10:20:55 +01:00

82 lines
1.8 KiB
Go

package test
import (
"github.com/gofrs/uuid"
"github.com/teamhanko/hanko/backend/persistence"
"github.com/teamhanko/hanko/backend/persistence/models"
"time"
)
func NewAuditLogPersister(init []models.AuditLog) persistence.AuditLogPersister {
if init == nil {
return &auditLogPersister{[]models.AuditLog{}}
}
return &auditLogPersister{append([]models.AuditLog{}, init...)}
}
type auditLogPersister struct {
logs []models.AuditLog
}
func (p *auditLogPersister) Create(auditLog models.AuditLog) error {
p.logs = append(p.logs, auditLog)
return nil
}
func (p *auditLogPersister) Get(id uuid.UUID) (*models.AuditLog, error) {
var found *models.AuditLog
for _, data := range p.logs {
if data.ID == id {
d := data
found = &d
}
}
return found, nil
}
func (p *auditLogPersister) List(page int, perPage int, startTime *time.Time, endTime *time.Time, types []string, userId string, email string, ip string, searchString string) ([]models.AuditLog, error) {
if len(p.logs) == 0 {
return p.logs, nil
}
if page < 1 {
page = 1
}
if perPage < 1 {
perPage = 20
}
var result [][]models.AuditLog
var j int
for i := 0; i < len(p.logs); i += perPage {
j += perPage
if j > len(p.logs) {
j = len(p.logs)
}
result = append(result, p.logs[i:j])
}
if page > len(result) {
return []models.AuditLog{}, nil
}
return result[page-1], nil
}
func (p *auditLogPersister) Delete(auditLog models.AuditLog) error {
index := -1
for i, log := range p.logs {
if log.ID == auditLog.ID {
index = i
}
}
if index > -1 {
p.logs = append(p.logs[:index], p.logs[index+1:]...)
}
return nil
}
func (p *auditLogPersister) Count(startTime *time.Time, endTime *time.Time, types []string, userId string, email string, ip string, searchString string) (int, error) {
return len(p.logs), nil
}