From 6721b2d99344128a4ec17e5e26fcf3c708958302 Mon Sep 17 00:00:00 2001 From: Suraj Patil Date: Sat, 14 May 2016 15:04:42 +0530 Subject: [PATCH] closed all fetched rows, db was getting locked --- db/files.go | 6 ++++-- db/tasks.go | 12 +++++++++--- db/user.go | 3 ++- views/addViews.go | 4 +++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/db/files.go b/db/files.go index c7df15f..82a4f3f 100644 --- a/db/files.go +++ b/db/files.go @@ -21,6 +21,7 @@ func GetFileName(token string) (string, error) { sql := "select name from files where autoName=?" var fileName string rows := database.query(sql, fileName) + defer rows.Close() if rows.Next() { err := rows.Scan(&fileName) if err != nil { @@ -47,6 +48,7 @@ func GetCategories(username string) []types.CategoryCount { var categories []types.CategoryCount var category types.CategoryCount + defer rows.Close() for rows.Next() { err := rows.Scan(&category.Name, &category.Count) if err != nil { @@ -54,7 +56,6 @@ func GetCategories(username string) []types.CategoryCount { } categories = append(categories, category) } - rows.Close() return categories } @@ -64,6 +65,7 @@ func AddCategory(username, category string) error { if err != nil { return nil } + log.Println("executing query to add category") err = taskQuery("insert into category(name, user_id) values(?,?)", category, userID) return err } @@ -74,7 +76,7 @@ func GetCategoryByName(username, category string) int { stmt := "select id from category where name=? and user_id = (select id from user where username=?)" rows := database.query(stmt, category, username) var categoryID int - + defer rows.Close() for rows.Next() { err := rows.Scan(&categoryID) if err != nil { diff --git a/db/tasks.go b/db/tasks.go index caadcbd..e3e2d16 100644 --- a/db/tasks.go +++ b/db/tasks.go @@ -248,6 +248,7 @@ func UpdateTask(id int, title, content, category string, priority int, username //taskQuery encapsulates running multiple queries which don't do much things func taskQuery(sql string, args ...interface{}) error { + log.Print("inside task query") SQL := database.prepare(sql) tx := database.begin() _, err = tx.Stmt(SQL).Exec(args...) @@ -255,7 +256,12 @@ func taskQuery(sql string, args ...interface{}) error { log.Println("taskQuery: ", err) tx.Rollback() } else { - tx.Commit() + err = tx.Commit() + if err != nil { + log.Println(err) + return err + } + log.Println("Commit successful") } return err } @@ -280,7 +286,7 @@ func SearchTask(username, query string) (types.Context, error) { stmt := "select t.id, title, content, created_date, priority, c.name from task t, category c where t.user_id=? and c.id = t.cat_id and (title like '%" + query + "%' or content like '%" + query + "%') order by created_date desc" rows := database.query(stmt, userID, query, query) - + defer rows.Close() for rows.Next() { err := rows.Scan(&task.Id, &task.Title, &task.Content, &TaskCreated, &task.Priority, &task.Category) if err != nil { @@ -327,6 +333,7 @@ func GetComments(username string) (map[int][]types.Comment, error) { stmt := "select c.id, c.taskID, c.content, c.created from comments c, task t where t.id=c.taskID and c.user_id=?;" rows := database.query(stmt, userID) + defer rows.Close() for rows.Next() { err := rows.Scan(&comment.ID, &taskID, &comment.Content, &created) if err != nil { @@ -337,7 +344,6 @@ func GetComments(username string) (map[int][]types.Comment, error) { comment.Created = created.Format("Jan 2 2006 15:04:05") commentMap[taskID] = append(commentMap[taskID], comment) } - rows.Close() return commentMap, nil } diff --git a/db/user.go b/db/user.go index 2537962..7f0572d 100644 --- a/db/user.go +++ b/db/user.go @@ -17,6 +17,7 @@ func ValidUser(username, password string) bool { log.Print("validating user ", username) rows := database.query(userSQL, username) + defer rows.Close() if rows.Next() { err := rows.Scan(&passwordFromDB) if err != nil { @@ -37,12 +38,12 @@ func GetUserID(username string) (int, error) { userSQL := "select id from user where username=?" rows := database.query(userSQL, username) + defer rows.Close() if rows.Next() { err := rows.Scan(&userID) if err != nil { return -1, err } } - rows.Close() return userID, nil } diff --git a/views/addViews.go b/views/addViews.go index 1099822..f3b1250 100644 --- a/views/addViews.go +++ b/views/addViews.go @@ -129,7 +129,9 @@ func AddCategoryFunc(w http.ResponseWriter, r *http.Request) { category := r.Form.Get("category") if strings.Trim(category, " ") != "" { username := sessions.GetCurrentUserName(r) - if err := db.AddCategory(username, category); err != nil { + log.Println("adding category") + err := db.AddCategory(username, category) + if err != nil { message = "Error adding category" http.Redirect(w, r, "/", http.StatusBadRequest) } else {