package tasks import ( "errors" "fmt" "log/slog" "bunker/client/internal/application" "bunker/client/internal/services/core" "bunker/client/internal/services/features" ) var errTasks = errors.New("tasks feature service") type tasks struct { app *application.Application logger *slog.Logger db core.Database mainWindow core.MainWindow } // Initialize initializes service. func Initialize(app *application.Application) error { tsks := &tasks{ app: app, } if err := app.RegisterService(tsks); err != nil { return fmt.Errorf("%w: %w", errTasks, err) } return nil } func (t *tasks) Configure() error { return nil } func (t *tasks) ConnectDependencies() error { databaseRaw := t.app.Service(core.ServiceNameDatabase) if databaseRaw == nil { return fmt.Errorf("connect dependencies: get database service: %w", application.ErrServiceNotFound) } database, valid := databaseRaw.(core.Database) if !valid { return fmt.Errorf("connect dependencies: type assert database service: %w", core.ErrDatabaseIsInvalid) } t.db = database mainWindowRaw := t.app.Service(core.ServiceNameMainWindow) if mainWindowRaw == nil { return fmt.Errorf("connect dependencies: get main window: %w", application.ErrServiceNotFound) } mainWindow, valid := mainWindowRaw.(core.MainWindow) if !valid { return fmt.Errorf("connect dependencies: type assert main window: %w", core.ErrMainWindowIsInvalid) } t.mainWindow = mainWindow return nil } func (t *tasks) Initialize() error { t.logger = t.app.NewLogger("service", features.ServiceNameTasks) t.logger.Info("Initializing...") return nil } func (t *tasks) Name() string { return features.ServiceNameAccounts } func (t *tasks) LaunchStartupTasks() error { return nil } func (t *tasks) Shutdown() error { return nil }