refactor: storage interface
This commit is contained in:
+16
-13
@@ -1,27 +1,30 @@
|
|||||||
// fs implements Storage on filesystem
|
// fs implements galaxy/storage.Storage with filesystem
|
||||||
package fs
|
package fs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"fmt"
|
||||||
"galaxy/util"
|
"galaxy/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fs struct {
|
type fsStorage struct {
|
||||||
rootPath string
|
path string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStorage returns on-filesystem implementation of the "galaxy/storage.Storage" with root located at rootPath.
|
// NewFS returns on-filesystem implementation of the "galaxy/storage.Storage" with root located at rootPath.
|
||||||
// rootPath must me a directory and has write access to the current user. If initial checks failed, return nil and non-nil error.
|
// rootPath must me a directory and has write access to the current user. If initial checks failed, return nil and non-nil error.
|
||||||
func NewFS(rootPath string) (*fs, error) {
|
func NewStorage(path string) (*fsStorage, error) {
|
||||||
ok, err := util.Writable(rootPath)
|
if ok, err := util.PathExists(path, true); err != nil {
|
||||||
if err != nil {
|
return nil, fmt.Errorf("new storage: check path %q exists: %w", path, err)
|
||||||
return nil, err
|
} else if !ok {
|
||||||
|
return nil, fmt.Errorf("new storage: path %q does not exists", path)
|
||||||
}
|
}
|
||||||
if !ok {
|
if ok, err := util.Writable(path); err != nil {
|
||||||
return nil, errors.New("user does not have write permissions to the storage root")
|
return nil, fmt.Errorf("new storage: check path %q writable: %w", path, err)
|
||||||
|
} else if !ok {
|
||||||
|
return nil, fmt.Errorf("new storage: path %q is not writable", path)
|
||||||
}
|
}
|
||||||
s := &fs{
|
s := &fsStorage{
|
||||||
rootPath: rootPath,
|
path: path,
|
||||||
}
|
}
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
package storage
|
package storage
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"galaxy/model/client"
|
"galaxy/model/client"
|
||||||
"galaxy/model/order"
|
"galaxy/model/order"
|
||||||
"galaxy/model/report"
|
"galaxy/model/report"
|
||||||
"galaxy/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Storage interface {
|
type Storage interface {
|
||||||
@@ -53,24 +50,3 @@ type UIStorage interface {
|
|||||||
// I/O or encoding error may occur, it that case callback func will be called with non-nil error.
|
// I/O or encoding error may occur, it that case callback func will be called with non-nil error.
|
||||||
PutOrder(client.GameID, uint, order.Order, func(error))
|
PutOrder(client.GameID, uint, order.Order, func(error))
|
||||||
}
|
}
|
||||||
|
|
||||||
type storage struct {
|
|
||||||
path string
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewStorage(path string) (*storage, error) {
|
|
||||||
if ok, err := util.PathExists(path, true); err != nil {
|
|
||||||
return nil, fmt.Errorf("new storage: check path %q exists: %w", path, err)
|
|
||||||
} else if !ok {
|
|
||||||
return nil, fmt.Errorf("new storage: path %q does not exists", path)
|
|
||||||
}
|
|
||||||
if ok, err := util.Writable(path); err != nil {
|
|
||||||
return nil, fmt.Errorf("new storage: check path %q writable: %w", path, err)
|
|
||||||
} else if !ok {
|
|
||||||
return nil, fmt.Errorf("new storage: path %q is not writable", path)
|
|
||||||
}
|
|
||||||
s := &storage{
|
|
||||||
path: path,
|
|
||||||
}
|
|
||||||
return s, nil
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user