mirror of
https://github.com/sigmasternchen/threadule
synced 2025-03-15 08:09:01 +00:00
fixed some config and log problems
This commit is contained in:
parent
9ce408f9c0
commit
21281b764d
5 changed files with 33 additions and 17 deletions
|
@ -2,8 +2,8 @@ package main
|
|||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/google/logger"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"threadule/backend/internal/app"
|
||||
|
@ -21,14 +21,13 @@ func main() {
|
|||
|
||||
cfg, err := config.Read(*configFile)
|
||||
if err != nil {
|
||||
fmt.Println("reading config file failed")
|
||||
fmt.Println(err)
|
||||
return
|
||||
log.Println("reading config file failed")
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
ctx := &app.Context{
|
||||
Config: cfg,
|
||||
Log: logger.Init("default", false, true, os.Stderr),
|
||||
Log: logger.Init("message logger", false, false, ioutil.Discard),
|
||||
AccessLog: log.New(os.Stdout, "access", log.Ldate|log.Lmicroseconds|log.Lmsgprefix),
|
||||
}
|
||||
|
||||
|
@ -40,8 +39,7 @@ func main() {
|
|||
|
||||
ctx.Data, err = data.Setup(ctx)
|
||||
if err != nil {
|
||||
ctx.Log.Error("couldn't setup persistence layer")
|
||||
ctx.Log.Fatal(err)
|
||||
ctx.Log.Fatal("couldn't setup persistence layer")
|
||||
}
|
||||
|
||||
handler := router.Setup(ctx)
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/pelletier/go-toml/v2"
|
||||
"io/fs"
|
||||
"os"
|
||||
)
|
||||
|
||||
type web struct {
|
||||
Port uint
|
||||
}
|
||||
|
||||
type database struct {
|
||||
DSN string
|
||||
}
|
||||
|
@ -17,14 +22,14 @@ type twitter struct {
|
|||
}
|
||||
|
||||
type Config struct {
|
||||
Port uint
|
||||
Web web
|
||||
Database database
|
||||
Twitter twitter
|
||||
}
|
||||
|
||||
func writeDefaultConfig(path string) error {
|
||||
content, err := toml.Marshal(&Config{
|
||||
Port: 8080,
|
||||
Web: web{Port: 8080},
|
||||
Database: database{DSN: ""},
|
||||
Twitter: twitter{
|
||||
ConsumerKey: "",
|
||||
|
@ -35,7 +40,12 @@ func writeDefaultConfig(path string) error {
|
|||
return fmt.Errorf("couldn't generate default config: %w", err)
|
||||
}
|
||||
|
||||
return os.WriteFile(path, content, fs.FileMode(0640))
|
||||
err = os.WriteFile(path, content, fs.FileMode(0640))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return errors.New(fmt.Sprintf("config file not be read; generated empty file in: %s", path))
|
||||
}
|
||||
|
||||
func Read(path string) (*Config, error) {
|
||||
|
|
|
@ -16,10 +16,11 @@ var _ app.Data = &Data{}
|
|||
func Setup(ctx *app.Context) (app.Data, error) {
|
||||
db, err := connect(ctx.Config.Database.DSN)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to connect to database: %w", err)
|
||||
ctx.Log.Errorf("failed to connect to database: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = migrate(db)
|
||||
err = migrate(ctx, db)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to migrate models: %w", err)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"strings"
|
||||
"threadule/backend/internal/app"
|
||||
"threadule/backend/internal/data/models"
|
||||
)
|
||||
|
||||
|
@ -12,7 +13,7 @@ func connect(dsn string) (*gorm.DB, error) {
|
|||
return gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
}
|
||||
|
||||
func migrate(db *gorm.DB) error {
|
||||
func migrate(ctx *app.Context, db *gorm.DB) error {
|
||||
var errs []error
|
||||
|
||||
errs = append(errs, db.AutoMigrate(&models.Group{}))
|
||||
|
@ -21,16 +22,22 @@ func migrate(db *gorm.DB) error {
|
|||
errs = append(errs, db.AutoMigrate(&models.Tweet{}))
|
||||
errs = append(errs, db.AutoMigrate(&models.Thread{}))
|
||||
|
||||
var last string
|
||||
errorBuilder := strings.Builder{}
|
||||
for _, err := range errs {
|
||||
if err != nil {
|
||||
errorBuilder.WriteString(err.Error())
|
||||
errorBuilder.WriteString("\n")
|
||||
if last != err.Error() {
|
||||
errorBuilder.WriteString(err.Error())
|
||||
errorBuilder.WriteString("\n")
|
||||
}
|
||||
last = err.Error()
|
||||
}
|
||||
}
|
||||
errorString := strings.TrimSpace(errorBuilder.String())
|
||||
ctx.Log.Errorf("migration error: %v", errorString)
|
||||
if errorBuilder.Len() == 0 {
|
||||
return nil
|
||||
} else {
|
||||
return errors.New(strings.TrimSpace(errorBuilder.String()))
|
||||
return errors.New(errorString)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,5 +7,5 @@ import (
|
|||
)
|
||||
|
||||
func StartServer(ctx *app.Context, handler http.Handler) error {
|
||||
return http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", ctx.Config.Port), handler)
|
||||
return http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", ctx.Config.Web.Port), handler)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue