package initialize import ( "context" "kra/internal/biz/system" 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) PersistAdminConfig(ctx context.Context, value []byte) error { return r.backend.PersistAdminConfig(ctx, value) } func (r *Repo) PersistRuntimeConfig(ctx context.Context, data, admin []byte) error { return r.backend.PersistRuntimeConfig(ctx, data, admin) } func (r *Repo) ReloadConfig(ctx context.Context) error { return r.backend.ReloadConfig(ctx) }