Skip to content
Snippets Groups Projects
Commit 35a00cb9 authored by Sercan Yesildal's avatar Sercan Yesildal
Browse files

added handler and routing

parent 3c1f84c4
No related branches found
No related tags found
No related merge requests found
package handler
import (
"net/http"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/service"
)
func CreateGroup(w http.ResponseWriter, r *http.Request) {
if err := service.CreateGroup(); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
func GetGroup(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
group, err := service.GetGroup(id)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
sendJson(w, group)
}
func DeleteGroup(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteGroup(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
func CreateUserGroupRelation(w http.ResponseWriter, r *http.Request) {
userId, err := getUserId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
groupId, err := getGroupId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateUserGroupRelation(userId, groupId); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
func DeleteUserGroupRelation(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteUserGroupRelation(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
package handler
import (
"encoding/json"
"net/http"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/service"
)
func getUserMeal(r *http.Request) (*model.UserMeal, error) {
var meal model.UserMeal
err := json.NewDecoder(r.Body).Decode(&meal)
if err != nil {
return nil, err
}
return &meal, nil
}
func getGroupMeal(r *http.Request) (*model.GroupMeal, error) {
var meal model.GroupMeal
err := json.NewDecoder(r.Body).Decode(&meal)
if err != nil {
return nil, err
}
return &meal, nil
}
func CreateUserMeal(w http.ResponseWriter, r *http.Request) {
meal, err := getUserMeal(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateUserMeal(meal); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, meal)
}
func DeleteUserMeal(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteUserMeal(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
func CreateGroupMeal(w http.ResponseWriter, r *http.Request) {
meal, err := getGroupMeal(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateGroupMeal(meal); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, meal)
}
func DeleteGroupMeal(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteGroupMeal(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
package handler
import (
"encoding/json"
"net/http"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/service"
)
func getShoppingDate(r *http.Request) (*model.ShoppingDate, error) {
var shoppingDate model.ShoppingDate
err := json.NewDecoder(r.Body).Decode(&shoppingDate)
if err != nil {
return nil, err
}
return &shoppingDate, nil
}
func CreateShoppingDate(w http.ResponseWriter, r *http.Request) {
shoppingDate, err := getShoppingDate(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateShoppingDate(shoppingDate); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, shoppingDate)
}
func DeleteShoppingDate(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteShoppingDate(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
package handler
import (
"encoding/json"
"net/http"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/service"
)
func getUser(r *http.Request) (*model.User, error) {
var user model.User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func CreateUser(w http.ResponseWriter, r *http.Request) {
user, err := getUser(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateUser(user); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, user)
}
func GetUser(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
user, err := service.GetUser(id)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
sendJson(w, user)
}
func UpdateUser(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
user, err := getUser(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.UpdateUser(id, user)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, user)
}
func DeleteUser(w http.ResponseWriter, r *http.Request) {
id, err := getId(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.DeleteUser(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, nil)
}
package handler
import (
"encoding/json"
"net/http"
"strconv"
"github.com/gorilla/mux"
)
func sendJson(w http.ResponseWriter, value interface{}) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(value); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func getId(r *http.Request) (int, error) {
vars := mux.Vars(r)
id, err := strconv.Atoi(vars["id"])
if err != nil {
return 0, err
}
return id, nil
}
func getUserId(r *http.Request) (int, error) {
vars := mux.Vars(r)
id, err := strconv.Atoi(vars["userId"])
if err != nil {
return 0, err
}
return id, nil
}
func getGroupId(r *http.Request) (int, error) {
vars := mux.Vars(r)
id, err := strconv.Atoi(vars["groupId"])
if err != nil {
return 0, err
}
return id, nil
}
......@@ -7,6 +7,7 @@ import (
"github.com/gorilla/mux"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/db"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/handler"
)
func init() {
......@@ -19,7 +20,21 @@ func init() {
func main() {
port := 8000
router := mux.NewRouter()
router.HandleFunc("/user/date/{id}", handler.DeleteShoppingDate).Methods(http.MethodDelete)
router.HandleFunc("/user/date", handler.CreateShoppingDate).Methods(http.MethodPost)
router.HandleFunc("/user/meal/{id}", handler.DeleteUserMeal).Methods(http.MethodDelete)
router.HandleFunc("/user/meal", handler.CreateUserMeal).Methods(http.MethodPost)
router.HandleFunc("/user/{id}", handler.GetUser).Methods(http.MethodGet)
router.HandleFunc("/user/{id}", handler.UpdateUser).Methods(http.MethodPut)
router.HandleFunc("/user/{id}", handler.DeleteUser).Methods(http.MethodDelete)
router.HandleFunc("/user", handler.CreateUser).Methods(http.MethodPost)
router.HandleFunc("/group/{groupId}/{userId}", handler.CreateUserGroupRelation).Methods(http.MethodPost)
router.HandleFunc("/group/{groupId}/{userId}", handler.DeleteUserGroupRelation).Methods(http.MethodDelete)
router.HandleFunc("/group/meal/{id}", handler.DeleteGroupMeal).Methods(http.MethodDelete)
router.HandleFunc("/group/meal", handler.CreateGroupMeal).Methods(http.MethodPost)
router.HandleFunc("/group/{id}", handler.GetGroup).Methods(http.MethodGet)
router.HandleFunc("/group/{id}", handler.DeleteGroup).Methods(http.MethodDelete)
router.HandleFunc("/group", handler.CreateGroup).Methods(http.MethodPost)
fmt.Printf("Server is listening on port :%v\n", port)
if err := http.ListenAndServe(fmt.Sprintf(":%v", port), router); err != nil {
log.Fatal(err)
......
package service
import "gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/db"
import (
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/db"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
)
func CreateUserMeal(userId int, mealId int, date string) error {
err := db.CreateUserMeal(userId, mealId, date)
func CreateUserMeal(meal *model.UserMeal) error {
err := db.CreateUserMeal(meal.UserID, meal.MealID, meal.Date)
if err != nil {
return err
}
......@@ -20,8 +23,8 @@ func DeleteUserMeal(id int) error {
return nil
}
func CreateGroupMeal(groupId int, mealId int, date string) error {
err := db.CreateGroupMeal(groupId, mealId, date)
func CreateGroupMeal(meal *model.GroupMeal) error {
err := db.CreateGroupMeal(meal.GroupID, meal.MealID, meal.Date)
if err != nil {
return err
}
......
package service
import "gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/db"
import (
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/db"
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
)
func CreateShoppingDate(userId int, date string) error {
err := db.CreateShoppingDate(userId, date)
func CreateShoppingDate(shoppingDate *model.ShoppingDate) error {
err := db.CreateShoppingDate(shoppingDate.UserID, shoppingDate.Date)
if err != nil {
return err
}
......
......@@ -5,8 +5,8 @@ import (
"gitlab.reutlingen-university.de/yesildas/mealplanner2go/service/planner/model"
)
func CreateUser(mail string, firstName string, lastName string) error {
err := db.CreateUser(mail, firstName, lastName)
func CreateUser(user *model.User) error {
err := db.CreateUser(user.Mail, user.FirstName, user.LastName)
if err != nil {
return err
}
......@@ -23,8 +23,8 @@ func GetUser(id int) (*model.User, error) {
return user, nil
}
func UpdateUser(id int, mail string, firstName string, lastName string) error {
err := db.UpdateUser(id, mail, firstName, lastName)
func UpdateUser(id int, user *model.User) error {
err := db.UpdateUser(id, user.Mail, user.FirstName, user.LastName)
if err != nil {
return err
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment