Files
MusicServer/pkg/conf/conf.go

104 lines
2.6 KiB
Go

package conf
import (
"embed"
"fmt"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
"log"
"music-server/pkg/api"
"music-server/pkg/db"
"music-server/pkg/helpers"
"os"
"strconv"
)
func SetupDb() {
// Get the value of an Environment Variable
host := os.Getenv("DB_HOST")
dbPort, dbPortErr := strconv.Atoi(os.Getenv("DB_PORT"))
if dbPortErr != nil {
dbPort = 0
}
username := os.Getenv("DB_USERNAME")
password := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
fmt.Printf("host: %s, dbPort: %v, username: %s, password: %s, dbName: %s\n",
host, dbPort, username, password, dbName)
if host == "" {
host = "localhost"
}
if dbPort == 0 {
dbPort = 5432
}
if username == "" {
username = "sebastian"
}
if password == "" {
password = "950100"
}
if dbName == "" {
dbName = "music_dev_local"
}
db.InitDB(host, dbPort, username, password, dbName)
}
func CloseDb() {
defer db.CloseDb()
}
func SetupRestServer(swagger embed.FS) {
router := gin.Default()
router.Use(helpers.SetCorsAndNoCacheHeaders())
sync := api.NewSync()
syncGroup := router.Group("/sync")
{
syncGroup.GET("", sync.SyncGames)
syncGroup.GET("/reset", sync.ResetGames)
}
music := api.NewMusic()
musicGroup := router.Group("/music")
{
musicGroup.GET("", music.GetSong)
musicGroup.GET("soundTest", music.GetSoundCheckSong)
musicGroup.GET("reset", music.ResetMusic)
musicGroup.GET("rand", music.GetRandomSong)
musicGroup.GET("rand/low", music.GetRandomSongLowChance)
musicGroup.GET("rand/classic", music.GetRandomSongClassic)
musicGroup.GET("info", music.GetSongInfo)
musicGroup.GET("list", music.GetPlayedSongs)
musicGroup.GET("next", music.GetNextSong)
musicGroup.GET("previous", music.GetPreviousSong)
musicGroup.GET("all", music.GetAllGamesRandom)
musicGroup.GET("all/order", music.GetAllGames)
musicGroup.GET("all/random", music.GetAllGamesRandom)
musicGroup.PUT("played", music.PutPlayed)
musicGroup.GET("addQue", music.AddLatestToQue)
musicGroup.GET("addPlayed", music.AddLatestPlayed)
}
index := api.NewIndex()
router.GET("/version", index.GetVersion)
router.GET("/test", index.GetDBTest)
router.StaticFS("/swagger", helpers.EmbedFolder(swagger, "swagger", false))
router.Use(static.Serve("/", static.LocalFile("/frontend", true)))
router.Use(static.Serve("/new", static.LocalFile("/newFrontend", true)))
port := os.Getenv("PORT")
if port == "" {
port = "8080"
log.Printf("Defaulting to port %s", port)
}
log.Printf("Open http://localhost:%s in the browser", port)
err := router.Run(fmt.Sprintf(":%s", port))
if err != nil {
panic(err)
}
}