Files
tide/api/main.go
T
2023-09-17 16:27:40 +02:00

53 lines
1.2 KiB
Go

package main
import (
"encoding/json"
"log"
"net/http"
controllers "tide/api/controllers"
models "tide/api/models"
services "tide/api/services"
)
func main() {
db, err := services.NewDatabase()
if err != nil {
log.Fatal("Could not create database: ", err)
}
err = db.Migrate()
if err != nil {
log.Fatal("Could not migrate database: ", err)
}
aria2, err := services.NewAria2()
if err != nil {
log.Fatal("Could not connect to aria2", err)
}
controller := controllers.NewController(db, aria2)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodPost:
var newItem models.NewItem
err := json.NewDecoder(r.Body).Decode(&newItem)
if err != nil {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
item, err := controller.NewItem(newItem)
if err != nil {
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
json.NewEncoder(w).Encode(item)
w.WriteHeader(http.StatusCreated)
default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
}
})
log.Print("Listening on :7890")
http.ListenAndServe(":7890", nil)
}