playback-device-server/main/main.go

66 lines
1.5 KiB
Go

package main
import (
"os"
"playback-device-server/server"
"playback-device-server/users"
"sync"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
const USER_DATABASE_DIR = "."
const WEB_SERVER_PORT = "8080"
func main() {
initializeLogger()
log.Info().Msg("starting playback device server")
userDatabase := users.UserDatabase{}
userDatabase.SetDirectory(USER_DATABASE_DIR)
err := userDatabase.Initialize()
if err != nil {
log.Error().Err(err).Msg("failed to initialize user database")
os.Exit(1)
}
defer userDatabase.Close()
userManager := users.UserManager{}
err = userManager.Initialize(&userDatabase)
if err != nil {
log.Error().Err(err).Msg("failed to initialize user manager")
}
webServer := server.WebServer{}
webServer.SetWebAppDirectoryPath("www")
webServer.SetPort(WEB_SERVER_PORT)
webServer.Initialize()
defer webServer.Close()
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
log.Info().Msg("starting web server")
err := webServer.Start()
if err != nil {
log.Error().Err(err).Msg("failed to start web server")
}
}()
wg.Wait()
}
func initializeLogger() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Printf("failed to open log file: %v", err)
}
consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout}
multi := zerolog.MultiLevelWriter(consoleWriter, file)
log.Logger = zerolog.New(multi).With().Timestamp().Logger()
}