model

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Settings = &settings.Settings
)

Functions

func All

func All() []interface{}

All builds all models. Models are enumerated such that each are listed after all the other models on which they may depend.

Types

type Analysis

type Analysis struct {
	Model
	Effort        int
	Issues        []Issue          `gorm:"constraint:OnDelete:CASCADE"`
	Dependencies  []TechDependency `gorm:"constraint:OnDelete:CASCADE"`
	ApplicationID uint             `gorm:"index;not null"`
	Application   *Application
}

Analysis report.

type Application

type Application struct {
	Model
	BucketOwner
	Name              string `gorm:"index;unique;not null"`
	Description       string
	Review            *Review `gorm:"constraint:OnDelete:CASCADE"`
	Repository        JSON    `gorm:"type:json"`
	Binary            string
	Facts             []Fact `gorm:"constraint:OnDelete:CASCADE"`
	Comments          string
	Tasks             []Task     `gorm:"constraint:OnDelete:CASCADE"`
	Tags              []Tag      `gorm:"many2many:ApplicationTags"`
	Identities        []Identity `gorm:"many2many:ApplicationIdentity;constraint:OnDelete:CASCADE"`
	BusinessServiceID *uint      `gorm:"index"`
	BusinessService   *BusinessService
	OwnerID           *uint         `gorm:"index"`
	Owner             *Stakeholder  `gorm:"foreignKey:OwnerID"`
	Contributors      []Stakeholder `gorm:"many2many:ApplicationContributors;constraint:OnDelete:CASCADE"`
	Analyses          []Analysis    `gorm:"constraint:OnDelete:CASCADE"`
	MigrationWaveID   *uint         `gorm:"index"`
	MigrationWave     *MigrationWave
	Ticket            *Ticket `gorm:"constraint:OnDelete:CASCADE"`
}

type ApplicationTag

type ApplicationTag struct {
	ApplicationID uint        `gorm:"primaryKey"`
	TagID         uint        `gorm:"primaryKey"`
	Source        string      `gorm:"primaryKey;not null"`
	Application   Application `gorm:"constraint:OnDelete:CASCADE"`
	Tag           Tag         `gorm:"constraint:OnDelete:CASCADE"`
}

ApplicationTag represents a row in the join table for the many-to-many relationship between Applications and Tags.

func (ApplicationTag) TableName

func (ApplicationTag) TableName() string

TableName must return "ApplicationTags" to ensure compatibility with the autogenerated join table name.

type Bucket

type Bucket = v4.Bucket

type BucketOwner

type BucketOwner = v4.BucketOwner

type BusinessService

type BusinessService struct {
	Model
	Name          string `gorm:"index;unique;not null"`
	Description   string
	Applications  []Application `gorm:"constraint:OnDelete:SET NULL"`
	StakeholderID *uint         `gorm:"index"`
	Stakeholder   *Stakeholder
}

type Dependency

type Dependency = v4.Dependency

type DependencyCyclicError

type DependencyCyclicError = v4.DependencyCyclicError

Errors

type Fact

type Fact struct {
	ApplicationID uint   `gorm:"<-:create;primaryKey"`
	Key           string `gorm:"<-:create;primaryKey"`
	Source        string `gorm:"<-:create;primaryKey;not null"`
	Value         JSON   `gorm:"type:json;not null"`
	Application   *Application
}

type File

type File = v4.File

type Identity

type Identity struct {
	Model
	Kind        string `gorm:"not null"`
	Name        string `gorm:"index;unique;not null"`
	Description string
	User        string
	Password    string
	Key         string
	Settings    string
	Proxies     []Proxy `gorm:"constraint:OnDelete:SET NULL"`
}

Identity represents and identity with a set of credentials.

func (*Identity) Decrypt

func (r *Identity) Decrypt() (err error)

Decrypt sensitive fields.

func (*Identity) Encrypt

func (r *Identity) Encrypt(ref *Identity) (err error)

Encrypt sensitive fields. The ref identity is used to determine when sensitive fields have changed and need to be (re)encrypted.

type Import

type Import = v4.Import

type ImportSummary

type ImportSummary = v4.ImportSummary

type ImportTag

type ImportTag = v4.ImportTag

type Incident

type Incident struct {
	Model
	File     string `gorm:"index;not null"`
	Line     int
	Message  string
	CodeSnip string
	Facts    JSON `gorm:"type:json"`
	IssueID  uint `gorm:"index;not null"`
	Issue    *Issue
}

Incident report an issue incident.

type Issue

type Issue struct {
	Model
	RuleSet     string `gorm:"index:issueA;not null"`
	Rule        string `gorm:"index:issueA;not null"`
	Name        string `gorm:"index"`
	Description string
	Category    string     `gorm:"index;not null"`
	Incidents   []Incident `gorm:"foreignKey:IssueID;constraint:OnDelete:CASCADE"`
	Links       JSON       `gorm:"type:json"`
	Facts       JSON       `gorm:"type:json"`
	Labels      JSON       `gorm:"type:json"`
	Effort      int        `gorm:"index;not null"`
	AnalysisID  uint       `gorm:"index;not null"`
	Analysis    *Analysis
}

Issue report issue (violation).

func (*Issue) RuleId

func (m *Issue) RuleId() (id string)

RuleId returns unique rule ID.

type JSON

type JSON = []byte

JSON field (data) type.

type JobFunction

type JobFunction struct {
	Model
	Username     string
	Name         string        `gorm:"index;unique;not null"`
	Stakeholders []Stakeholder `gorm:"constraint:OnDelete:SET NULL"`
}
type Link struct {
	URL   string `json:"url"`
	Title string `json:"title,omitempty"`
}

Link URL link.

type MigrationWave

type MigrationWave struct {
	Model
	Name              string             `gorm:"uniqueIndex:MigrationWaveA"`
	StartDate         time.Time          `gorm:"uniqueIndex:MigrationWaveA"`
	EndDate           time.Time          `gorm:"uniqueIndex:MigrationWaveA"`
	Applications      []Application      `gorm:"constraint:OnDelete:SET NULL"`
	Stakeholders      []Stakeholder      `gorm:"many2many:MigrationWaveStakeholders;constraint:OnDelete:CASCADE"`
	StakeholderGroups []StakeholderGroup `gorm:"many2many:MigrationWaveStakeholderGroups;constraint:OnDelete:CASCADE"`
}

type Model

type Model = v4.Model

Unchanged models imported from previous migration.

type Proxy

type Proxy = v4.Proxy

type Review

type Review = v4.Review

type Rule

type Rule struct {
	Model
	Name        string
	Description string
	Labels      JSON `gorm:"type:json"`
	RuleSetID   uint `gorm:"uniqueIndex:RuleA;not null"`
	RuleSet     *RuleSet
	FileID      *uint `gorm:"uniqueIndex:RuleA" ref:"file"`
	File        *File
}

Rule - Analysis rule.

type RuleSet

type RuleSet struct {
	Model
	Kind        string
	Name        string `gorm:"uniqueIndex;not null"`
	Description string
	Custom      bool
	Repository  JSON `gorm:"type:json"`
	ImageID     uint `gorm:"index" ref:"file"`
	Image       *File
	IdentityID  *uint `gorm:"index"`
	Identity    *Identity
	Rules       []Rule `gorm:"constraint:OnDelete:CASCADE"`
}

RuleSet - Analysis ruleset.

type Setting

type Setting = v4.Setting

type Stakeholder

type Stakeholder struct {
	Model
	Name             string             `gorm:"not null;"`
	Email            string             `gorm:"index;unique;not null"`
	Groups           []StakeholderGroup `gorm:"many2many:StakeholderGroupStakeholder;constraint:OnDelete:CASCADE"`
	BusinessServices []BusinessService  `gorm:"constraint:OnDelete:SET NULL"`
	JobFunctionID    *uint              `gorm:"index"`
	JobFunction      *JobFunction
	Owns             []Application   `gorm:"foreignKey:OwnerID;constraint:OnDelete:SET NULL"`
	Contributes      []Application   `gorm:"many2many:ApplicationContributors;constraint:OnDelete:CASCADE"`
	MigrationWaves   []MigrationWave `gorm:"many2many:MigrationWaveStakeholders;constraint:OnDelete:CASCADE"`
}

type StakeholderGroup

type StakeholderGroup struct {
	Model
	Name           string `gorm:"index;unique;not null"`
	Username       string
	Description    string
	Stakeholders   []Stakeholder   `gorm:"many2many:StakeholderGroupStakeholder;constraint:OnDelete:CASCADE"`
	MigrationWaves []MigrationWave `gorm:"many2many:MigrationWaveStakeholderGroups;constraint:OnDelete:CASCADE"`
}

type TTL

type TTL = v4.TTL

type Tag

type Tag = v4.Tag

type TagCategory

type TagCategory = v4.TagCategory

type Task

type Task = v4.Task

type TaskGroup

type TaskGroup = v4.TaskGroup

type TaskReport

type TaskReport = v4.TaskReport

type TechDependency

type TechDependency struct {
	Model
	Name       string `gorm:"index:depA;not null"`
	Version    string `gorm:"index:depA"`
	SHA        string `gorm:"index:depA"`
	Indirect   bool
	Labels     JSON `gorm:"type:json"`
	AnalysisID uint `gorm:"index;not null"`
	Analysis   *Analysis
}

TechDependency report dependency.

type Ticket

type Ticket struct {
	Model
	// Kind of ticket in the external tracker.
	Kind string `gorm:"not null"`
	// Parent resource that this ticket should belong to in the tracker. (e.g. Jira project)
	Parent string `gorm:"not null"`
	// Custom fields to send to the tracker when creating the ticket
	Fields JSON `gorm:"type:json"`
	// Whether the last attempt to do something with the ticket reported an error
	Error bool
	// Error message, if any
	Message string
	// Whether the ticket was created in the external tracker
	Created bool
	// Reference id in external tracker
	Reference string
	// URL to ticket in external tracker
	Link string
	// Status of ticket in external tracker
	Status        string
	LastUpdated   time.Time
	Application   *Application
	ApplicationID uint `gorm:"uniqueIndex:ticketA;not null"`
	Tracker       *Tracker
	TrackerID     uint `gorm:"uniqueIndex:ticketA;not null"`
}

type Tracker

type Tracker struct {
	Model
	Name        string `gorm:"index;unique;not null"`
	URL         string
	Kind        string
	Identity    *Identity
	IdentityID  uint
	Connected   bool
	LastUpdated time.Time
	Message     string
	Insecure    bool
	Tickets     []Ticket
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL