Library/routes/routes.go

89 lines
2.1 KiB
Go

package routes
import (
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
apiv1 "git.mowie.cc/konrad/Library/routes/api/v1"
"git.mowie.cc/konrad/Library/models"
)
func NewEcho() *echo.Echo {
e := echo.New()
// Logger
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Format: "${time_rfc3339}: ${remote_ip} ${method} ${status} ${uri} - ${user_agent}\n",
}))
// Static Content
e.Static("/assets", "assets")
return e
}
func RegisterRoutes(e *echo.Echo) {
// API Routes
a := e.Group("/api/v1")
// Lookup Books
a.GET("/books/list", apiv1.List)
// Lookup Authors
// Lookup Publishers
// Login Route
e.POST("/login", Login)
// ===== Routes with Authetification =====
// Authetification
a.Use(middleware.JWT(models.Config.JWTLoginSecret))
a.POST("/tokenTest", apiv1.CheckToken)
// Manage Books
a.POST("/books/add", apiv1.Add)
// Manage Authors
// Manage Publishers
// Manage Users
/*
Alles nur mit Api machen, davor dann einen onepager mit vue.js.
(Alles mit | benötigt Authentifizierung)
Routes:
/ - entweder übersicht anzeigen (wenn der nutzer eingeloggt ist) oder auf /login weiterleiten
/login - Einloggen
/logout - ausloggen
/books/:id/edit - |Buch bearbeiten (inkl mengen)
/books/:id/delete - |Buch löschen
/books/search?s=se - Suchen
/books/list - Auflisten
/books/add - |Hinzufügen
/authors/:id/edit - |Autor bearbeiten
/authors/:id/delete - |Autor löschen (auch mit allem in books_author)
/authors/list - Autoren auflisten
/authors/search?s=d - Autoren suchen
/authors/add - |Hinzufügen
/publishers/:id/edit - |Verlag bearbeiten
/publishers/:id/delete - |Verlag löschen (bei büchern Verlag auf 0 setzen)
/publishers/list - Verlage auflisten
/publishers/search?s= - Verlage suchen
/publishers/add - |Hinzufügen
/settings - |Nutzereinstellungen (Passwort, name etc)
/user - Nutzer anzeigen
/user/add - |neue Nutzer anlegen
/user/:id/delete - |nutzer löschen
/user/:id/edit - |nutzer bearbeiten
*/
}