40 lines
912 B
Go
40 lines
912 B
Go
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) {
|
|
|
|
}
|