From 24e5fc916019c7b715226b89e1caf7ed7e79a519 Mon Sep 17 00:00:00 2001 From: Harsh Singhvi Date: Wed, 22 Nov 2023 01:21:02 +0530 Subject: [PATCH] Added Filters to GetAll Todos, Removed Todos comments, added port config --- controllers/controllers.go | 6 +++++ controllers_old/controllers_old.go | 1 - database/database.go | 1 - docker-compose.yml | 38 +++++++++++++++--------------- main.go | 10 ++++---- models/auth.go | 2 +- 6 files changed, 31 insertions(+), 27 deletions(-) diff --git a/controllers/controllers.go b/controllers/controllers.go index 5846b15..a770d5d 100644 --- a/controllers/controllers.go +++ b/controllers/controllers.go @@ -22,6 +22,7 @@ func GetAllTodos(c *gin.Context) { var todos []models.Todo var searchString = c.Query("search") var pageString = c.Query("page") + var completedString = c.Query("completed") pag.ParseString(pageString) querry := database.Connection.Model(&todos).Order("created_at DESC").Where("deleted = ?", false).Where("user_id = ?", userId) @@ -30,6 +31,11 @@ func GetAllTodos(c *gin.Context) { querry = querry.Where(fmt.Sprintf("text like '%%%s%%'", searchString)) } + if completedString != "" { + var completed = completedString == "true" || completedString == "True" + querry = querry.Where("completed = ?", completed) + } + if pag.TotalRecords, err = querry.Count(); err != nil { utils.InternalServerError(c, "Error while getting all todos, Reason:", err) return diff --git a/controllers_old/controllers_old.go b/controllers_old/controllers_old.go index fd06cf8..dc1a6e1 100644 --- a/controllers_old/controllers_old.go +++ b/controllers_old/controllers_old.go @@ -14,7 +14,6 @@ var TODOS = []models.Todo{ func GetTodos(c *gin.Context) { id := c.Query("id") - // completed := c.Query("completed") == "true" // TODO: implement this filter if id == "" { c.IndentedJSON(http.StatusOK, TODOS) diff --git a/database/database.go b/database/database.go index bb6a4d8..f5e880f 100644 --- a/database/database.go +++ b/database/database.go @@ -86,7 +86,6 @@ func createTablesAndIndexes(tableName string, model interface{}, indexFields str func CreateTables() { createTablesAndIndexes("todos", &models.Todo{}, "completed, created_at, deleted") createTablesAndIndexes("access_tokens", &models.AccessToken{}, "created_at, token, expiry, user_id, deleted") - // TODO: fails createTablesAndIndexes("access_logs", &models.AccessLog{}, "token_id, path, method, response_time, status_code, server_hostname, created_at, bill_id, billed, deleted") createTablesAndIndexes("users", &models.User{}, "email, created_at, deleted") createTablesAndIndexes("bills", &models.Bill{}, "sattled, user_id, created_at, deleted") diff --git a/docker-compose.yml b/docker-compose.yml index 868962a..42eb85b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,24 @@ version: '3' services: - app: - container_name: go-todo-api - build: . - ports: - - 8080:8080 - restart: on-failure - depends_on: - - postgres - networks: - - fullstack - environment: - - DB_HOST=postgres - - DB_DRIVER=${DB_DRIVER} - - DB_USER=${DB_USER} - - DB_PASSWORD=${DB_PASSWORD} - - DB_NAME=${DB_NAME} - - DB_PORT=${DB_PORT} - - POSTGRES_URL=${POSTGRES_URL} - - PORT=${PORT} + # app: + # container_name: go-todo-api + # build: . + # ports: + # - 8080:8080 + # restart: on-failure + # depends_on: + # - postgres + # networks: + # - fullstack + # environment: + # - DB_HOST=postgres + # - DB_DRIVER=${DB_DRIVER} + # - DB_USER=${DB_USER} + # - DB_PASSWORD=${DB_PASSWORD} + # - DB_NAME=${DB_NAME} + # - DB_PORT=${DB_PORT} + # - POSTGRES_URL=${POSTGRES_URL} + # - PORT=${PORT} postgres: image: postgres:latest diff --git a/main.go b/main.go index 5402d0e..e5f083b 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "github.com/gin-gonic/gin" "github.com/joho/godotenv" "harshsinghvi/golang-postgres-kubernetes/controllers" @@ -8,6 +9,7 @@ import ( "harshsinghvi/golang-postgres-kubernetes/database" "harshsinghvi/golang-postgres-kubernetes/middlewares" "harshsinghvi/golang-postgres-kubernetes/models/roles" + "harshsinghvi/golang-postgres-kubernetes/utils" "log" "net/http" ) @@ -30,6 +32,7 @@ func init() { } } func main() { + PORT := utils.GetEnv("PORT", "8080") database.Connect() database.CreateTables() @@ -71,10 +74,6 @@ func main() { v2.GET("/user/bill", middlewares.AIO(roles.Roles{roles.Any}, middlewares.Config{"billing-disable": true}), controllers.GetBills) v2.DELETE("/user/token/:token-id", middlewares.AIO(roles.Roles{roles.Write}), controllers.DeleteToken) - // TODO Soft delete - // Delete Token - // delete user - // Business Logic v2.GET("/todo/", middlewares.AIO(roles.Roles{roles.Admin, roles.Read}), controllers.GetAllTodos) v2.GET("/todo/:id", middlewares.AIO(roles.Roles{roles.Admin, roles.Read, roles.ReadOne}), controllers.GetSingleTodo) @@ -86,5 +85,6 @@ func main() { router.GET("/health", healthHandler) router.GET("/readiness", readinessHandler) - router.Run(":8080") + + router.Run(fmt.Sprintf(":%s", PORT)) } diff --git a/models/auth.go b/models/auth.go index 94fb48b..350b35f 100644 --- a/models/auth.go +++ b/models/auth.go @@ -16,7 +16,7 @@ type AccessToken struct { type AccessLog struct { ID string `json:"id"` - TokenID string `json:"token_id"` // TODO: Change this to TokenID + TokenID string `json:"token_id"` Path string `json:"path"` ClientIP string `json:"client_ip"` Method string `json:"method"`