From fa585db4db0b07d573ee1db81f8b7b3259ba9469 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Wed, 14 Sep 2022 19:04:11 -0800 Subject: [PATCH] update env variables to set data storage --- backend/app/api/main.go | 21 ++++++++------- backend/config.template.yml | 19 -------------- backend/internal/config/conf.go | 12 ++++----- backend/internal/config/conf_database.go | 20 +++----------- backend/internal/config/conf_database_test.go | 26 ------------------- backend/internal/mocks/mocker_services.go | 2 +- backend/internal/services/all.go | 4 +-- backend/internal/services/main_test.go | 2 +- 8 files changed, 26 insertions(+), 80 deletions(-) delete mode 100644 backend/config.template.yml delete mode 100644 backend/internal/config/conf_database_test.go diff --git a/backend/app/api/main.go b/backend/app/api/main.go index a3e9c7b..5d233e7 100644 --- a/backend/app/api/main.go +++ b/backend/app/api/main.go @@ -37,10 +37,6 @@ func main() { path = os.Args[1] } - if path == "" { - log.Warn().Msg("No configuration detected, using defaults") - } - cfg, err := config.NewConfig(path) if err != nil { panic(err) @@ -55,17 +51,22 @@ func main() { func run(cfg *config.Config) error { app := new(cfg) - app.setupLogger() + // ========================================================================= // Initialize Database & Repos - c, err := ent.Open(cfg.Database.GetDriver(), cfg.Database.GetUrl()) + err := os.MkdirAll(cfg.Storage.Data, 0755) + if err != nil { + log.Fatal().Err(err).Msg("failed to create data directory") + } + + c, err := ent.Open("sqlite3", cfg.Storage.SqliteUrl) if err != nil { log.Fatal(). Err(err). - Str("driver", cfg.Database.GetDriver()). - Str("url", cfg.Database.GetUrl()). + Str("driver", "sqlite"). + Str("url", cfg.Storage.SqliteUrl). Msg("failed opening connection to sqlite") } defer func(c *ent.Client) { @@ -74,12 +75,14 @@ func run(cfg *config.Config) error { if err := c.Schema.Create(context.Background()); err != nil { log.Fatal(). Err(err). + Str("driver", "sqlite"). + Str("url", cfg.Storage.SqliteUrl). Msg("failed creating schema resources") } app.db = c app.repos = repo.EntAllRepos(c) - app.services = services.NewServices(app.repos) + app.services = services.NewServices(app.repos, cfg.Storage.Data) // ========================================================================= // Start Server diff --git a/backend/config.template.yml b/backend/config.template.yml deleted file mode 100644 index 7ee50a6..0000000 --- a/backend/config.template.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -mode: development -swagger: - host: localhost:7745 - scheme: http -web: - port: 7745 - host: "" -database: - driver: sqlite3 - sqlite-url: ./homebox.db?_fk=1 -logger: - level: debug -mailer: - host: smtp.example.com - port: 465 - username: - password: - from: example@email.com diff --git a/backend/internal/config/conf.go b/backend/internal/config/conf.go index d9ffe0c..c6493f5 100644 --- a/backend/internal/config/conf.go +++ b/backend/internal/config/conf.go @@ -17,12 +17,12 @@ const ( ) type Config struct { - Mode string `yaml:"mode" conf:"default:development"` // development or production - Web WebConfig `yaml:"web"` - Database Database `yaml:"database"` - Log LoggerConf `yaml:"logger"` - Mailer MailerConf `yaml:"mailer"` - Swagger SwaggerConf `yaml:"swagger"` + Mode string `yaml:"mode" conf:"default:development"` // development or production + Web WebConfig `yaml:"web"` + Storage Storage `yaml:"storage"` + Log LoggerConf `yaml:"logger"` + Mailer MailerConf `yaml:"mailer"` + Swagger SwaggerConf `yaml:"swagger"` } type SwaggerConf struct { diff --git a/backend/internal/config/conf_database.go b/backend/internal/config/conf_database.go index 7b396bd..047d5d2 100644 --- a/backend/internal/config/conf_database.go +++ b/backend/internal/config/conf_database.go @@ -4,20 +4,8 @@ const ( DriverSqlite3 = "sqlite3" ) -type Database struct { - Driver string `yaml:"driver" conf:"default:sqlite3"` - SqliteUrl string `yaml:"sqlite-url" conf:"default:file:ent?mode=memory&cache=shared&_fk=1"` -} - -func (d *Database) GetDriver() string { - return d.Driver -} - -func (d *Database) GetUrl() string { - switch d.Driver { - case DriverSqlite3: - return d.SqliteUrl - default: - panic("unknown database driver") - } +type Storage struct { + // Data is the path to the root directory + Data string `yaml:"data" conf:"default:./homebox-data"` + SqliteUrl string `yaml:"sqlite-url" conf:"default:./homebox-data/homebox.db?_fk=1"` } diff --git a/backend/internal/config/conf_database_test.go b/backend/internal/config/conf_database_test.go deleted file mode 100644 index f11c21c..0000000 --- a/backend/internal/config/conf_database_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package config - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func Test_DatabaseConfig_Sqlite(t *testing.T) { - dbConf := &Database{ - Driver: DriverSqlite3, - SqliteUrl: "file:ent?mode=memory&cache=shared&_fk=1", - } - - assert.Equal(t, "sqlite3", dbConf.GetDriver()) - assert.Equal(t, "file:ent?mode=memory&cache=shared&_fk=1", dbConf.GetUrl()) -} - -func Test_DatabaseConfig_Unknown(t *testing.T) { - dbConf := &Database{ - Driver: "null", - } - - assert.Panics(t, func() { dbConf.GetUrl() }) - -} diff --git a/backend/internal/mocks/mocker_services.go b/backend/internal/mocks/mocker_services.go index dab71e0..d1e80bd 100644 --- a/backend/internal/mocks/mocker_services.go +++ b/backend/internal/mocks/mocker_services.go @@ -6,5 +6,5 @@ import ( ) func GetMockServices(repos *repo.AllRepos) *services.AllServices { - return services.NewServices(repos) + return services.NewServices(repos, "/tmp/homebox") } diff --git a/backend/internal/services/all.go b/backend/internal/services/all.go index 7d1402e..44ef900 100644 --- a/backend/internal/services/all.go +++ b/backend/internal/services/all.go @@ -10,7 +10,7 @@ type AllServices struct { Items *ItemService } -func NewServices(repos *repo.AllRepos) *AllServices { +func NewServices(repos *repo.AllRepos, root string) *AllServices { return &AllServices{ User: &UserService{repos}, Admin: &AdminService{repos}, @@ -18,7 +18,7 @@ func NewServices(repos *repo.AllRepos) *AllServices { Labels: &LabelService{repos}, Items: &ItemService{ repo: repos, - filepath: "/tmp/content", + filepath: root, }, } } diff --git a/backend/internal/services/main_test.go b/backend/internal/services/main_test.go index 1337c86..f010ecb 100644 --- a/backend/internal/services/main_test.go +++ b/backend/internal/services/main_test.go @@ -63,7 +63,7 @@ func TestMain(m *testing.M) { tClient = client tRepos = repo.EntAllRepos(tClient) - tSvc = NewServices(tRepos) + tSvc = NewServices(tRepos, "/tmp/homebox") defer client.Close() bootstrap()