package processing import ( "context" "log/slog" "sync" "time" "git.jmbit.de/jmb/scanfile/server/internal/database" "git.jmbit.de/jmb/scanfile/server/internal/sqlc" "github.com/jackc/pgx/v5/pgtype" "github.com/spf13/viper" ) var semaphore chan struct{} var swg *sync.WaitGroup //Used to determine if a task was started by a previous instance that stalled out or died var startup time.Time func Setup(wg *sync.WaitGroup) { semaphore = make(chan struct{}, viper.GetInt("processing.maxparallel")) startup = time.Now() } // Submit() starts the analysis process for a file. func Submit(ctx context.Context, file pgtype.UUID ) error { job, err := database.NewProcessingJob(ctx, file, TypeBasic) if err != nil { slog.Error("Could not submit processing job", "error", err, "file-uuid", file) return err } go processJob(job) return nil } func processJob(job sqlc.ProcessingJob) { }