models

package
v0.0.0-...-7d3b672 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BLUEPRINT_MODE_NORMAL   = "NORMAL"
	BLUEPRINT_MODE_ADVANCED = "ADVANCED"
)
View Source
const (
	TASK_CREATED   = "TASK_CREATED"
	TASK_RERUN     = "TASK_RERUN"
	TASK_RUNNING   = "TASK_RUNNING"
	TASK_COMPLETED = "TASK_COMPLETED"
	TASK_FAILED    = "TASK_FAILED"
	TASK_CANCELLED = "TASK_CANCELLED"
	TASK_PARTIAL   = "TASK_PARTIAL"
)

Variables

View Source
var PendingTaskStatus = []string{TASK_CREATED, TASK_RERUN, TASK_RUNNING}

Functions

func UnwrapObject

func UnwrapObject(ifc any) any

UnwrapObject if the actual object is wrapped in some proxy, it unwinds and returns it, otherwise this is idempotent

Types

type ApiInputProject

type ApiInputProject struct {
	BaseProject `mapstructure:",squash"`
	Enable      *bool         `json:"enable" mapstructure:"enable"`
	Metrics     *[]BaseMetric `json:"metrics" mapstructure:"metrics"`
}

type ApiOutputProject

type ApiOutputProject struct {
	BaseProject `mapstructure:",squash"`
	Metrics     *[]BaseMetric `json:"metrics" mapstructure:"metrics"`
	Blueprint   *Blueprint    `json:"blueprint" mapstructure:"blueprint"`
}

type BaseMetric

type BaseMetric struct {
	PluginName   string `json:"pluginName" mapstructure:"pluginName" gorm:"primaryKey;type:varchar(255)" validate:"required"`
	PluginOption string `json:"pluginOption" mapstructure:"pluginOption" gorm:"type:text"`
	Enable       bool   `json:"enable" mapstructure:"enable" gorm:"type:boolean"`
}

type BaseProject

type BaseProject struct {
	Name        string `json:"name" mapstructure:"name" gorm:"primaryKey;type:varchar(255)" validate:"required"`
	Description string `json:"description" mapstructure:"description" gorm:"type:text"`
}

type BaseProjectMetricSetting

type BaseProjectMetricSetting struct {
	ProjectName string `json:"projectName" mapstructure:"projectName" gorm:"primaryKey;type:varchar(255)"`
	BaseMetric  `mapstructure:",squash"`
}

type Blueprint

type Blueprint struct {
	Name        string          `json:"name" validate:"required"`
	ProjectName string          `json:"projectName" gorm:"type:varchar(255)"`
	Mode        string          `json:"mode" gorm:"varchar(20)" validate:"required,oneof=NORMAL ADVANCED"`
	Plan        json.RawMessage `json:"plan" gorm:"serializer:encdec"`
	Enable      bool            `json:"enable"`
	//please check this https://crontab.guru/ for detail
	CronConfig   string          `json:"cronConfig" format:"* * * * *" example:"0 0 * * 1"`
	IsManual     bool            `json:"isManual"`
	SkipOnFail   bool            `json:"skipOnFail"`
	Labels       []string        `json:"labels" gorm:"-"`
	Settings     json.RawMessage `` /* 139-byte string literal not displayed */
	common.Model `swaggerignore:"true"`
}

@Description CronConfig

func (*Blueprint) GetConnections

func (bp *Blueprint) GetConnections() ([]*plugin.BlueprintConnectionV200, errors.Error)

GetConnections Gets all the blueprint connections for this blueprint

func (*Blueprint) GetScopes

func (bp *Blueprint) GetScopes(connectionId uint64, pluginName string) ([]*plugin.BlueprintScopeV200, errors.Error)

GetScopes Gets all the scopes for a given connection for this blueprint. Returns an empty slice if none found.

func (Blueprint) TableName

func (Blueprint) TableName() string

func (*Blueprint) UnmarshalPlan

func (bp *Blueprint) UnmarshalPlan() (plugin.PipelinePlan, errors.Error)

UnmarshalPlan unmarshals Plan in JSON to strong-typed plugin.PipelinePlan

func (*Blueprint) UnmarshalSettings

func (bp *Blueprint) UnmarshalSettings() (BlueprintSettings, errors.Error)

UnmarshalSettings unmarshals the BlueprintSettings on the Blueprint

func (*Blueprint) UpdateSettings

func (bp *Blueprint) UpdateSettings(settings *BlueprintSettings) errors.Error

UpdateSettings updates the blueprint instance with this settings reference

type BlueprintSettings

type BlueprintSettings struct {
	Version     string          `json:"version" validate:"required,semver,oneof=1.0.0"`
	TimeAfter   *time.Time      `json:"timeAfter"`
	Connections json.RawMessage `json:"connections" validate:"required"`
	BeforePlan  json.RawMessage `json:"before_plan"`
	AfterPlan   json.RawMessage `json:"after_plan"`
}

func (*BlueprintSettings) UnmarshalConnections

func (bps *BlueprintSettings) UnmarshalConnections() ([]*plugin.BlueprintConnectionV200, errors.Error)

UnmarshalConnections unmarshals the connections on this BlueprintSettings reference

func (*BlueprintSettings) UpdateConnections

func (bps *BlueprintSettings) UpdateConnections(updater func(c *plugin.BlueprintConnectionV200) errors.Error) errors.Error

UpdateConnections updates the connections on this BlueprintSettings reference according to the updater function

type CollectorLatestState

type CollectorLatestState struct {
	CreatedAt          time.Time `json:"createdAt"`
	UpdatedAt          time.Time `json:"updatedAt"`
	RawDataParams      string    `gorm:"primaryKey;column:raw_data_params;type:varchar(255);index" json:"raw_data_params"`
	RawDataTable       string    `gorm:"primaryKey;column:raw_data_table;type:varchar(255)" json:"raw_data_table"`
	TimeAfter          *time.Time
	LatestSuccessStart *time.Time
}

func (CollectorLatestState) TableName

func (CollectorLatestState) TableName() string

type DbBlueprintLabel

type DbBlueprintLabel struct {
	CreatedAt   time.Time `json:"createdAt"`
	UpdatedAt   time.Time `json:"updatedAt"`
	BlueprintId uint64    `json:"blueprint_id" gorm:"primaryKey"`
	Name        string    `json:"name" gorm:"primaryKey;index"`
}

func (DbBlueprintLabel) TableName

func (DbBlueprintLabel) TableName() string

type DbPipelineLabel

type DbPipelineLabel struct {
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	PipelineId uint64    `json:"pipeline_id" gorm:"primaryKey"`
	Name       string    `json:"name" gorm:"primaryKey;index"`
}

func (DbPipelineLabel) TableName

func (DbPipelineLabel) TableName() string

type DynamicTabler

type DynamicTabler interface {
	dal.Tabler
	json.Marshaler
	json.Unmarshaler
	NewValue() any
	New() DynamicTabler
	NewSlice() DynamicTabler
	From(src any) errors.Error
	To(target any) errors.Error
	Unwrap() any
	UnwrapPtr() *any
	UnwrapSlice() []any
}

DynamicTabler is a core.Tabler that wraps a runtime (anonymously) generated data-model. Due to limitations of reflection in Go and the GORM framework, the underlying model and the table have to be explicitly passed into dal.Dal's API via Unwrap() and TableName()

func NewDynamicTabler

func NewDynamicTabler(tableName string, objType reflect.Type) DynamicTabler

type DynamicTablerImpl

type DynamicTablerImpl struct {
	// contains filtered or unexported fields
}

DynamicTablerImpl the implementation of DynamicTabler

func (*DynamicTablerImpl) From

func (d *DynamicTablerImpl) From(src any) errors.Error

func (*DynamicTablerImpl) MarshalJSON

func (d *DynamicTablerImpl) MarshalJSON() ([]byte, error)

func (*DynamicTablerImpl) New

func (*DynamicTablerImpl) NewSlice

func (d *DynamicTablerImpl) NewSlice() DynamicTabler

func (*DynamicTablerImpl) NewValue

func (d *DynamicTablerImpl) NewValue() any

func (*DynamicTablerImpl) TableName

func (d *DynamicTablerImpl) TableName() string

func (*DynamicTablerImpl) To

func (d *DynamicTablerImpl) To(target any) errors.Error

func (*DynamicTablerImpl) UnmarshalJSON

func (d *DynamicTablerImpl) UnmarshalJSON(b []byte) error

func (*DynamicTablerImpl) Unwrap

func (d *DynamicTablerImpl) Unwrap() any

func (*DynamicTablerImpl) UnwrapPtr

func (d *DynamicTablerImpl) UnwrapPtr() *any

func (*DynamicTablerImpl) UnwrapSlice

func (d *DynamicTablerImpl) UnwrapSlice() []any

type LockingHistory

type LockingHistory struct {
	ID        uint64 `gorm:"primaryKey" json:"id"`
	HostName  string
	Version   string
	Succeeded bool
	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
}

LockingHistory is desgned for preventing mutiple delake instances from sharing the same database which may cause problems like #3537, #3466. It works by the following step:

1. Each devlake insert a record to this table whie `Succeeded=false` 2. Then it should try to lock the LockingStub table 3. Update the record with `Succeeded=true` if it had obtained the lock successfully

NOTE: it works IFF all devlake instances obey the principle described above, in other words, this mechanism can not prevent older versions from sharing the same database

func (LockingHistory) TableName

func (LockingHistory) TableName() string

type LockingStub

type LockingStub struct {
	Stub string
}

LockingStub does nothing but offer a locking target

func (LockingStub) TableName

func (LockingStub) TableName() string

type NewPipeline

type NewPipeline struct {
	Name        string              `json:"name"`
	Plan        plugin.PipelinePlan `json:"plan" swaggertype:"array,string" example:"please check api /pipelines/<PLUGIN_NAME>/pipeline-plan"`
	Labels      []string            `json:"labels"`
	SkipOnFail  bool                `json:"skipOnFail"`
	BlueprintId uint64
}

We use a 2D array because the request body must be an array of a set of tasks to be executed concurrently, while each set is to be executed sequentially.

type NewTask

type NewTask struct {
	// Plugin name
	*plugin.PipelineTask
	PipelineId  uint64 `json:"-"`
	PipelineRow int    `json:"-"`
	PipelineCol int    `json:"-"`
	IsRerun     bool   `json:"-"`
}

type Notification

type Notification struct {
	common.Model
	Type         NotificationType
	Endpoint     string
	Nonce        string
	ResponseCode int
	Response     string
	Data         string
}

Notification records notifications sent by lake

func (Notification) TableName

func (Notification) TableName() string

type NotificationType

type NotificationType string
const (
	NotificationPipelineStatusChanged NotificationType = "PipelineStatusChanged"
)

type Pipeline

type Pipeline struct {
	common.Model
	Name          string          `json:"name" gorm:"index"`
	BlueprintId   uint64          `json:"blueprintId"`
	Plan          json.RawMessage `json:"plan" gorm:"serializer:encdec"`
	TotalTasks    int             `json:"totalTasks"`
	FinishedTasks int             `json:"finishedTasks"`
	BeganAt       *time.Time      `json:"beganAt"`
	FinishedAt    *time.Time      `json:"finishedAt" gorm:"index"`
	Status        string          `json:"status"`
	Message       string          `json:"message"`
	ErrorName     string          `json:"errorName"`
	SpentSeconds  int             `json:"spentSeconds"`
	Stage         int             `json:"stage"`
	Labels        []string        `json:"labels" gorm:"-"`
	SkipOnFail    bool            `json:"skipOnFail"`
}

func (Pipeline) TableName

func (Pipeline) TableName() string

type Project

type Project struct {
	BaseProject `mapstructure:",squash"`
	common.NoPKModel
}

func (Project) TableName

func (Project) TableName() string

type ProjectMetricSetting

type ProjectMetricSetting struct {
	BaseProjectMetricSetting `mapstructure:",squash"`
	common.NoPKModel
}

func (ProjectMetricSetting) TableName

func (ProjectMetricSetting) TableName() string

type Subtask

type Subtask struct {
	common.Model
	TaskID       uint64     `json:"task_id" gorm:"index"`
	Name         string     `json:"name" gorm:"index"`
	Number       int        `json:"number"`
	BeganAt      *time.Time `json:"beganAt"`
	FinishedAt   *time.Time `json:"finishedAt" gorm:"index"`
	SpentSeconds int64      `json:"spentSeconds"`
}

func (Subtask) TableName

func (Subtask) TableName() string

type Task

type Task struct {
	common.Model
	Plugin         string              `json:"plugin" gorm:"index"`
	Subtasks       datatypes.JSON      `json:"subtasks"`
	Options        string              `json:"options" gorm:"serializer:encdec"`
	Status         string              `json:"status"`
	Message        string              `json:"message"`
	ErrorName      string              `json:"errorName"`
	Progress       float32             `json:"progress"`
	ProgressDetail *TaskProgressDetail `json:"progressDetail" gorm:"-"`

	FailedSubTask string     `json:"failedSubTask"`
	PipelineId    uint64     `json:"pipelineId" gorm:"index"`
	PipelineRow   int        `json:"pipelineRow"`
	PipelineCol   int        `json:"pipelineCol"`
	BeganAt       *time.Time `json:"beganAt"`
	FinishedAt    *time.Time `json:"finishedAt" gorm:"index"`
	SpentSeconds  int        `json:"spentSeconds"`
}

func (*Task) GetOptions

func (task *Task) GetOptions() (map[string]interface{}, errors.Error)

func (*Task) GetSubTasks

func (task *Task) GetSubTasks() ([]string, errors.Error)

func (Task) TableName

func (Task) TableName() string

type TaskProgressDetail

type TaskProgressDetail struct {
	TotalSubTasks    int    `json:"totalSubTasks"`
	FinishedSubTasks int    `json:"finishedSubTasks"`
	TotalRecords     int    `json:"totalRecords"`
	FinishedRecords  int    `json:"finishedRecords"`
	SubTaskName      string `json:"subTaskName"`
	SubTaskNumber    int    `json:"subTaskNumber"`
}

Jump to

Keyboard shortcuts

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