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" ) // NewEcho registers a new Echo instance 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 } // RegisterRoutes registers all routes for the application func RegisterRoutes(e *echo.Echo) { // CORS e.OPTIONS("/login", SetCORSHeader) e.OPTIONS("/api/v1/books", SetCORSHeader) // Basic Route e.Static("/", "assets/index.html") // Login Route e.POST("/login", Login) // API Routes a := e.Group("/api/v1") // Lookup Books a.GET("/books", apiv1.BookList) a.GET("/books/:id", apiv1.BookShow) a.GET("/books/search", apiv1.BookSearch) // Lookup Authors a.GET("/authors", apiv1.AuthorsList) a.GET("/authors/:id", apiv1.AuthorShow) a.GET("/authors/search", apiv1.AuthorSearch) // Lookup Publishers a.GET("/publishers", apiv1.PublishersList) a.GET("/publishers/:id", apiv1.PublisherShow) a.GET("/publishers/search", apiv1.PublisherSearch) // ===== Routes with Authetification ===== // Authetification a.Use(middleware.JWT(models.Config.JWTLoginSecret)) a.POST("/tokenTest", apiv1.CheckToken) // Manage Books a.PUT("/books", apiv1.BookAdd) a.DELETE("/books/:id", apiv1.BookDelete) // Manage Authors a.PUT("/authors", apiv1.AuthorAdd) a.DELETE("/authors/:id", apiv1.AuthorDelete) a.POST("/authors/:id", apiv1.AuthorUpdate) // Manage Publishers a.PUT("/publishers", apiv1.PublisherAdd) a.DELETE("/publishers/:id", apiv1.PublisherDelete) a.POST("/publishers/:id", apiv1.PublisherUpdate) // Manage Users /* Alles nur mit Api machen, davor dann einen onepager mit vue.js. (Alles mit | benötigt Authentifizierung) Routes: GET / - entweder übersicht anzeigen (wenn der nutzer eingeloggt ist) oder auf /login weiterleiten POST /login - ✔ Einloggen POST /logout - ausloggen GET /books/:id - ✔ Buch anzeigen POST /books/:id - |Buch bearbeiten (inkl mengen) DELETE /books/:id - ✔ |Buch löschen (+alle einträge in authors_books löschen dessen Bush dazu gehört) GET /books/search?s=se - ✔ Suchen GET /books/list - ✔ Auflisten PUT /books/add - ✔ |Hinzufügen GET /authors/:id - ✔ Autor anzeigen POST /authors/:id - ✔ |Autor bearbeiten DELETE /authors/:id - ✔ |Autor löschen (auch mit allem in books_author) GET /authors/list - ✔ Autoren auflisten GET /authors/search?s=d - ✔ Autoren suchen PUT /authors/add - ✔ |Hinzufügen GET /publishers/:id - ✔ Verlag anzeigen POST /publishers/:id - ✔ |Verlag bearbeiten DELETE /publishers/:id - ✔ |Verlag löschen (bei büchern Verlag auf 0 setzen) GET /publishers/list - ✔ Verlage auflisten GET /publishers/search?s= - ✔ Verlage suchen PUT /publishers/add - ✔ |Hinzufügen GET /settings - |Nutzereinstellungen (Passwort, name etc) POST /settings - |Nutzereinstellungen (Passwort, name etc) GET /user - Nutzer anzeigen PUT /user - |neue Nutzer anlegen DELETE /user/:id - |nutzer löschen POST /user/:id - |nutzer bearbeiten */ }