/
wax_boy
/
semaphore_custom
Обзор
Документация
Войти
/
wax_boy
/
semaphore_custom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
services/export/TaskOutput.go
131 строка
2 KB
Michael Gukov
fix(be): migration tool
05 мар 2026, 19:24
05 мар 2026, 19:24
cea5bc8
Код
Авторство
О чём код?
package export import ( "strconv" "github.com/semaphoreui/semaphore/db" ) type TaskOutputExporter struct { ValueMap[db.TaskOutput] } func (e *TaskOutputExporter) load(store db.Store, exporter DataExporter, progress Progress) error { projs, err := exporter.getLoadedKeysInt(Project, GlobalScope) if err != nil { return err } taskCount, err := taskCount(exporter) if err != nil { return err } taskIndex := 0 for _, projId := range projs { tasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId)) if err != nil { return err } allValues := make([]db.TaskOutput, 0) for _, task := range tasks { outputRes, err := store.GetTaskOutputs(projId, task, db.RetrieveQueryParams{}) if err != nil { return err } allValues = append(allValues, outputRes...) taskIndex = taskIndex + 1 progress.update(float32(taskIndex)/float32(taskCount), 0) } err = e.appendValues(allValues, strconv.Itoa(projId)) if err != nil { return err } } return nil } func taskCount(exporter DataExporter) (int, error) { projs, err := exporter.getLoadedKeysInt(Project, GlobalScope) if err != nil { return 0, err } count := 0 for _, projId := range projs { tasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId)) if err != nil { return 0, err } count = count + len(tasks) } return count, nil } func (e *TaskOutputExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) { outputs := make([]db.TaskOutput, 0) size := len(e.values) for index, val := range e.values { old := val.value old.TaskID, err = exporter.getNewKeyInt(Task, val.scope, old.TaskID) if err != nil { return err } // boltDb currently doesn't support task stages old.StageID = nil //, err = exporter.getNewKeyIntRef(TaskStage, val.scope, old.StageID, e) //if err != nil { // return err //} outputs = append(outputs, old) if len(outputs) >= 1000 { err = store.InsertTaskOutputBatch(outputs) if err != nil { return err } outputs = make([]db.TaskOutput, 0) } progress.update(float32(index)/float32(size), int64(index)) } if len(outputs) > 0 { err = store.InsertTaskOutputBatch(outputs) if err != nil { return err } } return nil } func (e *TaskOutputExporter) getName() string { return TaskOutput } func (e *TaskOutputExporter) exportDependsOn() []string { return []string{Task} } func (e *TaskOutputExporter) importDependsOn() []string { return []string{Task, TaskStage} }