initial import
Some checks failed
build / test (push) Failing after 5s
build / lint (push) Failing after 6s

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2024-09-26 19:45:39 +03:00
parent c08ab26cf9
commit 973f9ac822
21 changed files with 3074 additions and 0 deletions

View File

View File

3
storage/models.go Normal file
View File

@@ -0,0 +1,3 @@
package storage
// TODO: create models

View File

@@ -0,0 +1,75 @@
// go:build postgres
package postgres
import (
"database/sql"
"embed"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
type PostgresStorage struct {
db *sql.DB
fs embed.FS
}
func NewStoragePostgres(fs embed.FS) func(*sql.DB) (interface{}, error) {
return func(db *sql.DB) (interface{}, error) {
return &PostgresStorage{db: db, fs: fs}, nil
}
}
func (s *PostgresStorage) MigrateUp() error {
driver, err := postgres.WithInstance(s.db, &postgres.Config{
MigrationsTable: postgres.DefaultMigrationsTable,
DatabaseName: "template",
})
if err != nil {
return err
}
source, err := iofs.New(s.fs, "migrations/postgres")
if err != nil {
return err
}
// TODO: pass own logger
m, err := migrate.NewWithInstance("fs", source, "template", driver)
if err != nil {
return err
}
if err = m.Up(); err != nil && err != migrate.ErrNoChange {
return err
}
return nil
}
func (s *PostgresStorage) MigrateDown() error {
driver, err := postgres.WithInstance(s.db, &postgres.Config{
MigrationsTable: postgres.DefaultMigrationsTable,
DatabaseName: "template",
})
if err != nil {
return err
}
source, err := iofs.New(s.fs, "migrations/postgres")
if err != nil {
return err
}
// TODO: pass own logger
m, err := migrate.NewWithInstance("fs", source, "template", driver)
if err != nil {
return err
}
if err = m.Down(); err != nil && err != migrate.ErrNoChange {
return err
}
return nil
}

View File

@@ -0,0 +1,5 @@
package postgres
const (
// TODO: fill queries
)

5
storage/sqlite/query.go Normal file
View File

@@ -0,0 +1,5 @@
package sqlite
const (
// TODO: fill queries
)

75
storage/sqlite/sqlite.go Normal file
View File

@@ -0,0 +1,75 @@
// go:build sqlite
package sqlite
import (
"database/sql"
"embed"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
type SqliteStorage struct {
db *sql.DB
fs embed.FS
}
func NewStorageSqlite(fs embed.FS) func(*sql.DB) (interface{}, error) {
return func(db *sql.DB) (interface{}, error) {
return &SqliteStorage{db: db, fs: fs}, nil
}
}
func (s *SqliteStorage) MigrateUp() error {
driver, err := sqlite.WithInstance(s.db, &sqlite.Config{
MigrationsTable: sqlite.DefaultMigrationsTable,
DatabaseName: "template",
})
if err != nil {
return err
}
source, err := iofs.New(s.fs, "migrations/sqlite")
if err != nil {
return err
}
// TODO: pass own logger
m, err := migrate.NewWithInstance("fs", source, "template", driver)
if err != nil {
return err
}
if err = m.Up(); err != nil && err != migrate.ErrNoChange {
return err
}
return nil
}
func (s *SqliteStorage) MigrateDown() error {
driver, err := sqlite.WithInstance(s.db, &sqlite.Config{
MigrationsTable: sqlite.DefaultMigrationsTable,
DatabaseName: "template",
})
if err != nil {
return err
}
source, err := iofs.New(s.fs, "migrations/sqlite")
if err != nil {
return err
}
// TODO: pass own logger
m, err := migrate.NewWithInstance("fs", source, "template", driver)
if err != nil {
return err
}
if err = m.Down(); err != nil && err != migrate.ErrNoChange {
return err
}
return nil
}

29
storage/storage.go Normal file
View File

@@ -0,0 +1,29 @@
package storage
import (
"context"
"database/sql"
"embed"
store "go.unistack.org/cms-service/storage"
"go.unistack.org/cms-template/storage/sqlite"
)
//go:embed all:migrations
var fs embed.FS
var storages = store.NewStorageInterface()
func init() {
storages.RegisterStorage("sqlite", sqlite.NewStorageSqlite(fs))
}
type Storage interface {
Auth(ctx context.Context, login, passw string) error
Delete(ctx context.Context, uuid string) error
store.Migrator
}
func NewStorage(name string, db *sql.DB) (interface{}, error) {
return storages.NewStorage(name, db)
}