if $POSTGRES_CONN set then use it
This commit is contained in:
18
config.go
18
config.go
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
@@ -8,6 +9,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
@@ -16,16 +18,17 @@ type Config struct {
|
|||||||
InitializeSlack bool
|
InitializeSlack bool
|
||||||
SlackToken string
|
SlackToken string
|
||||||
SlackChannels string
|
SlackChannels string
|
||||||
|
PostgresConn string
|
||||||
storage Storage
|
storage Storage
|
||||||
queue Queue
|
queue Queue
|
||||||
driver Driver
|
driver Driver
|
||||||
}
|
}
|
||||||
|
|
||||||
func newConfig() (Config, error) {
|
func newConfig(ctx context.Context) (Config, error) {
|
||||||
return newConfigFromEnv(os.Getenv)
|
return newConfigFromEnv(ctx, os.Getenv)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newConfigFromEnv(getEnv func(string) string) (Config, error) {
|
func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config, error) {
|
||||||
def := Config{
|
def := Config{
|
||||||
Port: 8080,
|
Port: 8080,
|
||||||
}
|
}
|
||||||
@@ -78,6 +81,15 @@ func newConfigFromEnv(getEnv func(string) string) (Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
result.driver = NewRAM()
|
result.driver = NewRAM()
|
||||||
|
if result.PostgresConn != "" {
|
||||||
|
ctx, can := context.WithTimeout(ctx, time.Second*10)
|
||||||
|
defer can()
|
||||||
|
pg, err := NewPostgres(ctx, result.PostgresConn)
|
||||||
|
if err != nil {
|
||||||
|
return Config{}, err
|
||||||
|
}
|
||||||
|
result.driver = pg
|
||||||
|
}
|
||||||
result.storage = NewStorage(result.driver)
|
result.storage = NewStorage(result.driver)
|
||||||
result.queue = NewQueue(result.driver)
|
result.queue = NewQueue(result.driver)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestNewConfig(t *testing.T) {
|
func TestNewConfig(t *testing.T) {
|
||||||
if got, err := newConfigFromEnv(func(k string) string {
|
if got, err := newConfigFromEnv(context.Background(), func(k string) string {
|
||||||
t.Logf("getenv(%s)", k)
|
t.Logf("getenv(%s)", k)
|
||||||
switch k {
|
switch k {
|
||||||
case "PORT":
|
case "PORT":
|
||||||
|
|||||||
2
main.go
2
main.go
@@ -19,7 +19,7 @@ func main() {
|
|||||||
ctx, can := signal.NotifyContext(context.Background(), syscall.SIGINT)
|
ctx, can := signal.NotifyContext(context.Background(), syscall.SIGINT)
|
||||||
defer can()
|
defer can()
|
||||||
|
|
||||||
cfg, err := newConfig()
|
cfg, err := newConfig(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user