mirror of
https://github.com/langgenius/dify-plugin-daemon.git
synced 2026-07-22 01:35:24 -04:00
61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/langgenius/dify-plugin-daemon/internal/db"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/tasks"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/types/models"
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/plugin_entities"
|
|
)
|
|
|
|
func buildTaskStatuses(
|
|
pluginUniqueIdentifiers []plugin_entities.PluginUniqueIdentifier,
|
|
declarations []*plugin_entities.PluginDeclaration,
|
|
source string,
|
|
) []models.InstallTaskPluginStatus {
|
|
statuses := make([]models.InstallTaskPluginStatus, len(pluginUniqueIdentifiers))
|
|
for i, identifier := range pluginUniqueIdentifiers {
|
|
statuses[i] = models.InstallTaskPluginStatus{
|
|
PluginUniqueIdentifier: identifier,
|
|
PluginID: identifier.PluginID(),
|
|
Status: models.InstallTaskStatusPending,
|
|
Icon: declarations[i].Icon,
|
|
IconDark: declarations[i].IconDark,
|
|
Labels: declarations[i].Label,
|
|
Message: "",
|
|
Source: source,
|
|
}
|
|
}
|
|
return statuses
|
|
}
|
|
|
|
func createInstallTasks(
|
|
tenants []string,
|
|
statuses []models.InstallTaskPluginStatus,
|
|
) (*tasks.InstallTaskRegistry, error) {
|
|
registry := &tasks.InstallTaskRegistry{
|
|
Order: append([]string{}, tenants...),
|
|
Tasks: make(map[string]*models.InstallTask, len(tenants)),
|
|
}
|
|
|
|
for _, tenantID := range tenants {
|
|
statusCopy := make([]models.InstallTaskPluginStatus, len(statuses))
|
|
copy(statusCopy, statuses)
|
|
|
|
task := &models.InstallTask{
|
|
Status: models.InstallTaskStatusRunning,
|
|
TenantID: tenantID,
|
|
TotalPlugins: len(statusCopy),
|
|
CompletedPlugins: 0,
|
|
Plugins: statusCopy,
|
|
}
|
|
|
|
if err := db.Create(task); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
registry.Tasks[tenantID] = task
|
|
}
|
|
|
|
return registry, nil
|
|
}
|