From 3144fac03cb468aa28c0ade7687b1d4df1de6abb Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 27 Mar 2014 12:48:29 -0400 Subject: IP: RC Code Review --- models/issue.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'models/issue.go') diff --git a/models/issue.go b/models/issue.go index 97e51a0c..6b657b7b 100644 --- a/models/issue.go +++ b/models/issue.go @@ -37,7 +37,7 @@ type Issue struct { } // CreateIssue creates new issue for repository. -func CreateIssue(userId, repoId, milestoneId, assigneeId int64, name, labels, content string, isPull bool) (*Issue, error) { +func CreateIssue(userId, repoId, milestoneId, assigneeId int64, issueCount int, name, labels, content string, isPull bool) (*Issue, error) { count, err := GetIssueCount(repoId) if err != nil { return nil, err @@ -46,6 +46,10 @@ func CreateIssue(userId, repoId, milestoneId, assigneeId int64, name, labels, co // TODO: find out mentions mentions := "" + sess := orm.NewSession() + defer sess.Close() + sess.Begin() + issue := &Issue{ Index: count + 1, Name: name, @@ -58,8 +62,23 @@ func CreateIssue(userId, repoId, milestoneId, assigneeId int64, name, labels, co Mentions: mentions, Content: content, } - _, err = orm.Insert(issue) - return issue, err + if _, err = sess.Insert(issue); err != nil { + sess.Rollback() + return nil, err + } + + rawSql := "UPDATE `repository` SET num_issues = num_issues + 1 WHERE id = ?" + if _, err = sess.Exec(rawSql, repoId); err != nil { + sess.Rollback() + return nil, err + } + + if err = sess.Commit(); err != nil { + sess.Rollback() + return nil, err + } + + return issue, nil } // GetIssueCount returns count of issues in the repository. -- cgit v1.2.3