diff --git a/docker-compose.yml b/docker-compose.yml index 886a7702270b7c743f9f2111df8512e106514be5..94ae39bd2ed9ab570b27c46c09777b596bd083e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,7 @@ services: - "8000:8000" environment: - DB_CONNECT=mariadb:3306 + - LOG_LEVEL=info mariadb: image: mariadb:10.5 volumes: diff --git a/service/planner/db/client.go b/service/planner/db/client.go index 613e86e136660e553824fb0a2ce2d4c8d2a062d8..a58ffc6f748578f190904a3bc75e214b595b6329 100644 --- a/service/planner/db/client.go +++ b/service/planner/db/client.go @@ -102,6 +102,10 @@ func GetUser(id int) (*model.User, error) { } } + if user.Mail == "" { + return nil, errors.New("account not found") + } + queryMeals, err := udb.Query("SELECT userId, mealId, date FROM userMeal WHERE userId = ?;", id) if err != nil { return nil, err @@ -155,6 +159,10 @@ func GetUsers() ([]*model.UserItem, error) { users = append(users, user) } + if len(users) <= 0 { + return nil, errors.New("no accounts found") + } + return users, nil } @@ -271,6 +279,10 @@ func GetGroup(id int) (*model.Group, error) { } } + if group.Name == "" { + return nil, errors.New("group not found") + } + queryMeals, err := udb.Query("SELECT groupId, mealId, date FROM groupMeal WHERE groupId = ?;", id) if err != nil { return nil, err @@ -302,6 +314,35 @@ func GetGroup(id int) (*model.Group, error) { return group, nil } +func GetGroups() ([]*model.GroupItem, error) { + udb, err := sql.Open(driverName, cfg.FormatDSN()) + if err != nil { + return nil, err + } + defer udb.Close() + + query, err := udb.Query("SELECT * FROM userGroup;") + if err != nil { + return nil, err + } + defer query.Close() + var groups []*model.GroupItem + for query.Next() { + group := &model.GroupItem{} + err = query.Scan(&group.ID, &group.Name) + if err != nil { + continue + } + groups = append(groups, group) + } + + if len(groups) <= 0 { + return nil, errors.New("no groups found") + } + + return groups, nil +} + func DeleteGroup(id int) (*model.Group, error) { udb, err := sql.Open(driverName, cfg.FormatDSN()) if err != nil { diff --git a/service/planner/handler/group.go b/service/planner/handler/group.go index 2e2119b5c406cf6c0ec88eddccb6a7048a3b22d6..8ccc94314574a62d949c75c5b9cd66930dede1a8 100644 --- a/service/planner/handler/group.go +++ b/service/planner/handler/group.go @@ -46,6 +46,15 @@ func GetGroup(w http.ResponseWriter, r *http.Request) { sendJson(w, group) } +func GetGroups(w http.ResponseWriter, r *http.Request) { + groups, err := service.GetGroups() + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + sendJson(w, groups) +} + func DeleteGroup(w http.ResponseWriter, r *http.Request) { id, err := getId(r) if err != nil { diff --git a/service/planner/model/group.go b/service/planner/model/group.go index 8069c0dcaae67e05634cdbe4b4aa773a5ed2da3c..d96c7cc338401af9201733383a42f78de36d7e01 100644 --- a/service/planner/model/group.go +++ b/service/planner/model/group.go @@ -6,3 +6,8 @@ type Group struct { UserIDs []int `json:"userIds"` Meals []GroupMeal `json:"meals"` } + +type GroupItem struct { + ID int `json:"id"` + Name string `json:"name"` +} diff --git a/service/planner/service/group.go b/service/planner/service/group.go index 018a81914d7f22211ae4aaf082f956cde5f8fcf8..f84b5427892677a25580d438246bc70cf1e8fb0f 100644 --- a/service/planner/service/group.go +++ b/service/planner/service/group.go @@ -23,6 +23,15 @@ func GetGroup(id int) (*model.Group, error) { return group, nil } +func GetGroups() ([]*model.GroupItem, error) { + groups, err := db.GetGroups() + if err != nil { + return nil, err + } + + return groups, nil +} + func DeleteGroup(id int) (*model.Group, error) { group, err := db.DeleteGroup(id) if err != nil {