refactor: Inject metadata persister

This commit is contained in:
Felicitas Pojtinger
2021-12-15 00:41:23 +01:00
parent 263a4e05d7
commit 71d28c8184
17 changed files with 98 additions and 85 deletions

View File

@@ -17,7 +17,6 @@ import (
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
"github.com/pojntfx/stfs/internal/statext"
@@ -32,7 +31,6 @@ var (
)
func (o *Operations) Archive(
metadata config.MetadataConfig,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -57,15 +55,10 @@ func (o *Operations) Archive(
return []*tar.Header{}, err
}
metadataPersister := persisters.NewMetadataPersister(metadata.Metadata)
if err := metadataPersister.Open(); err != nil {
return []*tar.Header{}, err
}
lastIndexedRecord := int64(0)
lastIndexedBlock := int64(0)
if !overwrite {
lastIndexedRecord, lastIndexedBlock, err = metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
lastIndexedRecord, lastIndexedBlock, err = o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
if err != nil {
return []*tar.Header{}, err
}
@@ -292,7 +285,9 @@ func (o *Operations) Archive(
return hdrs, recovery.Index(
reader,
drive,
metadata,
config.MetadataConfig{
Metadata: o.metadataPersister,
},
pipes,
crypto,

View File

@@ -7,7 +7,6 @@ import (
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
"github.com/pojntfx/stfs/internal/tarext"
@@ -16,7 +15,6 @@ import (
)
func (o *Operations) Delete(
metadata config.MetadataConfig,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -39,18 +37,13 @@ func (o *Operations) Delete(
return err
}
metadataPersister := persisters.NewMetadataPersister(metadata.Metadata)
if err := metadataPersister.Open(); err != nil {
return err
}
lastIndexedRecord, lastIndexedBlock, err := metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
if err != nil {
return err
}
headersToDelete := []*models.Header{}
dbhdr, err := metadataPersister.GetHeader(context.Background(), name)
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), name)
if err != nil {
return err
}
@@ -58,7 +51,7 @@ func (o *Operations) Delete(
// If the header refers to a directory, get it's children
if dbhdr.Typeflag == tar.TypeDir {
dbhdrs, err := metadataPersister.GetHeaderChildren(context.Background(), name)
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), name)
if err != nil {
return err
}
@@ -127,7 +120,9 @@ func (o *Operations) Delete(
return recovery.Index(
reader,
drive,
metadata,
config.MetadataConfig{
Metadata: o.metadataPersister,
},
pipes,
crypto,

View File

@@ -8,7 +8,6 @@ import (
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
"github.com/pojntfx/stfs/internal/tarext"
@@ -17,7 +16,6 @@ import (
)
func (o *Operations) Move(
metadata config.MetadataConfig,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -41,18 +39,13 @@ func (o *Operations) Move(
return err
}
metadataPersister := persisters.NewMetadataPersister(metadata.Metadata)
if err := metadataPersister.Open(); err != nil {
return err
}
lastIndexedRecord, lastIndexedBlock, err := metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
if err != nil {
return err
}
headersToMove := []*models.Header{}
dbhdr, err := metadataPersister.GetHeader(context.Background(), from)
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), from)
if err != nil {
return err
}
@@ -60,7 +53,7 @@ func (o *Operations) Move(
// If the header refers to a directory, get it's children
if dbhdr.Typeflag == tar.TypeDir {
dbhdrs, err := metadataPersister.GetHeaderChildren(context.Background(), from)
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), from)
if err != nil {
return err
}
@@ -131,7 +124,9 @@ func (o *Operations) Move(
return recovery.Index(
reader,
drive,
metadata,
config.MetadataConfig{
Metadata: o.metadataPersister,
},
pipes,
crypto,

View File

@@ -3,6 +3,7 @@ package operations
import (
"sync"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/pkg/config"
)
@@ -16,6 +17,8 @@ type Operations struct {
getDrive func() (config.DriveConfig, error)
closeDrive func() error
metadataPersister *persisters.MetadataPersister
diskOperationLock sync.Mutex
}
@@ -28,6 +31,8 @@ func NewOperations(
getDrive func() (config.DriveConfig, error),
closeDrive func() error,
metadataPersister *persisters.MetadataPersister,
) *Operations {
return &Operations{
getWriter: getWriter,
@@ -38,5 +43,7 @@ func NewOperations(
getDrive: getDrive,
closeDrive: closeDrive,
metadataPersister: metadataPersister,
}
}

View File

@@ -9,13 +9,11 @@ import (
"strings"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/pkg/config"
"github.com/pojntfx/stfs/pkg/recovery"
)
func (o *Operations) Restore(
metadata config.MetadataConfig,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -29,19 +27,14 @@ func (o *Operations) Restore(
o.diskOperationLock.Lock()
defer o.diskOperationLock.Unlock()
metadataPersister := persisters.NewMetadataPersister(metadata.Metadata)
if err := metadataPersister.Open(); err != nil {
return err
}
headersToRestore := []*models.Header{}
src := strings.TrimSuffix(from, "/")
dbhdr, err := metadataPersister.GetHeader(context.Background(), src)
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), src)
if err != nil {
if err == sql.ErrNoRows {
src = src + "/"
dbhdr, err = metadataPersister.GetHeader(context.Background(), src)
dbhdr, err = o.metadataPersister.GetHeader(context.Background(), src)
if err != nil {
return err
}
@@ -53,7 +46,7 @@ func (o *Operations) Restore(
// If the header refers to a directory, get it's children
if dbhdr.Typeflag == tar.TypeDir {
dbhdrs, err := metadataPersister.GetHeaderChildren(context.Background(), src)
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), src)
if err != nil {
return err
}

View File

@@ -15,7 +15,6 @@ import (
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
"github.com/pojntfx/stfs/internal/statext"
@@ -26,7 +25,6 @@ import (
)
func (o *Operations) Update(
metadata config.MetadataConfig,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -51,12 +49,7 @@ func (o *Operations) Update(
return []*tar.Header{}, err
}
metadataPersister := persisters.NewMetadataPersister(metadata.Metadata)
if err := metadataPersister.Open(); err != nil {
return []*tar.Header{}, err
}
lastIndexedRecord, lastIndexedBlock, err := metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), recordSize)
if err != nil {
return []*tar.Header{}, err
}
@@ -307,7 +300,9 @@ func (o *Operations) Update(
return hdrs, recovery.Index(
reader,
drive,
metadata,
config.MetadataConfig{
Metadata: o.metadataPersister,
},
pipes,
crypto,