removed dependencies
This commit is contained in:
@@ -27,13 +27,9 @@ type Postgres struct {
|
||||
fs embed.FS
|
||||
}
|
||||
|
||||
func NewStorage(db *sql.DB) (interface{}, error) {
|
||||
return &Postgres{db: db}, nil
|
||||
}
|
||||
|
||||
func NewStorageFS(fs embed.FS) func(*sql.DB) (interface{}, error) {
|
||||
return func(db *sql.DB) (interface{}, error) {
|
||||
return &Postgres{db: db, fs: fs}, nil
|
||||
func NewStorage() func(*sql.DB, embed.FS) interface{} {
|
||||
return func(db *sql.DB, fs embed.FS) interface{} {
|
||||
return &Postgres{db: db, fs: fs}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -28,13 +28,9 @@ type Sqlite struct {
|
||||
fs embed.FS
|
||||
}
|
||||
|
||||
func NewStorage(db *sql.DB) (interface{}, error) {
|
||||
return &Sqlite{db: db}, nil
|
||||
}
|
||||
|
||||
func NewStorageFS(fs embed.FS) func(*sql.DB) (interface{}, error) {
|
||||
return func(db *sql.DB) (interface{}, error) {
|
||||
return &Sqlite{db: db, fs: fs}, nil
|
||||
func NewStorage() func(*sql.DB, embed.FS) interface{} {
|
||||
return func(db *sql.DB, fs embed.FS) interface{} {
|
||||
return &Sqlite{db: db, fs: fs}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +138,7 @@ func (s *Sqlite) AddComment(ctx context.Context, req *pb.AddCommentReq) (id uint
|
||||
if err = tx.QueryRowContext(ctx, queryAddComment, req.Text, req.IdPackage).Scan(&id); err != nil {
|
||||
return id, err
|
||||
}
|
||||
|
||||
|
||||
return id, err
|
||||
}
|
||||
|
||||
|
@@ -4,8 +4,8 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"embed"
|
||||
"errors"
|
||||
|
||||
cmsstorage "go.unistack.org/cms-service/storage"
|
||||
"go.unistack.org/unistack-org/pkgdash/models"
|
||||
pb "go.unistack.org/unistack-org/pkgdash/proto"
|
||||
"go.unistack.org/unistack-org/pkgdash/storage/postgres"
|
||||
@@ -15,15 +15,26 @@ import (
|
||||
//go:embed migrations
|
||||
var fs embed.FS
|
||||
|
||||
var storages = cmsstorage.NewStorageInterface()
|
||||
var (
|
||||
storages = map[string]func(*sql.DB, embed.FS) interface{}{
|
||||
"postgres": postgres.NewStorage(),
|
||||
"sqlite": sqlite.NewStorage(),
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
storages.RegisterStorage("postgres", postgres.NewStorageFS(fs))
|
||||
storages.RegisterStorage("sqlite", sqlite.NewStorageFS(fs))
|
||||
type contextKey string
|
||||
|
||||
var (
|
||||
storeIdent = contextKey("store")
|
||||
)
|
||||
|
||||
type Migrate interface {
|
||||
MigrateUp() error
|
||||
MigrateDown() error
|
||||
}
|
||||
|
||||
type Storage interface {
|
||||
cmsstorage.Migrator
|
||||
Migrate
|
||||
|
||||
ListPackage(ctx context.Context) (models.ListPackage, error)
|
||||
UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq) error
|
||||
@@ -33,6 +44,27 @@ type Storage interface {
|
||||
GetModule(ctx context.Context, req *pb.GetModuleReq) (models.ListModule, error)
|
||||
}
|
||||
|
||||
func NewStorage(name string, db *sql.DB) (interface{}, error) {
|
||||
return storages.NewStorage(name, db)
|
||||
func NewStorage(name string, db *sql.DB) (Storage, error) {
|
||||
function, ok := storages[name]
|
||||
if !ok {
|
||||
return nil, errors.New("incorrect name store")
|
||||
}
|
||||
store := function(db, fs)
|
||||
database, ok := store.(Storage)
|
||||
if !ok {
|
||||
return nil, errors.New("dont implements interface Storage")
|
||||
}
|
||||
return database, nil
|
||||
}
|
||||
|
||||
func InContext(ctx context.Context, val Storage) context.Context {
|
||||
return context.WithValue(ctx, storeIdent, val)
|
||||
}
|
||||
|
||||
func FromContext(ctx context.Context) (Storage, error) {
|
||||
if store, ok := ctx.Value(storeIdent).(Storage); !ok {
|
||||
return nil, errors.New("empty store")
|
||||
} else {
|
||||
return store, nil
|
||||
}
|
||||
}
|
||||
|
@@ -19,18 +19,16 @@ func TestGetModule(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
st, err := sqlite.NewStorage(conn)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
st := sqlite.NewStorage()
|
||||
store := st(conn, fs)
|
||||
|
||||
s, ok := st.(Storage)
|
||||
s, ok := store.(Storage)
|
||||
if !ok {
|
||||
t.Fatal("typecast error")
|
||||
t.Fatal("dont implements interface Storage")
|
||||
}
|
||||
|
||||
req := &pb.GetModuleReq{
|
||||
Id: []uint64{1, 2, 5, 40},
|
||||
Id: []uint64{1, 2, 3},
|
||||
}
|
||||
|
||||
module, err := s.GetModule(context.Background(), req)
|
||||
|
Reference in New Issue
Block a user