refactor: Inject metadata persister
This commit is contained in:
@@ -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,
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user