41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package persistence
|
|
|
|
import (
|
|
domainPurge "RenewCMS/internal/domain/purge"
|
|
"RenewCMS/internal/infrastructure/persistence/mappers"
|
|
entity "RenewCMS/internal/infrastructure/persistence/models"
|
|
"errors"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const purgeSettingsRowID uint32 = 1
|
|
|
|
type PurgeSettingsRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
var _ domainPurge.Repository = &PurgeSettingsRepository{}
|
|
|
|
func NewPurgeSettingsRepository(db *gorm.DB) *PurgeSettingsRepository {
|
|
return &PurgeSettingsRepository{db}
|
|
}
|
|
|
|
func (p *PurgeSettingsRepository) Get() (domainPurge.Settings, error) {
|
|
var model entity.PurgeSettings
|
|
err := p.db.First(&model, purgeSettingsRowID).Error
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return domainPurge.DefaultSettings(), nil
|
|
}
|
|
if err != nil {
|
|
return domainPurge.Settings{}, err
|
|
}
|
|
return mappers.PurgeSettingsToDomain(model), nil
|
|
}
|
|
|
|
func (p *PurgeSettingsRepository) Save(settings domainPurge.Settings) error {
|
|
model := mappers.PurgeSettingsToModel(settings)
|
|
model.ID = purgeSettingsRowID
|
|
return p.db.Save(&model).Error
|
|
}
|