Files

67 lines
1.1 KiB
Go

package repo
import (
"errors"
"os"
models "github.com/ESilva15/PTInvCertSWDB/sw/models"
"gopkg.in/yaml.v2"
)
type YamlRepo struct {
Data map[int]models.SW
}
func getSWList(fp string) (models.SWList, error) {
var swList models.SWList
file, err := os.ReadFile(fp)
if err != nil {
return models.SWList{}, err
}
err = yaml.Unmarshal(file, &swList)
if err != nil {
return models.SWList{}, err
}
return swList, nil
}
func loadDataFromFile(fp string) (map[int]models.SW, error) {
list, err := getSWList(fp)
if err != nil {
return map[int]models.SW{}, err
}
m := make(map[int]models.SW, len(list))
for k := range list {
m[list[k].CertNo] = list[k]
}
return m, nil
}
func NewYAMLRepo(fp string) (*YamlRepo, error) {
data, err := loadDataFromFile(fp)
if err != nil {
return nil, err
}
return &YamlRepo{
Data: data,
}, nil
}
func (yr YamlRepo) Get(id int) (models.SW, error) {
if val, ok := yr.Data[id]; ok {
return val, nil
}
return models.SW{}, errors.New("not found")
}
func (yr YamlRepo) Count() int {
return len(yr.Data)
}