diff --git a/controllers/controllers.go b/controllers/controllers.go index 318fcb0..96a60dd 100644 --- a/controllers/controllers.go +++ b/controllers/controllers.go @@ -93,7 +93,7 @@ func EditTodo(c *gin.Context) { var todo models.Todo c.BindJSON(&todo) - querry := database.Connection.Model(&models.Todo{}).Set("completed = ?", todo.Completed) + querry := database.Connection.Model(&models.Todo{}).Set("completed = ?", todo.Completed).Set("updated_at = ?", time.Now()) if todo.Text != "" { querry.Set("text = ?", todo.Text) diff --git a/database/database.go b/database/database.go index b8f0734..764e932 100644 --- a/database/database.go +++ b/database/database.go @@ -13,7 +13,6 @@ var Connection *pg.DB func IsDtabaseReady() bool { ctx := Connection.Context() var version string - _, err := Connection.QueryOneContext(ctx, pg.Scan(&version), "SELECT version()") if err != nil { log.Printf("Failed to connect to database") @@ -71,6 +70,13 @@ func CreateTodoTable() error { log.Printf("Error while creating todo table, Reason: %v\n", createError) return createError } - log.Printf("Todo table created") + + _, err := Connection.Exec(`CREATE UNIQUE INDEX IF NOT EXISTS index_todo ON todos(id, completed, created_at, updated_at);`) + + if err != nil { + log.Printf(err.Error()) + } + + log.Printf("Todo table and indexes created") return nil } diff --git a/models/todo.go b/models/todo.go index 6271184..f70b307 100644 --- a/models/todo.go +++ b/models/todo.go @@ -9,4 +9,3 @@ type Todo struct { CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } -