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.BookList) a.GET("/books/:id", apiv1.BookShow) a.GET("/books/search", apiv1.BookSearch) // Lookup Authors a.GET("/authors/list", apiv1.AuthorsList) a.GET("/authors/:id", apiv1.AuthorShow) a.GET("/authors/search", apiv1.AuthorSearch) // Lookup Publishers a.GET("/publishers/list", apiv1.PublishersList) a.GET("/publishers/:id", apiv1.PublisherShow) a.GET("/publishers/search", apiv1.PublisherSearch) // 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 - ✔ Buch anzeigen /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 - ✔ Autor anzeigen /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 - ✔ Verlag anzeigen /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 */ }