Refactor & simplify internal (plain) storage
Default internal storage becomes "plain" storage Open() fn now returns io.ReadSeeker instead of afero.File
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/cortezaproject/corteza-server/pkg/cli/options"
|
||||
"github.com/cortezaproject/corteza-server/pkg/permissions"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store/plain"
|
||||
systemProto "github.com/cortezaproject/corteza-server/system/proto"
|
||||
)
|
||||
|
||||
@@ -77,7 +78,7 @@ func Init(ctx context.Context, log *zap.Logger, c Config) (err error) {
|
||||
DefaultLogger = log.Named("service")
|
||||
|
||||
if DefaultStore == nil {
|
||||
DefaultStore, err = store.New(c.Storage.Path)
|
||||
DefaultStore, err = plain.New(c.Storage.Path)
|
||||
log.Info("initializing store", zap.String("path", c.Storage.Path), zap.Error(err))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"github.com/cortezaproject/corteza-server/pkg/http"
|
||||
"github.com/cortezaproject/corteza-server/pkg/permissions"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store/plain"
|
||||
)
|
||||
|
||||
type (
|
||||
@@ -48,7 +49,7 @@ func Init(ctx context.Context, log *zap.Logger, c Config) (err error) {
|
||||
DefaultLogger = log.Named("service")
|
||||
|
||||
if DefaultStore == nil {
|
||||
DefaultStore, err = store.New(c.Storage.Path)
|
||||
DefaultStore, err = plain.New(c.Storage.Path)
|
||||
log.Info("initializing store", zap.String("path", c.Storage.Path), zap.Error(err))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
22
pkg/store/interfaces.go
Normal file
22
pkg/store/interfaces.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"io"
|
||||
)
|
||||
|
||||
type Store interface {
|
||||
// Original returns URL to the original file
|
||||
Original(id uint64, ext string) string
|
||||
|
||||
// Preview returns URL to the preview (of the original) file
|
||||
Preview(id uint64, ext string) string
|
||||
|
||||
// Save stores the file
|
||||
Save(filename string, f io.Reader) error
|
||||
|
||||
// Remove deletes the file
|
||||
Remove(filename string) error
|
||||
|
||||
// Open returns file handle
|
||||
Open(filename string) (io.ReadSeeker, error)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package store
|
||||
package plain
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -18,17 +18,6 @@ type (
|
||||
originalFn func(id uint64, ext string) string
|
||||
previewFn func(id uint64, ext string) string
|
||||
}
|
||||
|
||||
Store interface {
|
||||
Namespace() string
|
||||
|
||||
Original(id uint64, ext string) string
|
||||
Preview(id uint64, ext string) string
|
||||
|
||||
Save(filename string, contents io.Reader) error
|
||||
Remove(filename string) error
|
||||
Open(filename string) (afero.File, error)
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -55,10 +44,6 @@ func NewWithAfero(fs afero.Fs, namespace string) (*store, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *store) Namespace() string {
|
||||
return s.namespace
|
||||
}
|
||||
|
||||
func (s *store) check(filename string) error {
|
||||
if len(filename) == 0 {
|
||||
return errors.Errorf("Invalid filename when trying to store file: '%s' (for %s)", filename, s.namespace)
|
||||
@@ -103,7 +88,7 @@ func (s *store) Remove(filename string) error {
|
||||
return s.fs.Remove(filename)
|
||||
}
|
||||
|
||||
func (s *store) Open(filename string) (afero.File, error) {
|
||||
func (s *store) Open(filename string) (io.ReadSeeker, error) {
|
||||
// check filename for validity
|
||||
if err := s.check(filename); err != nil {
|
||||
return nil, err
|
||||
@@ -1,4 +1,4 @@
|
||||
package store
|
||||
package plain
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -20,7 +20,6 @@ func TestStore(t *testing.T) {
|
||||
|
||||
require.True(t, err == nil, "Unexpected error when creating store: %+v", err)
|
||||
require.True(t, store != nil, "Expected non-nil return for new store")
|
||||
require.True(t, store.Namespace() == "test", "Unexpected store namespace: test != %s", store.Namespace())
|
||||
|
||||
{
|
||||
fn := store.Original(123, "jpg")
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
"github.com/cortezaproject/corteza-server/pkg/logger"
|
||||
"github.com/cortezaproject/corteza-server/pkg/permissions"
|
||||
"github.com/cortezaproject/corteza-server/pkg/rand"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store/plain"
|
||||
sysTypes "github.com/cortezaproject/corteza-server/system/types"
|
||||
"github.com/cortezaproject/corteza-server/tests/helpers"
|
||||
)
|
||||
@@ -87,7 +87,7 @@ func InitConfig() {
|
||||
|
||||
logger.SetDefault(log)
|
||||
service.DefaultPermissions = p
|
||||
if service.DefaultStore, err = store.NewWithAfero(afero.NewMemMapFs(), "test"); err != nil {
|
||||
if service.DefaultStore, err = plain.NewWithAfero(afero.NewMemMapFs(), "test"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
"github.com/cortezaproject/corteza-server/pkg/logger"
|
||||
"github.com/cortezaproject/corteza-server/pkg/permissions"
|
||||
"github.com/cortezaproject/corteza-server/pkg/rand"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store"
|
||||
"github.com/cortezaproject/corteza-server/pkg/store/plain"
|
||||
sysTypes "github.com/cortezaproject/corteza-server/system/types"
|
||||
"github.com/cortezaproject/corteza-server/tests/helpers"
|
||||
)
|
||||
@@ -77,7 +77,7 @@ func InitConfig() {
|
||||
|
||||
logger.SetDefault(log)
|
||||
service.DefaultPermissions = p
|
||||
if service.DefaultStore, err = store.NewWithAfero(afero.NewMemMapFs(), "test"); err != nil {
|
||||
if service.DefaultStore, err = plain.NewWithAfero(afero.NewMemMapFs(), "test"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user