refactor: Unify delete and move indexing behavior
This commit is contained in:
@@ -133,11 +133,6 @@ func delete(
|
|||||||
// Append deletion hdrs to the tape or tar file
|
// Append deletion hdrs to the tape or tar file
|
||||||
hdrs := []*tar.Header{}
|
hdrs := []*tar.Header{}
|
||||||
for _, dbhdr := range headersToDelete {
|
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)
|
hdr, err := converters.DBHeaderToTarHeader(dbhdr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -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) {
|
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) {
|
func (p *MetadataPersister) GetHeaderChildren(ctx context.Context, name string) (models.HeaderSlice, error) {
|
||||||
@@ -194,20 +197,16 @@ where %v like ?
|
|||||||
return headers, nil
|
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)
|
hdr, err := models.FindHeader(ctx, p.db, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == sql.ErrNoRows && ignoreNotExists {
|
if err == sql.ErrNoRows {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if hdr != nil && hdr.Deleted == 1 && !ignoreNotExists {
|
|
||||||
return nil, sql.ErrNoRows
|
|
||||||
}
|
|
||||||
|
|
||||||
hdr.Deleted = 1
|
hdr.Deleted = 1
|
||||||
hdr.Lastknownrecord = lastknownrecord
|
hdr.Lastknownrecord = lastknownrecord
|
||||||
hdr.Lastknownblock = lastknownblock
|
hdr.Lastknownblock = lastknownblock
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ func indexHeader(
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case pax.STFSRecordActionDelete:
|
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
|
return err
|
||||||
}
|
}
|
||||||
case pax.STFSRecordActionUpdate:
|
case pax.STFSRecordActionUpdate:
|
||||||
|
|||||||
Reference in New Issue
Block a user