added basic skeleton and two API endpoints to test backend stack.

This commit is contained in:
2022-04-12 20:30:16 +02:00
parent 22e8290371
commit 11c0bd62e2
40 changed files with 1480 additions and 8 deletions
+61
View File
@@ -0,0 +1,61 @@
package main
import (
"git.aiterp.net/stufflog3/stufflog3-api/api"
"git.aiterp.net/stufflog3/stufflog3-api/internal/auth"
"git.aiterp.net/stufflog3/stufflog3-api/internal/database/mysql"
"git.aiterp.net/stufflog3/stufflog3-api/internal/envvars"
"github.com/gin-gonic/gin"
"log"
"os"
"os/signal"
"syscall"
)
func main() {
db, err := mysql.Connect(
envvars.String("STUFFLOG3_MYSQL_HOST"),
envvars.Int("STUFFLOG3_MYSQL_PORT"),
envvars.String("STUFFLOG3_MYSQL_USERNAME"),
envvars.String("STUFFLOG3_MYSQL_PASSWORD"),
envvars.String("STUFFLOG3_MYSQL_SCHEMA"),
)
if err != nil {
log.Println("Failed to open database:", err)
os.Exit(1)
}
server := gin.New()
if envvars.String("STUFFLOG3_USE_DUMMY_USER") != "" {
log.Println("Using dummy UUID")
server.Use(auth.DummyMiddleware("c11230be-4912-4313-83b0-410a248b5bd1"))
} else {
server.Use(auth.TrustingJwtParserMiddleware())
}
api.Scopes(server.Group("/api/scopes"), db)
exitSignal := make(chan os.Signal)
signal.Notify(exitSignal, os.Interrupt, os.Kill, syscall.SIGTERM)
errCh := make(chan error)
go func() {
err := server.Run(":8239")
if err != nil {
errCh <- err
}
}()
select {
case sig := <-exitSignal:
{
log.Println("Received signal", sig)
os.Exit(0)
}
case err := <-errCh:
{
log.Println("Server run failed:", err)
os.Exit(2)
}
}
}