mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 16:34:02 +01:00
* Move main to cmd * Move api to internal * Move logger and manager to internal * Move shell hiding code to separate package * Decouple job from desktop and utils * Decouple session from config * Move static into internal * Decouple config from dlna * Move desktop to internal * Move dlna to internal * Decouple remaining packages from config * Move config into internal * Move jsonschema and paths to models * Make ffmpeg functions private * Move file utility methods into fsutil package * Move symwalk into fsutil * Move single-use util functions into client package * Move slice functions to separate packages * Add env var to suppress windowsgui arg * Move hash functions into separate package * Move identify to internal * Move autotag to internal * Touch UI when generating backend
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/stashapp/stash/internal/manager"
|
|
"github.com/stashapp/stash/pkg/job"
|
|
"github.com/stashapp/stash/pkg/models"
|
|
)
|
|
|
|
func makeJobStatusUpdate(t models.JobStatusUpdateType, j job.Job) *models.JobStatusUpdate {
|
|
return &models.JobStatusUpdate{
|
|
Type: t,
|
|
Job: jobToJobModel(j),
|
|
}
|
|
}
|
|
|
|
func (r *subscriptionResolver) JobsSubscribe(ctx context.Context) (<-chan *models.JobStatusUpdate, error) {
|
|
msg := make(chan *models.JobStatusUpdate, 100)
|
|
|
|
subscription := manager.GetInstance().JobManager.Subscribe(ctx)
|
|
|
|
go func() {
|
|
for {
|
|
select {
|
|
case j := <-subscription.NewJob:
|
|
msg <- makeJobStatusUpdate(models.JobStatusUpdateTypeAdd, j)
|
|
case j := <-subscription.RemovedJob:
|
|
msg <- makeJobStatusUpdate(models.JobStatusUpdateTypeRemove, j)
|
|
case j := <-subscription.UpdatedJob:
|
|
msg <- makeJobStatusUpdate(models.JobStatusUpdateTypeUpdate, j)
|
|
case <-ctx.Done():
|
|
close(msg)
|
|
return
|
|
}
|
|
}
|
|
}()
|
|
|
|
return msg, nil
|
|
}
|
|
|
|
func (r *subscriptionResolver) ScanCompleteSubscribe(ctx context.Context) (<-chan bool, error) {
|
|
return manager.GetInstance().ScanSubscribe(ctx), nil
|
|
}
|