scanfile/server/internal/processing/processing.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) {
}