From 2b107ec5436c9419be5d9d008ad9aacaf798c0fe Mon Sep 17 00:00:00 2001 From: domi41 Date: Thu, 14 May 2020 03:52:01 +0200 Subject: [PATCH] Rename `Judgment` into `PollJudgment`. After careful consideration, it's probably best to namespace. Also, explicit is better than implicit. :) BREAKING CHANGE: Not sure how the migrations will operate here. This is why it's best to do it now than once we're actually using it. --- models/models.go | 2 +- models/poll.go | 22 ++++++++--------- models/{judgment.go => poll_judgment.go} | 24 +++++++++---------- ...judgment_test.go => poll_judgment_test.go} | 2 +- routers/repo/poll_judgment.go | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) rename models/{judgment.go => poll_judgment.go} (85%) rename models/{judgment_test.go => poll_judgment_test.go} (97%) diff --git a/models/models.go b/models/models.go index 46fde31fc..a74a4fc7f 100644 --- a/models/models.go +++ b/models/models.go @@ -126,7 +126,7 @@ func init() { new(LanguageStat), new(EmailHash), new(Poll), - new(Judgment), + new(PollJudgment), ) gonicNames := []string{"SSL", "UID"} diff --git a/models/poll.go b/models/poll.go index bb106ddd9..49ef9ec96 100644 --- a/models/poll.go +++ b/models/poll.go @@ -42,7 +42,7 @@ type Poll struct { ClosedUnix timeutil.TimeStamp `xorm:"INDEX"` // No idea how xorm works -- help! - //Judgments []*Judgment `xorm:"-"` + //Judgments []*PollJudgment `xorm:"-"` //Judgments JudgmentList `xorm:"-"` } @@ -68,17 +68,17 @@ func (poll *Poll) GetGradationList() []string { func (poll *Poll) GetCandidatesIDs() (_ []int64, err error) { ids := make([]int64, 0, 10) - if err := x.Table("judgment"). - Select("DISTINCT candidate_id"). - Where("poll_id = ?", poll.ID). - OrderBy("candidate_id asc"). + if err := x.Table("poll_judgment"). + Select("DISTINCT `poll_judgment`.`candidate_id`"). + Where("`poll_judgment`.`poll_id` = ?", poll.ID). + OrderBy("`poll_judgment`.`candidate_id` ASC"). Find(&ids); err != nil { return nil, err } return ids, nil } -func (poll *Poll) GetJudgmentOnCandidate(judge *User, candidateID int64) (judgmernt *Judgment) { +func (poll *Poll) GetJudgmentOnCandidate(judge *User, candidateID int64) (judgmernt *PollJudgment) { judgment, err := getJudgmentOfJudgeOnPollCandidate(x, judge.ID, poll.ID, candidateID) if nil != err { return nil @@ -105,11 +105,11 @@ func (poll *Poll) GetResult() (results *PollResult) { func (poll *Poll) CountGrades(candidateID int64, grade uint8) (_ uint64, err error) { rows := make([]int64, 0, 2) - if err := x.Table("judgment"). + if err := x.Table("poll_judgment"). Select("COUNT(*) as amount"). - Where("poll_id = ?", poll.ID). - And("candidate_id = ?", candidateID). - And("grade = ?", grade). + Where("`poll_judgment`.`poll_id` = ?", poll.ID). + And("`poll_judgment`.`candidate_id` = ?", candidateID). + And("`poll_judgment`.`grade` = ?", grade). // Use Get() perhaps? Find(&rows); err != nil { return 0, err @@ -204,7 +204,7 @@ func GetPolls(repoID int64, page int) (PollList, error) { func getPollByRepoID(e Engine, repoID, id int64) (*Poll, error) { m := new(Poll) - has, err := e.ID(id).Where("repo_id=?", repoID).Get(m) + has, err := e.ID(id).Where("repo_id = ?", repoID).Get(m) if err != nil { return nil, err } else if !has { diff --git a/models/judgment.go b/models/poll_judgment.go similarity index 85% rename from models/judgment.go rename to models/poll_judgment.go index bc7ef5f3f..855020f16 100644 --- a/models/judgment.go +++ b/models/poll_judgment.go @@ -15,7 +15,7 @@ import ( ) // A Judgment on a Poll -type Judgment struct { +type PollJudgment struct { ID int64 `xorm:"pk autoincr"` PollID int64 `xorm:"INDEX UNIQUE(poll_judge_candidate)"` Poll *Poll `xorm:"-"` @@ -58,7 +58,7 @@ type DeleteJudgmentOptions struct { CandidateID int64 } -func CreateJudgment(opts *CreateJudgmentOptions) (judgment *Judgment, err error) { +func CreateJudgment(opts *CreateJudgmentOptions) (judgment *PollJudgment, err error) { sess := x.NewSession() defer sess.Close() if err = sess.Begin(); err != nil { @@ -77,8 +77,8 @@ func CreateJudgment(opts *CreateJudgmentOptions) (judgment *Judgment, err error) return judgment, nil } -func createJudgment(e *xorm.Session, opts *CreateJudgmentOptions) (_ *Judgment, err error) { - judgment := &Judgment{ +func createJudgment(e *xorm.Session, opts *CreateJudgmentOptions) (_ *PollJudgment, err error) { + judgment := &PollJudgment{ PollID: opts.Poll.ID, Poll: opts.Poll, JudgeID: opts.Judge.ID, @@ -98,8 +98,8 @@ func createJudgment(e *xorm.Session, opts *CreateJudgmentOptions) (_ *Judgment, return judgment, nil } -func getJudgmentByID(e Engine, id int64) (*Judgment, error) { - repo := new(Judgment) +func getJudgmentByID(e Engine, id int64) (*PollJudgment, error) { + repo := new(PollJudgment) has, err := e.ID(id).Get(repo) if err != nil { return nil, err @@ -109,15 +109,15 @@ func getJudgmentByID(e Engine, id int64) (*Judgment, error) { return repo, nil } -func getJudgmentOfJudgeOnPollCandidate(e Engine, judgeID int64, pollID int64, candidateID int64) (judgment *Judgment, err error) { +func getJudgmentOfJudgeOnPollCandidate(e Engine, judgeID int64, pollID int64, candidateID int64) (judgment *PollJudgment, err error) { // We could probably use only one SQL query instead of two here. // No idea how this ORM works, and sprinting past it with snippet copy-pasting. judgmentsIds := make([]int64, 0, 1) - if err = e.Table("judgment"). + if err = e.Table("poll_judgment"). Cols("id"). - Where("`judgment`.judge_id = ?", judgeID). - And("`judgment`.poll_id = ?", pollID). - And("`judgment`.candidate_id = ?", candidateID). + Where("`poll_judgment`.`judge_id` = ?", judgeID). + And("`poll_judgment`.`poll_id` = ?", pollID). + And("`poll_judgment`.`candidate_id` = ?", candidateID). Limit(1). // perhaps .Get() is what we need here? Find(&judgmentsIds); err != nil { return nil, fmt.Errorf("find judgment: %v", err) @@ -135,7 +135,7 @@ func getJudgmentOfJudgeOnPollCandidate(e Engine, judgeID int64, pollID int64, ca return judgment, nil } -func UpdateJudgment(opts *UpdateJudgmentOptions) (judgment *Judgment, err error) { +func UpdateJudgment(opts *UpdateJudgmentOptions) (judgment *PollJudgment, err error) { sess := x.NewSession() defer sess.Close() if err = sess.Begin(); err != nil { diff --git a/models/judgment_test.go b/models/poll_judgment_test.go similarity index 97% rename from models/judgment_test.go rename to models/poll_judgment_test.go index 5f2efe1af..035f78fff 100644 --- a/models/judgment_test.go +++ b/models/poll_judgment_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" ) -func TestJudgment_Create(t *testing.T) { +func TestPollJudgment_Create(t *testing.T) { assert.NoError(t, PrepareTestDatabase()) repo := AssertExistsAndLoadBean(t, &Repository{ID: 2}).(*Repository) user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User) diff --git a/routers/repo/poll_judgment.go b/routers/repo/poll_judgment.go index da93985fc..c1a93b717 100644 --- a/routers/repo/poll_judgment.go +++ b/routers/repo/poll_judgment.go @@ -17,7 +17,7 @@ import ( ) type CreateJudgmentResponse struct { - Judgment *models.Judgment + Judgment *models.PollJudgment } // Creates, Updates or Deletes a Judgment depending on the parameters