diff --git a/base/pkg_version.go b/base/pkg_version.go index 5f439bf..5379457 100644 --- a/base/pkg_version.go +++ b/base/pkg_version.go @@ -1,6 +1,12 @@ package base +import ( + "git.fsdpf.net/go/contracts" + "github.com/samber/do" +) + type PkgVersion struct { + Id int64 `db:"id"` Name string `db:"pkg"` Bundle string `db:"bundle"` Hash string `db:"hash"` @@ -13,8 +19,41 @@ type PkgVersion struct { CreatedAt string `db:"created_at"` } -func (this PkgVersion) GetFile() []byte -func (this PkgVersion) GetSourceMap() []byte +func (this PkgVersion) GetFile(app *do.Injector) ([]byte, error) { + if this.Id == 0 { + return nil, contracts.ErrPkgUnknown + } + + res, ok := do.MustInvoke[contracts.GetResource](app)("PkgVersion") + + if !ok { + return nil, contracts.ErrResNotFound + } + + file := []byte{} + + _, err := res.GetDBTable().Where("id", this.Id).Value(&file, "file") + + return file, err +} + +func (this PkgVersion) GetSourceMap(app *do.Injector) ([]byte, error) { + if this.Id == 0 { + return nil, contracts.ErrPkgUnknown + } + + res, ok := do.MustInvoke[contracts.GetResource](app)("PkgVersion") + + if !ok { + return nil, contracts.ErrResNotFound + } + + file := []byte{} + + _, err := res.GetDBTable().Where("id", this.Id).Value(&file, "sourcemap") + + return file, err +} type GetPkgVersion func(pkg string, opts ...PkgOption) (PkgVersion, bool)