123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package model
- import (
- "reflect"
- "regexp"
- )
- // reids锁
- const (
- SagaTask = "_SagaTask_%d"
- SagaRepoLockKey = "_SagaRepoLockKey_%d"
- SagaLockValue = "_SagaLockValue"
- )
- // gitlab指令
- const (
- SagaCommandPlusOne = "+ok"
- SagaCommandMerge = "+mr"
- SagaCommandPlusOne1 = "+1"
- SagaCommandMerge1 = "+merge"
- )
- // 任务状态
- const (
- TaskStatusFailed = 1 // 任务失败
- TaskStatusSuccess = 2 // 任务成功
- TaskStatusRunning = 3 // 任务运行中
- TaskStatusWaiting = 4 // 任务等待
- )
- // CONTRIBUTORS define
- const (
- SagaContributorsName = "CONTRIBUTORS.md"
- )
- // RepoConfig def
- type RepoConfig struct {
- URL string
- Group string
- Name string
- GName string // gitlab仓库别名
- Language string
- AuthBranches []string // 鉴权分支
- TargetBranches []string // 分支白名单
- TargetBranchRegexes []*regexp.Regexp
- LockTimeout int32
- MinReviewer int
- RelatePipeline bool
- DelayMerge bool
- LimitAuth bool
- AllowLabel string
- SuperAuthUsers []string
- }
- // RequireReviewFolder ...
- type RequireReviewFolder struct {
- Folder string
- Owners []string
- Reviewers []string
- }
- // AuthUsers ...
- type AuthUsers struct {
- Owners []string
- Reviewers []string
- }
- // ContactInfo def
- type ContactInfo struct {
- ID string `json:"id,omitempty" gorm:"column:id"`
- UserName string `json:"english_name" gorm:"column:user_name"`
- UserID string `json:"userid" gorm:"column:user_id"`
- NickName string `json:"name" gorm:"column:nick_name"`
- VisibleSaga bool `json:"visible_saga" gorm:"column:visible_saga"`
- }
- // RequireVisibleUser def
- type RequireVisibleUser struct {
- UserName string
- NickName string
- }
- // AlmostEqual return the compare result with fields
- func (contact *ContactInfo) AlmostEqual(other *ContactInfo) bool {
- if contact.UserID == other.UserID &&
- contact.UserName == other.UserName &&
- contact.NickName == other.NickName {
- return true
- }
- return false
- }
- // TaskInfo ...
- type TaskInfo struct {
- NoteID int
- Event *HookComment
- Repo *Repo
- }
- // MergeInfo ...
- type MergeInfo struct {
- PipelineID int
- NoteID int
- AuthorID int
- UserName string
- MRIID int
- ProjID int
- URL string
- AuthBranches []string
- SourceBranch string
- TargetBranch string
- MinReviewer int
- LockTimeout int32
- Title string
- Description string
- }
- // Repo structure
- type Repo struct {
- Config *RepoConfig
- }
- // Update if config is changed
- func (r *Repo) Update(conf *RepoConfig) bool {
- if r.confEqual(conf) {
- return false
- }
- r.Config = conf
- return true
- }
- func (r *Repo) confEqual(conf *RepoConfig) bool {
- if r.Config.URL == conf.URL &&
- r.Config.Group == conf.Group &&
- r.Config.Name == conf.Name &&
- r.Config.GName == conf.GName &&
- r.Config.Language == conf.Language &&
- reflect.DeepEqual(r.Config.AuthBranches, conf.AuthBranches) &&
- reflect.DeepEqual(r.Config.TargetBranches, conf.TargetBranches) &&
- r.Config.LockTimeout == conf.LockTimeout &&
- r.Config.MinReviewer == conf.MinReviewer &&
- r.Config.RelatePipeline == conf.RelatePipeline &&
- r.Config.DelayMerge == conf.DelayMerge &&
- r.Config.LimitAuth == conf.LimitAuth &&
- r.Config.AllowLabel == conf.AllowLabel &&
- reflect.DeepEqual(r.Config.SuperAuthUsers, conf.SuperAuthUsers) {
- return true
- }
- return false
- }
- // AuthUpdate ...
- func (r *Repo) AuthUpdate(conf *RepoConfig) bool {
- if r.Config.Group == conf.Group &&
- r.Config.Name == conf.Name &&
- reflect.DeepEqual(r.Config.AuthBranches, conf.AuthBranches) {
- return false
- }
- return true
- }
- // WebHookUpdate ...
- func (r *Repo) WebHookUpdate(conf *RepoConfig) bool {
- return r.Config.URL != conf.URL
- }
|