package rules import ( "encoding/json" "os" "path/filepath" "vpnem/internal/models" ) type Store struct { dataDir string } func NewStore(dataDir string) *Store { return &Store{dataDir: dataDir} } func (s *Store) LoadServers() (*models.ServersResponse, error) { data, err := os.ReadFile(filepath.Join(s.dataDir, "servers.json")) if err != nil { return nil, err } var resp models.ServersResponse if err := json.Unmarshal(data, &resp); err != nil { return nil, err } return &resp, nil } func (s *Store) LoadRuleSets() (*models.RuleSetManifest, error) { data, err := os.ReadFile(filepath.Join(s.dataDir, "rulesets.json")) if err != nil { return nil, err } var manifest models.RuleSetManifest if err := json.Unmarshal(data, &manifest); err != nil { return nil, err } return &manifest, nil } func (s *Store) LoadVersion() (*models.VersionResponse, error) { data, err := os.ReadFile(filepath.Join(s.dataDir, "version.json")) if err != nil { return nil, err } var ver models.VersionResponse if err := json.Unmarshal(data, &ver); err != nil { return nil, err } return &ver, nil } func (s *Store) RulesDir() string { return filepath.Join(s.dataDir, "rules") } func (s *Store) ReleasesDir() string { return filepath.Join(s.dataDir, "releases") }