package basic import ( "crypto/md5" "crypto/sha256" "log/slog" "git.jmbit.de/jmb/scanfile/server/internal/database" "git.jmbit.de/jmb/scanfile/server/internal/sqlc" "git.jmbit.de/jmb/scanfile/server/internal/store" ) // BasicProcessing() determines type agnostic information about the file func BasicProcessing(job sqlc.ProcessingJob) error { database.StartProcessingJob(job.ID) fileBytes, err := store.GetFileBytes(job.FileID.String()) if err != nil { database.FailProcessingJob(job.ID, err) return err } sha256sum := sha256.Sum256(fileBytes) md5sum := md5.Sum(fileBytes) fileCmdResult, err := FileCmd(job.FileID.String()) if err != nil { database.FailProcessingJob(job.ID, err) slog.Error("Error processing file", "file-uuid", job.FileID.String(), "error", err) return err } fileProperties := sqlc.InsertFilePropertiesParams{} fileProperties.ID.Bytes = job.FileID.Bytes fileProperties.Md5 = md5sum[:] fileProperties.Sha256 = sha256sum[:] fileProperties.LibmagicMime.String = fileCmdResult.MimeType fileProperties.LibmagicApple.String = fileCmdResult.Apple fileProperties.LibmagicExtension.String = fileCmdResult.Extension err = database.InsertFileProperties(fileProperties) if err != nil { database.FailProcessingJob(job.ID, err) slog.Error("Error inserting basic file properties into database", "file-uuid", job.FileID.String(), "error", err) return err } return nil }