fabric8-wit: github.com/fabric8-services/fabric8-wit/iteration Index | Files

package iteration

import "github.com/fabric8-services/fabric8-wit/iteration"

Package iteration provides all the required functions to manage the iterations over the work items.


Package Files

doc.go iteration.go


const (
    APIStringTypeIteration = "iterations"
    IterationStateNew      = "new"
    IterationStateStart    = "start"
    IterationStateClose    = "close"
    PathSepInService       = "/"
    PathSepInDatabase      = "."
    IterationActive        = true
    IterationNotActive     = false

Defines "type" string to be used while validating jsonapi spec based payload

type GormIterationRepository Uses

type GormIterationRepository struct {
    // contains filtered or unexported fields

GormIterationRepository is the implementation of the storage interface for Iterations.

func (*GormIterationRepository) CanStart Uses

func (m *GormIterationRepository) CanStart(ctx context.Context, i *Iteration) (bool, error)

CanStart checks the rule - 1. Only one iteration from a space can have state=start at a time. 2. Root iteration of the space can not be started.(Hence can not be closed - via UI) Currently there is no State-machine for state transitions of iteraitons till then we will not allow user to start root iteration. More rules can be added as needed in this function

func (*GormIterationRepository) CheckExists Uses

func (m *GormIterationRepository) CheckExists(ctx context.Context, id string) error

CheckExists returns nil if the given ID exists otherwise returns an error

func (*GormIterationRepository) Create Uses

func (m *GormIterationRepository) Create(ctx context.Context, u *Iteration) error

Create creates a new record.

func (*GormIterationRepository) List Uses

func (m *GormIterationRepository) List(ctx context.Context, spaceID uuid.UUID) ([]Iteration, error)

List all Iterations related to a single item

func (*GormIterationRepository) Load Uses

func (m *GormIterationRepository) Load(ctx context.Context, id uuid.UUID) (*Iteration, error)

Load a single Iteration regardless of parent

func (*GormIterationRepository) LoadChildren Uses

func (m *GormIterationRepository) LoadChildren(ctx context.Context, parentIterationID uuid.UUID) ([]Iteration, error)

LoadChildren executes - select * from iterations where path <@ 'parent_path.parent_id';

func (*GormIterationRepository) LoadMultiple Uses

func (m *GormIterationRepository) LoadMultiple(ctx context.Context, ids []uuid.UUID) ([]Iteration, error)

LoadMultiple returns multiple instances of iteration.Iteration

func (*GormIterationRepository) Root Uses

func (m *GormIterationRepository) Root(ctx context.Context, spaceID uuid.UUID) (*Iteration, error)

Root returns the Root Iteration for a space

func (*GormIterationRepository) Save Uses

func (m *GormIterationRepository) Save(ctx context.Context, i Iteration) (*Iteration, error)

Save updates the given iteration in the db. Version must be the same as the one in the stored version returns NotFoundError, VersionConflictError or InternalError

type Iteration Uses

type Iteration struct {
    ID          uuid.UUID `sql:"type:uuid default uuid_generate_v4()" gorm:"primary_key"` // This is the ID PK field
    SpaceID     uuid.UUID `sql:"type:uuid"`
    Path        path.Path
    StartAt     *time.Time
    EndAt       *time.Time
    Name        string
    Description *string
    State       string // this tells if iteration is currently running or not
    UserActive  bool
    // optional, private timestamp of the latest addition/removal of a relationship with this iteration
    // this field is used to generate the `ETag` and `Last-Modified` values in the HTTP responses and conditional requests processing
    RelationShipsChangedAt *time.Time `sql:"column:relationships_changed_at"`

Iteration describes a single iteration

func (Iteration) GetETagData Uses

func (m Iteration) GetETagData() []interface{}

GetETagData returns the field values to use to generate the ETag

func (Iteration) GetLastModified Uses

func (m Iteration) GetLastModified() time.Time

GetLastModified returns the last modification time

func (*Iteration) IsActive Uses

func (i *Iteration) IsActive() bool

func (*Iteration) MakeChildOf Uses

func (m *Iteration) MakeChildOf(parent Iteration)

MakeChildOf does all the path magic to make the current iteration a child of the given parent iteration.

func (Iteration) TableName Uses

func (m Iteration) TableName() string

TableName overrides the table name settings in Gorm to force a specific table name in the database.

type Repository Uses

type Repository interface {
    Create(ctx context.Context, u *Iteration) error
    List(ctx context.Context, spaceID uuid.UUID) ([]Iteration, error)
    Root(ctx context.Context, spaceID uuid.UUID) (*Iteration, error)
    Load(ctx context.Context, id uuid.UUID) (*Iteration, error)
    Save(ctx context.Context, i Iteration) (*Iteration, error)
    CanStart(ctx context.Context, i *Iteration) (bool, error)
    LoadMultiple(ctx context.Context, ids []uuid.UUID) ([]Iteration, error)
    LoadChildren(ctx context.Context, parentIterationID uuid.UUID) ([]Iteration, error)

Repository describes interactions with Iterations

func NewIterationRepository Uses

func NewIterationRepository(db *gorm.DB) Repository

NewIterationRepository creates a new storage type.

Package iteration imports 13 packages (graph) and is imported by 10 packages. Updated 2017-10-23. Refresh now. Tools for package owners.