Lightweight and easily self-hostable Git forge. git.poy.ooo
git-forge selfhosting homebrew
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package db
import ( "farga/db/types"
"github.com/google/uuid"
"gorm.io/gorm" "gorm.io/gorm/clause")
// creates an issue in a given repofunc (db *DB) NewIssue(issue *types.Issue) error { return db.Transaction(func(tx *gorm.DB) error { var repo types.Repo
// Lock the repo row. if err := tx. Clauses(clause.Locking{Strength: "UPDATE"}). First(&repo).Where("id = ?", issue.RepoID).Error; err != nil { return err }
issue.IssueID = repo.NextIssueID repo.NextIssueID++
if err := tx.Save(&repo).Error; err != nil { return err }
return tx.Create(issue).Error })}
func (db *DB) NewIssueComment(comment *types.IssueComment) error { return db.Create(comment).Error}
// gets an issue from a repo, given the issue's ID.func (db *DB) Issue(repo *types.Repo, issueNumber uint) (types.Issue, error) { var issue types.Issue err := db. Where("repo_id = ? AND issue_id = ?", repo.ID, issueNumber). Preload(clause.Associations). First(&issue).Error return issue, err}
func (db *DB) IssueComments(issueID uuid.UUID) ([]types.IssueComment, error) { var comments []types.IssueComment
err := db.Preload("User"). Where("issue_id = ?", issueID). Order("created_at ASC"). Find(&comments).Error
return comments, err}