mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 08:58:41 +00:00
Pack bugs (#1016)
* correctly list packs in response Using append was adding a default pack response to the list of packs * handle unique index for packs that exist but are deleted
This commit is contained in:
parent
dd74d37033
commit
d45c0103d1
2 changed files with 29 additions and 9 deletions
|
|
@ -28,14 +28,34 @@ func (d *Datastore) PackByName(name string) (*kolide.Pack, bool, error) {
|
|||
|
||||
// NewPack creates a new Pack
|
||||
func (d *Datastore) NewPack(pack *kolide.Pack) (*kolide.Pack, error) {
|
||||
var (
|
||||
deletedPack kolide.Pack
|
||||
query string
|
||||
)
|
||||
err := d.db.Get(&deletedPack,
|
||||
"SELECT * FROM packs WHERE name = ? AND deleted", pack.Name)
|
||||
switch err {
|
||||
case nil:
|
||||
query = `
|
||||
REPLACE INTO packs
|
||||
( name, description, platform, created_by, disabled, deleted)
|
||||
VALUES ( ?, ?, ?, ?, ?, ?)
|
||||
`
|
||||
case sql.ErrNoRows:
|
||||
query = `
|
||||
INSERT INTO packs
|
||||
( name, description, platform, created_by, disabled, deleted)
|
||||
VALUES ( ?, ?, ?, ?, ?, ?)
|
||||
`
|
||||
default:
|
||||
return nil, errors.Wrap(err, "check for existing pack")
|
||||
}
|
||||
|
||||
query := `
|
||||
INSERT INTO packs ( name, description, platform, created_by, disabled )
|
||||
VALUES ( ?, ?, ?, ?, ?)
|
||||
`
|
||||
|
||||
result, err := d.db.Exec(query, pack.Name, pack.Description, pack.Platform, pack.CreatedBy, pack.Disabled)
|
||||
if err != nil {
|
||||
deleted := false
|
||||
result, err := d.db.Exec(query, pack.Name, pack.Description, pack.Platform, pack.CreatedBy, pack.Disabled, deleted)
|
||||
if err != nil && isDuplicate(err) {
|
||||
return nil, alreadyExists("Pack", deletedPack.ID)
|
||||
} else if err != nil {
|
||||
return nil, errors.Wrap(err, "creating new pack")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,12 +103,12 @@ func makeListPacksEndpoint(svc kolide.Service) endpoint.Endpoint {
|
|||
}
|
||||
|
||||
resp := listPacksResponse{Packs: make([]packResponse, len(packs), len(packs))}
|
||||
for _, pack := range packs {
|
||||
for i, pack := range packs {
|
||||
packResp, err := packResponseForPack(ctx, svc, *pack)
|
||||
if err != nil {
|
||||
return getPackResponse{Err: err}, nil
|
||||
}
|
||||
resp.Packs = append(resp.Packs, *packResp)
|
||||
resp.Packs[i] = *packResp
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue