package structs import ( "time" ) // structure for database type GroupTasks struct { Id string CreatorUserId string Category string GroupId string GroupName string Description string // user-specific description for faster retrieval CurrentTasksStep uint8 NumberOfSteps uint8 Status uint8 GlobalInputs string `gorm:"type:json"` StartedAt time.Time EndedAt time.Time RememberId string `gorm:"-"` // used by the web client who requested this to open the modal after the backend sent the NewGroupTaskStarted message } type GroupTaskSteps struct { Id string GroupTasksId string CreatorUserId string Step uint8 Status uint8 Log string `gorm:"type:text"` Inputs string `gorm:"type:json"` StartedAt time.Time EndedAt time.Time LockedByUserId string `gorm:"-"` // used by the web client to ensure that only one user can edit the input value } // read from file structure type CategoryGroup struct { Category string `json:"category"` Groups []Group `json:"groups"` } type Group struct { Category string `json:"category"` Id string `json:"id"` Name string `json:"name"` GlobalInputs []GlobalInputs `json:"globalInputs"` Tasks []Task `json:"tasks"` } type GlobalInputs struct { ParameterName string `json:"parameterName"` Type string `json:"type"` DisplayName string `json:"displayName"` } type Task struct { Name string `json:"name"` OnFinish string `json:"onFinish"` UndoPossible bool `json:"undoPossible"` ScriptPath string `json:"scriptPath"` Parameters []TaskParameter `json:"parameters"` // same as task inputs Feedback string `json:"feedback"` } type TaskParameter struct { ParameterName string `json:"parameterName"` Type string `json:"type"` DisplayName string `json:"displayName"` Global bool `json:"global"` } // used for ui when a user is writing into input field to lock the task step for other users type LockedGroupTaskSteps struct { LockedByUserId string LockedByUserSession string // user session is needed to prevent sending the unlocking message to the user who are writing GroupTaskId string Step uint8 LockedAt time.Time } // used for ui when a user types into input fields to sync to other users and show them this when opening the group task view type GroupTaskStepsInput struct { GroupTaskId string Step uint8 ParameterName string Value interface{} }