diff --git a/models/lists.go b/models/lists.go index 35224a5f2..a96eb60e0 100644 --- a/models/lists.go +++ b/models/lists.go @@ -34,6 +34,25 @@ func GetListByID(id int64) (list List, err error) { return list, nil } +// +func GetListsByUser(user *User) (lists []*List, err error) { + fullUser, _, err := GetUserByID(user.ID) + if err != nil { + return + } + + err = x.Where("owner_id = ?", user.ID).Find(&lists) + if err != nil { + return + } + + for in := range lists { + lists[in].Owner = fullUser + } + + return +} + // CreateOrUpdateList updates a list or creates it if it doesn't exist func CreateOrUpdateList(list *List) (err error) { // Check if it exists diff --git a/routes/api/v1/lists_list.go b/routes/api/v1/lists_list.go new file mode 100644 index 000000000..7dffb257c --- /dev/null +++ b/routes/api/v1/lists_list.go @@ -0,0 +1,22 @@ +package v1 + +import ( + "github.com/labstack/echo" + "git.kolaente.de/konrad/list/models" + "net/http" +) + +func GetListsByUser(c echo.Context) error { + + currentUser, err := models.GetCurrentUser(c) + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Could not determine the current user."}) + } + + allLists, err := models.GetListsByUser(¤tUser) + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Could not get lists."}) + } + + return c.JSON(http.StatusOK, allLists) +} \ No newline at end of file diff --git a/routes/routes.go b/routes/routes.go index 571a40165..44ae20cec 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -42,6 +42,8 @@ func RegisterRoutes(e *echo.Echo) { a.OPTIONS("/register", SetCORSHeader) a.OPTIONS("/users", SetCORSHeader) a.OPTIONS("/users/:id", SetCORSHeader) + a.OPTIONS("/lists", SetCORSHeader) + a.OPTIONS("/lists/:id", SetCORSHeader) a.POST("/login", apiv1.Login) a.POST("/register", apiv1.UserAddOrUpdate) @@ -52,5 +54,6 @@ func RegisterRoutes(e *echo.Echo) { a.POST("/tokenTest", apiv1.CheckToken) a.PUT("/lists", apiv1.AddOrUpdateList) + a.GET("/lists", apiv1.GetListsByUser) a.POST("/lists/:id", apiv1.AddOrUpdateList) }