newdrive/internal/application/system.go
Elijah 077cf7601a
Some checks failed
CI / Backend (push) Failing after 4s
CI / Frontend (push) Successful in 11s
CI / Contracts and repository policy (push) Failing after 5s
CI / Container (push) Has been skipped
Initial phase 1 baseline implementation
2026-07-16 19:14:01 -07:00

41 lines
1 KiB
Go

package application
import (
"context"
"fmt"
)
type SystemRepository interface {
DatabaseHealth(context.Context) error
OwnerExists(context.Context) (bool, error)
}
type SetupStatus struct {
Initialized bool `json:"initialized"`
Phase string `json:"phase"`
Version string `json:"version"`
}
type SystemService struct {
repository SystemRepository
version string
}
func NewSystemService(repository SystemRepository, version string) *SystemService {
return &SystemService{repository: repository, version: version}
}
func (s *SystemService) Readiness(ctx context.Context) error {
if err := s.repository.DatabaseHealth(ctx); err != nil {
return fmt.Errorf("database health: %w", err)
}
return nil
}
func (s *SystemService) SetupStatus(ctx context.Context) (SetupStatus, error) {
initialized, err := s.repository.OwnerExists(ctx)
if err != nil {
return SetupStatus{}, fmt.Errorf("read owner setup state: %w", err)
}
return SetupStatus{Initialized: initialized, Phase: "phase-1", Version: s.version}, nil
}