From 349d42ed020e9d855e40e8e7ae9f4be0b7337170 Mon Sep 17 00:00:00 2001
From: Sercan Yesildal <sercan.yesildal@gmail.com>
Date: Mon, 10 Jul 2023 11:59:14 +0200
Subject: [PATCH] update mariadb client

---
 docker-compose.yml               |  1 +
 service/planner/db/client.go     | 41 ++++++++++++++++++++++++++++++++
 service/planner/handler/group.go |  9 +++++++
 service/planner/model/group.go   |  5 ++++
 service/planner/service/group.go |  9 +++++++
 5 files changed, 65 insertions(+)

diff --git a/docker-compose.yml b/docker-compose.yml
index 886a770..94ae39b 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 613e86e..a58ffc6 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 2e2119b..8ccc943 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 8069c0d..d96c7cc 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 018a819..f84b542 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 {
-- 
GitLab