diff --git a/pkg/migration/20240313230538.go b/pkg/migration/20240313230538.go index 0bdea57c5..04abf05fa 100644 --- a/pkg/migration/20240313230538.go +++ b/pkg/migration/20240313230538.go @@ -22,15 +22,24 @@ import ( "xorm.io/xorm" ) +type projectViewBucketConfiguration20240313230538 struct { + Title string + Filter string +} + type projectView20240313230538 struct { - ID int64 `xorm:"autoincr not null unique pk" json:"id" param:"view"` - Title string `xorm:"varchar(255) not null" json:"title" valid:"runelength(1|250)"` - ProjectID int64 `xorm:"not null index" json:"project_id" param:"project"` - ViewKind int `xorm:"not null" json:"view_kind"` - Filter string `xorm:"text null default null" query:"filter" json:"filter"` - Position float64 `xorm:"double null" json:"position"` - Updated time.Time `xorm:"updated not null" json:"updated"` - Created time.Time `xorm:"created not null" json:"created"` + ID int64 `xorm:"autoincr not null unique pk" json:"id" param:"view"` + Title string `xorm:"varchar(255) not null" json:"title" valid:"runelength(1|250)"` + ProjectID int64 `xorm:"not null index" json:"project_id" param:"project"` + ViewKind int `xorm:"not null" json:"view_kind"` + Filter string `xorm:"text null default null" query:"filter" json:"filter"` + Position float64 `xorm:"double null" json:"position"` + + BucketConfigurationMode int `xorm:"default 0" json:"bucket_configuration_mode"` + BucketConfiguration []*projectViewBucketConfiguration20240313230538 `xorm:"json" json:"bucket_configuration"` + + Updated time.Time `xorm:"updated not null" json:"updated"` + Created time.Time `xorm:"created not null" json:"created"` } func (projectView20240313230538) TableName() string { @@ -77,6 +86,10 @@ func init() { Position: position, } + if kind == 3 { + view.BucketConfigurationMode = 1 + } + _, err := tx.Insert(view) return err } diff --git a/pkg/models/project_view.go b/pkg/models/project_view.go index f0f29e353..3b1ec7a42 100644 --- a/pkg/models/project_view.go +++ b/pkg/models/project_view.go @@ -31,6 +31,19 @@ const ( ProjectViewKindKanban ) +type BucketConfigurationModeKind int + +const ( + BucketConfigurationModeNone BucketConfigurationModeKind = iota + BucketConfigurationModeManual + BucketConfigurationModeFilter +) + +type ProjectViewBucketConfiguration struct { + Title string + Filter string +} + type ProjectView struct { // The unique numeric id of this view ID int64 `xorm:"autoincr not null unique pk" json:"id" param:"view"` @@ -46,6 +59,11 @@ type ProjectView struct { // The position of this view in the list. The list of all views will be sorted by this parameter. Position float64 `xorm:"double null" json:"position"` + // The bucket configuration mode. Can be `none`, `manual` or `filter`. `manual` allows to move tasks between buckets as you normally would. `filter` creates buckets based on a filter for each bucket. + BucketConfigurationMode BucketConfigurationModeKind `xorm:"default 0" json:"bucket_configuration_mode"` + // When the bucket configuration mode is not `manual`, this field holds the options of that configuration. + BucketConfiguration []*ProjectViewBucketConfiguration `xorm:"json" json:"bucket_configuration"` + // A timestamp when this view was updated. You cannot change this value. Updated time.Time `xorm:"updated not null" json:"updated"` // A timestamp when this reaction was created. You cannot change this value.