Files
stinkinator/backend/main.go
2024-10-27 23:15:38 +01:00

92 lines
1.9 KiB
Go

package main
import (
"fmt"
"github.com/gofiber/fiber/v3"
"io"
"log"
"os"
)
var Error *log.Logger
var Warning *log.Logger
func init() {
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
logFile, err := os.Create("main.log")
if err != nil {
log.Printf("Error creating log file: %v", err)
os.Exit(1)
}
logger := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(logger)
Error = log.New(io.MultiWriter(logFile, os.Stderr, os.Stdout),
fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"),
log.Lmicroseconds|log.Lshortfile)
Warning = log.New(io.MultiWriter(logFile, os.Stdout),
fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"),
log.Lmicroseconds|log.Lshortfile)
}
var db DB
var gs GuildService
var ps PlayerService
var ns NoteService
var as AssociationService
func main() {
db = DB{
path: "data/db.db",
}
err := db.Open()
if err != nil {
Error.Printf("Failed opening database: %v", err)
return
}
defer db.Close()
gs = GuildService{db: &db}
ps = PlayerService{db: &db}
ns = NoteService{db: &db}
as = AssociationService{db: &db}
app := fiber.New()
app.Post("/note/new", CreateNote)
log.Fatal(app.Listen(":3000"))
}
func CreateNote(c fiber.Ctx) error {
data := c.Body()
res := Response{}
note, err := ParseNote(string(data))
if err != nil {
Error.Printf("Failed parsing note: %v", err)
res.Success = false
res.Message = err.Error()
return c.Status(400).JSON(res)
}
if note.Player == "" {
Error.Printf("No player specified in note: %v", note)
res.Success = false
res.Message = "No player specified"
return c.Status(400).JSON(res)
}
dbnote, _, err := PersistNoteData(note)
if err != nil {
Error.Printf("Failed persisting note: %v", err)
res.Success = false
res.Message = err.Error()
return c.Status(500).JSON(res)
}
res.Data = dbnote
res.Message = "OK"
return c.Status(200).JSON(res)
}