48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package initialize
|
|
|
|
import (
|
|
"context"
|
|
"kra/internal/biz/system"
|
|
"kra/internal/config"
|
|
|
|
datasystem "kra/internal/data/system"
|
|
datatask "kra/internal/data/task"
|
|
platformmodule "kra/pkg/module"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Repo struct {
|
|
backend Backend
|
|
catalog platformmodule.Catalog
|
|
}
|
|
|
|
func NewRepo(backend Backend, catalog platformmodule.Catalog) system.InitializationRepo {
|
|
return &Repo{backend: backend, catalog: catalog}
|
|
}
|
|
|
|
func (r *Repo) IsInitialized(ctx context.Context) (bool, error) {
|
|
return r.backend.IsInitialized(ctx)
|
|
}
|
|
|
|
func (r *Repo) Initialize(ctx context.Context, input *system.DatabaseConfig) error {
|
|
return r.backend.InitializeDatabase(ctx, input, func(ctx context.Context, db *gorm.DB) error {
|
|
if err := datasystem.SeedSystemWithCatalog(ctx, db, input, r.catalog); err != nil {
|
|
return err
|
|
}
|
|
return datatask.SeedDefaults(ctx, db, r.catalog.DefaultTimedTasks())
|
|
})
|
|
}
|
|
|
|
func (r *Repo) PersistConfig(ctx context.Context) error {
|
|
return r.backend.PersistConfig(ctx)
|
|
}
|
|
|
|
func (r *Repo) PersistRuntimeConfig(ctx context.Context, value *config.Config) error {
|
|
return r.backend.PersistRuntimeConfig(ctx, value)
|
|
}
|
|
|
|
func (r *Repo) ReloadConfig(ctx context.Context) error {
|
|
return r.backend.ReloadConfig(ctx)
|
|
}
|