mirror of https://github.com/stashapp/stash.git
78 lines
1.9 KiB
Go
78 lines
1.9 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
|
|
"github.com/stashapp/stash/internal/manager"
|
|
"github.com/stashapp/stash/internal/manager/task"
|
|
"github.com/stashapp/stash/pkg/models"
|
|
)
|
|
|
|
func refreshPackageType(typeArg PackageType) {
|
|
mgr := manager.GetInstance()
|
|
|
|
if typeArg == PackageTypePlugin {
|
|
mgr.RefreshPluginCache()
|
|
} else if typeArg == PackageTypeScraper {
|
|
mgr.RefreshScraperCache()
|
|
}
|
|
}
|
|
|
|
func (r *mutationResolver) InstallPackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
|
pm, err := getPackageManager(typeArg)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
mgr := manager.GetInstance()
|
|
t := &task.InstallPackagesJob{
|
|
PackagesJob: task.PackagesJob{
|
|
PackageManager: pm,
|
|
OnComplete: func() { refreshPackageType(typeArg) },
|
|
},
|
|
Packages: packages,
|
|
}
|
|
jobID := mgr.JobManager.Add(ctx, "Installing packages...", t)
|
|
|
|
return strconv.Itoa(jobID), nil
|
|
}
|
|
|
|
func (r *mutationResolver) UpdatePackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
|
pm, err := getPackageManager(typeArg)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
mgr := manager.GetInstance()
|
|
t := &task.UpdatePackagesJob{
|
|
PackagesJob: task.PackagesJob{
|
|
PackageManager: pm,
|
|
OnComplete: func() { refreshPackageType(typeArg) },
|
|
},
|
|
Packages: packages,
|
|
}
|
|
jobID := mgr.JobManager.Add(ctx, "Updating packages...", t)
|
|
|
|
return strconv.Itoa(jobID), nil
|
|
}
|
|
|
|
func (r *mutationResolver) UninstallPackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
|
pm, err := getPackageManager(typeArg)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
mgr := manager.GetInstance()
|
|
t := &task.UninstallPackagesJob{
|
|
PackagesJob: task.PackagesJob{
|
|
PackageManager: pm,
|
|
OnComplete: func() { refreshPackageType(typeArg) },
|
|
},
|
|
Packages: packages,
|
|
}
|
|
jobID := mgr.JobManager.Add(ctx, "Updating packages...", t)
|
|
|
|
return strconv.Itoa(jobID), nil
|
|
}
|