56 lines
872 B
Go
56 lines
872 B
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"backend/router"
|
|
|
|
"git.trcreatives.com/triegebauer/go-dart"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
type App struct {
|
|
d *dart.Dart
|
|
}
|
|
|
|
func New() *App {
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
d := dart.New()
|
|
d.WithMySQLDatabase(dart.MySQLConfig{
|
|
Host: os.Getenv("DB_HOST"),
|
|
Port: os.Getenv("DB_PORT"),
|
|
Username: os.Getenv("DB_USERNAME"),
|
|
Password: os.Getenv("DB_PASSWORD"),
|
|
Database: os.Getenv("DB_DATABASE"),
|
|
})
|
|
|
|
router.SetupRoutes(d)
|
|
|
|
return &App{
|
|
d,
|
|
}
|
|
}
|
|
|
|
func (a *App) Start() {
|
|
listenAddr := fmt.Sprintf("%s:%s", os.Getenv("APP_HOST"), os.Getenv("APP_PORT"))
|
|
log.Fatal(a.d.Start(listenAddr))
|
|
}
|
|
|
|
func (a *App) Migrate(dst ...interface{}) error {
|
|
db, err := a.d.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := db.Conn.AutoMigrate(dst); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|