refactor: Unify delete and move indexing behavior

This commit is contained in:
Felicitas Pojtinger
2021-12-07 01:43:04 +01:00
parent f26f899612
commit d1dfe5c2be
3 changed files with 7 additions and 13 deletions

View File

@@ -133,11 +133,6 @@ func delete(
// Append deletion hdrs to the tape or tar file
hdrs := []*tar.Header{}
for _, dbhdr := range headersToDelete {
// Check if the header hasn't already been deleted; the records will be corrected in the last index step
if _, err := metadataPersister.DeleteHeader(context.Background(), dbhdr.Name, -1, -1, false); err != nil {
return err
}
hdr, err := converters.DBHeaderToTarHeader(dbhdr)
if err != nil {
return err

View File

@@ -95,7 +95,10 @@ func (p *MetadataPersister) GetHeaders(ctx context.Context) (models.HeaderSlice,
}
func (p *MetadataPersister) GetHeader(ctx context.Context, name string) (*models.Header, error) {
return models.FindHeader(ctx, p.db, name)
return models.Headers(
qm.Where(models.HeaderColumns.Name+" = ?", name),
qm.Where(models.HeaderColumns.Deleted+" != 1"),
).One(ctx, p.db)
}
func (p *MetadataPersister) GetHeaderChildren(ctx context.Context, name string) (models.HeaderSlice, error) {
@@ -194,20 +197,16 @@ where %v like ?
return headers, nil
}
func (p *MetadataPersister) DeleteHeader(ctx context.Context, name string, lastknownrecord, lastknownblock int64, ignoreNotExists bool) (*models.Header, error) {
func (p *MetadataPersister) DeleteHeader(ctx context.Context, name string, lastknownrecord, lastknownblock int64) (*models.Header, error) {
hdr, err := models.FindHeader(ctx, p.db, name)
if err != nil {
if err == sql.ErrNoRows && ignoreNotExists {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, err
}
if hdr != nil && hdr.Deleted == 1 && !ignoreNotExists {
return nil, sql.ErrNoRows
}
hdr.Deleted = 1
hdr.Lastknownrecord = lastknownrecord
hdr.Lastknownblock = lastknownblock

View File

@@ -306,7 +306,7 @@ func indexHeader(
return err
}
case pax.STFSRecordActionDelete:
if _, err := metadataPersister.DeleteHeader(context.Background(), hdr.Name, record, block, true); err != nil {
if _, err := metadataPersister.DeleteHeader(context.Background(), hdr.Name, record, block); err != nil {
return err
}
case pax.STFSRecordActionUpdate: