feat: media duplicate purge, part 1 of 3: persisted purge settings and the purge API
This commit is contained in:
1 parent
161ddc0f7d
commit
e82d0ce254
25 files changed
+2459
-41
No files matched your search
@@ -0,0 +1,28 @@
|
||||
package mappers
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/purge"
|
||||
"RenewCMS/internal/infrastructure/persistence/models"
|
||||
)
|
||||
|
||||
func PurgeSettingsToDomain(m models.PurgeSettings) purge.Settings {
|
||||
return purge.Settings{
|
||||
AutoPurgeEnabled: m.AutoPurgeEnabled,
|
||||
AutoPurgeIntervalDays: m.AutoPurgeIntervalDays,
|
||||
LastPurgeAt: m.LastPurgeAt,
|
||||
LastPurgeMerged: m.LastPurgeMerged,
|
||||
LastPurgeArticlesUpdated: m.LastPurgeArticlesUpdated,
|
||||
EnabledAt: m.EnabledAt,
|
||||
}
|
||||
}
|
||||
|
||||
func PurgeSettingsToModel(s purge.Settings) models.PurgeSettings {
|
||||
return models.PurgeSettings{
|
||||
AutoPurgeEnabled: s.AutoPurgeEnabled,
|
||||
AutoPurgeIntervalDays: s.AutoPurgeIntervalDays,
|
||||
LastPurgeAt: s.LastPurgeAt,
|
||||
LastPurgeMerged: s.LastPurgeMerged,
|
||||
LastPurgeArticlesUpdated: s.LastPurgeArticlesUpdated,
|
||||
EnabledAt: s.EnabledAt,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
type PurgeSettings struct {
|
||||
ID uint32 `gorm:"primaryKey"`
|
||||
AutoPurgeEnabled bool `gorm:"not null"`
|
||||
AutoPurgeIntervalDays int `gorm:"not null"`
|
||||
LastPurgeAt *time.Time
|
||||
LastPurgeMerged int `gorm:"not null"`
|
||||
LastPurgeArticlesUpdated int `gorm:"not null"`
|
||||
EnabledAt *time.Time
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
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
|
||||
}
|
||||
Reference in new issue
Block a user