2025-04-23 11:25:55 +00:00

60 lines
901 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 ...any) error {
if len(dst) == 0 {
return nil
}
db, err := a.d.DB()
if err != nil {
return err
}
if err := db.Conn.AutoMigrate(dst); err != nil {
return err
}
return nil
}