aboutsummaryrefslogtreecommitdiffstats
path: root/models/project/project.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2024-05-27 16:59:54 +0800
committerGitHub <noreply@github.com>2024-05-27 08:59:54 +0000
commit98751108b11dc748cc99230ca0fc1acfdf2c8929 (patch)
tree7587c21fe0f038560c5a427eaa1f6614ced604ff /models/project/project.go
parent072b029b336a3d12c40060e8472373fded676dc2 (diff)
downloadgitea-98751108b11dc748cc99230ca0fc1acfdf2c8929.tar.gz
gitea-98751108b11dc748cc99230ca0fc1acfdf2c8929.zip
Rename project board -> column to make the UI less confusing (#30170)
This PR split the `Board` into two parts. One is the struct has been renamed to `Column` and the second we have a `Template Type`. But to make it easier to review, this PR will not change the database schemas, they are just renames. The database schema changes could be in future PRs. --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: yp05327 <576951401@qq.com>
Diffstat (limited to 'models/project/project.go')
-rw-r--r--models/project/project.go97
1 files changed, 37 insertions, 60 deletions
diff --git a/models/project/project.go b/models/project/project.go
index 8be38694c5..fe5d408f64 100644
--- a/models/project/project.go
+++ b/models/project/project.go
@@ -21,13 +21,7 @@ import (
)
type (
- // BoardConfig is used to identify the type of board that is being created
- BoardConfig struct {
- BoardType BoardType
- Translation string
- }
-
- // CardConfig is used to identify the type of board card that is being used
+ // CardConfig is used to identify the type of column card that is being used
CardConfig struct {
CardType CardType
Translation string
@@ -38,7 +32,7 @@ type (
)
const (
- // TypeIndividual is a type of project board that is owned by an individual
+ // TypeIndividual is a type of project column that is owned by an individual
TypeIndividual Type = iota + 1
// TypeRepository is a project that is tied to a repository
@@ -68,39 +62,39 @@ func (err ErrProjectNotExist) Unwrap() error {
return util.ErrNotExist
}
-// ErrProjectBoardNotExist represents a "ProjectBoardNotExist" kind of error.
-type ErrProjectBoardNotExist struct {
- BoardID int64
+// ErrProjectColumnNotExist represents a "ErrProjectColumnNotExist" kind of error.
+type ErrProjectColumnNotExist struct {
+ ColumnID int64
}
-// IsErrProjectBoardNotExist checks if an error is a ErrProjectBoardNotExist
-func IsErrProjectBoardNotExist(err error) bool {
- _, ok := err.(ErrProjectBoardNotExist)
+// IsErrProjectColumnNotExist checks if an error is a ErrProjectColumnNotExist
+func IsErrProjectColumnNotExist(err error) bool {
+ _, ok := err.(ErrProjectColumnNotExist)
return ok
}
-func (err ErrProjectBoardNotExist) Error() string {
- return fmt.Sprintf("project board does not exist [id: %d]", err.BoardID)
+func (err ErrProjectColumnNotExist) Error() string {
+ return fmt.Sprintf("project column does not exist [id: %d]", err.ColumnID)
}
-func (err ErrProjectBoardNotExist) Unwrap() error {
+func (err ErrProjectColumnNotExist) Unwrap() error {
return util.ErrNotExist
}
-// Project represents a project board
+// Project represents a project
type Project struct {
- ID int64 `xorm:"pk autoincr"`
- Title string `xorm:"INDEX NOT NULL"`
- Description string `xorm:"TEXT"`
- OwnerID int64 `xorm:"INDEX"`
- Owner *user_model.User `xorm:"-"`
- RepoID int64 `xorm:"INDEX"`
- Repo *repo_model.Repository `xorm:"-"`
- CreatorID int64 `xorm:"NOT NULL"`
- IsClosed bool `xorm:"INDEX"`
- BoardType BoardType
- CardType CardType
- Type Type
+ ID int64 `xorm:"pk autoincr"`
+ Title string `xorm:"INDEX NOT NULL"`
+ Description string `xorm:"TEXT"`
+ OwnerID int64 `xorm:"INDEX"`
+ Owner *user_model.User `xorm:"-"`
+ RepoID int64 `xorm:"INDEX"`
+ Repo *repo_model.Repository `xorm:"-"`
+ CreatorID int64 `xorm:"NOT NULL"`
+ IsClosed bool `xorm:"INDEX"`
+ TemplateType TemplateType `xorm:"'board_type'"` // TODO: rename the column to template_type
+ CardType CardType
+ Type Type
RenderedContent template.HTML `xorm:"-"`
@@ -172,16 +166,7 @@ func init() {
db.RegisterModel(new(Project))
}
-// GetBoardConfig retrieves the types of configurations project boards could have
-func GetBoardConfig() []BoardConfig {
- return []BoardConfig{
- {BoardTypeNone, "repo.projects.type.none"},
- {BoardTypeBasicKanban, "repo.projects.type.basic_kanban"},
- {BoardTypeBugTriage, "repo.projects.type.bug_triage"},
- }
-}
-
-// GetCardConfig retrieves the types of configurations project board cards could have
+// GetCardConfig retrieves the types of configurations project column cards could have
func GetCardConfig() []CardConfig {
return []CardConfig{
{CardTypeTextOnly, "repo.projects.card_type.text_only"},
@@ -251,8 +236,8 @@ func GetSearchOrderByBySortType(sortType string) db.SearchOrderBy {
// NewProject creates a new Project
func NewProject(ctx context.Context, p *Project) error {
- if !IsBoardTypeValid(p.BoardType) {
- p.BoardType = BoardTypeNone
+ if !IsTemplateTypeValid(p.TemplateType) {
+ p.TemplateType = TemplateTypeNone
}
if !IsCardTypeValid(p.CardType) {
@@ -263,27 +248,19 @@ func NewProject(ctx context.Context, p *Project) error {
return util.NewInvalidArgumentErrorf("project type is not valid")
}
- ctx, committer, err := db.TxContext(ctx)
- if err != nil {
- return err
- }
- defer committer.Close()
-
- if err := db.Insert(ctx, p); err != nil {
- return err
- }
-
- if p.RepoID > 0 {
- if _, err := db.Exec(ctx, "UPDATE `repository` SET num_projects = num_projects + 1 WHERE id = ?", p.RepoID); err != nil {
+ return db.WithTx(ctx, func(ctx context.Context) error {
+ if err := db.Insert(ctx, p); err != nil {
return err
}
- }
- if err := createBoardsForProjectsType(ctx, p); err != nil {
- return err
- }
+ if p.RepoID > 0 {
+ if _, err := db.Exec(ctx, "UPDATE `repository` SET num_projects = num_projects + 1 WHERE id = ?", p.RepoID); err != nil {
+ return err
+ }
+ }
- return committer.Commit()
+ return createDefaultColumnsForProject(ctx, p)
+ })
}
// GetProjectByID returns the projects in a repository
@@ -417,7 +394,7 @@ func DeleteProjectByID(ctx context.Context, id int64) error {
return err
}
- if err := deleteBoardByProjectID(ctx, id); err != nil {
+ if err := deleteColumnByProjectID(ctx, id); err != nil {
return err
}