48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
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.LibmagicMime.Valid = true
|
|
fileProperties.LibmagicApple.Valid = true
|
|
fileProperties.LibmagicExtension.Valid = true
|
|
fileProperties.FileID = job.FileID
|
|
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
|
|
}
|