package database import ( "context" "fmt" "log/slog" "git.jmbit.de/jmb/scanfile/server/internal/sqlc" "github.com/jackc/pgx/v5/pgtype" ) func GetFileByID(fileID string) (sqlc.File, error) { var pgUUID pgtype.UUID err := pgUUID.Scan(fileID) if err != nil { slog.Error("Unable to convert string to UUID", "file-uuid", fileID, "error", err) } query := sqlc.New(pool) file, err := query.GetFileByUUID(context.Background(), pgUUID) return file, nil } func InsertFileProperties(properties sqlc.InsertFilePropertiesParams) error { query := sqlc.New(pool) err := query.InsertFileProperties(context.Background(), properties) if err != nil { slog.Error("Unable to add file properties", "file-uuid", properties.ID.String(), "error", err) } return err } // InsertJsonResult() into one of the following tables: // diec, msoffice_mraptor, msoffice_oleid, msoffice_olevba func InsertJsonResult(fileID pgtype.UUID, data []byte, table string) error { query := sqlc.New(pool) var err error switch table { case "diec": err = query.InsertFileDIEC(context.Background(), sqlc.InsertFileDIECParams{FileID: fileID, Data: data}) case "msoffice_oleid": err = query.InsertFileMsofficeOleid(context.Background(), sqlc.InsertFileMsofficeOleidParams{FileID: fileID, Data: data}) case "msoffice_olevba": err = query.InsertFileMsofficeOlevba(context.Background(), sqlc.InsertFileMsofficeOlevbaParams{FileID: fileID, Data: data}) case "msoffice_mraptor": err = query.InsertFileMsofficeMraptor(context.Background(), sqlc.InsertFileMsofficeMraptorParams{FileID: fileID, Data: data}) default: err = fmt.Errorf("Invalid table name") } if err != nil { slog.Error("Unable to insert DIEC results", "file-uuid", fileID.String(), "error", err) } return err } // GetFileMime() returns the MimeType for a file func GetFileMime(fileID pgtype.UUID) (string, error) { query := sqlc.New(pool) mimeType, err := query.GetFileMime(context.Background(), fileID) if err != nil { slog.Error("Error getting file Mimetype", "file-uuid", fileID.String(), "error", err) return "", err } return mimeType, nil }