Deleting packages & building file list from packages.

This commit is contained in:
Andrey Smirnov
2014-02-12 13:12:07 +04:00
parent 974d30b837
commit b5da3e9680
2 changed files with 41 additions and 1 deletions
+21 -1
View File
@@ -247,7 +247,7 @@ func (p *Package) LinkFromPool(packageRepo *Repository, prefix string, component
return nil return nil
} }
// PoolDirectory returns directory in package pool for this package files // PoolDirectory returns directory in package pool of published repository for this package files
func (p *Package) PoolDirectory() (string, error) { func (p *Package) PoolDirectory() (string, error) {
source := p.Source source := p.Source
if source == "" { if source == "" {
@@ -314,6 +314,21 @@ func (p *Package) VerifyFiles(packageRepo *Repository) (result bool, err error)
return return
} }
// FilepathsList returns list of paths to files in package repository
func (p *Package) FilepathList(packageRepo *Repository) ([]string, error) {
var err error
result := make([]string, len(p.Files))
for i, f := range p.Files {
result[i], err = packageRepo.RelativePoolPath(f.Filename, f.Checksums.MD5)
if err != nil {
return nil, err
}
}
return result, nil
}
// PackageCollection does management of packages in DB // PackageCollection does management of packages in DB
type PackageCollection struct { type PackageCollection struct {
db database.Storage db database.Storage
@@ -350,3 +365,8 @@ func (collection *PackageCollection) Update(p *Package) error {
func (collection *PackageCollection) AllPackageRefs() *PackageRefList { func (collection *PackageCollection) AllPackageRefs() *PackageRefList {
return &PackageRefList{Refs: collection.db.KeysByPrefix([]byte("P"))} return &PackageRefList{Refs: collection.db.KeysByPrefix([]byte("P"))}
} }
// DeleteByKey deletes package in DB by key
func (collection *PackageCollection) DeleteByKey(key []byte) error {
return collection.db.Delete(key)
}
+20
View File
@@ -182,6 +182,15 @@ func (s *PackageSuite) TestLinkFromPool(c *C) {
c.Check(p.Files[0].Filename, Equals, "pool/non-free/a/alien-arena/alien-arena-common_7.40-2_i386.deb") c.Check(p.Files[0].Filename, Equals, "pool/non-free/a/alien-arena/alien-arena-common_7.40-2_i386.deb")
} }
func (s *PackageSuite) TestFilepathList(c *C) {
packageRepo := NewRepository(c.MkDir())
p := NewPackageFromControlFile(s.stanza)
list, err := p.FilepathList(packageRepo)
c.Check(err, IsNil)
c.Check(list, DeepEquals, []string{"1e/8c/alien-arena-common_7.40-2_i386.deb"})
}
func (s *PackageSuite) TestDownloadList(c *C) { func (s *PackageSuite) TestDownloadList(c *C) {
packageRepo := NewRepository(c.MkDir()) packageRepo := NewRepository(c.MkDir())
p := NewPackageFromControlFile(s.stanza) p := NewPackageFromControlFile(s.stanza)
@@ -247,3 +256,14 @@ func (s *PackageCollectionSuite) TestAllPackageRefs(c *C) {
c.Check(refs.Len(), Equals, 1) c.Check(refs.Len(), Equals, 1)
c.Check(refs.Refs[0], DeepEquals, s.p.Key()) c.Check(refs.Refs[0], DeepEquals, s.p.Key())
} }
func (s *PackageCollectionSuite) TestDeleteByKey(c *C) {
err := s.collection.Update(s.p)
c.Assert(err, IsNil)
err = s.collection.DeleteByKey(s.p.Key())
c.Check(err, IsNil)
_, err = s.collection.ByKey(s.p.Key())
c.Check(err, ErrorMatches, "key not found")
}