From 263a4e05d7a2847555367f953b0094e37e9ec00d Mon Sep 17 00:00:00 2001 From: Felicitas Pojtinger Date: Wed, 15 Dec 2021 00:40:31 +0100 Subject: [PATCH] refactor: Clear database tables instead of truncating --- internal/persisters/metadata.go | 8 ++++++++ pkg/recovery/index.go | 21 +++------------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/internal/persisters/metadata.go b/internal/persisters/metadata.go index a8ca38a..65eae7f 100644 --- a/internal/persisters/metadata.go +++ b/internal/persisters/metadata.go @@ -240,3 +240,11 @@ func (p *MetadataPersister) GetLastIndexedRecordAndBlock(ctx context.Context, re return header.Lastknownrecord, header.Lastknownblock, nil } + +func (p *MetadataPersister) PurgeAllHeaders(ctx context.Context) error { + if _, err := models.Headers().DeleteAll(ctx, p.db); err != nil { + return err + } + + return nil +} diff --git a/pkg/recovery/index.go b/pkg/recovery/index.go index 47c27c9..6cdcf5b 100644 --- a/pkg/recovery/index.go +++ b/pkg/recovery/index.go @@ -8,7 +8,6 @@ import ( "io" "io/ioutil" "math" - "os" "strconv" "github.com/pojntfx/stfs/internal/converters" @@ -46,23 +45,9 @@ func Index( onHeader func(hdr *models.Header), ) error { if overwrite { - f, err := os.OpenFile(metadata.Metadata, os.O_WRONLY|os.O_CREATE, 0600) - if err != nil { + if err := metadata.Metadata.PurgeAllHeaders(context.Background()); err != nil { return err } - - if err := f.Truncate(0); err != nil { - return err - } - - if err := f.Close(); err != nil { - return err - } - } - - metadataPersister := persisters.NewMetadataPersister(metadata.Metadata) - if err := metadataPersister.Open(); err != nil { - return err } if reader.DriveIsRegular { @@ -134,7 +119,7 @@ func Index( return err } - if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption, onHeader); err != nil { + if err := indexHeader(record, block, hdr, metadata.Metadata, pipes.Compression, pipes.Encryption, onHeader); err != nil { return err } } @@ -220,7 +205,7 @@ func Index( return err } - if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption, onHeader); err != nil { + if err := indexHeader(record, block, hdr, metadata.Metadata, pipes.Compression, pipes.Encryption, onHeader); err != nil { return err } }