summaryrefslogtreecommitdiff
path: root/Services
diff options
context:
space:
mode:
Diffstat (limited to 'Services')
-rw-r--r--Services/MediaService.cs41
-rw-r--r--Services/OcrService.cs3
-rw-r--r--Services/SearchService.cs1
3 files changed, 25 insertions, 20 deletions
diff --git a/Services/MediaService.cs b/Services/MediaService.cs
index f814709..6d327cc 100644
--- a/Services/MediaService.cs
+++ b/Services/MediaService.cs
@@ -120,17 +120,6 @@ public class MediaService : IMediaService {
if(checksum is not null && hash != checksum.ToLower())
throw new MediaCreateException("Checksum does not match");
- var fileRecord = new UploadedFile() {
- Filename = fileName,
- Length = fileData.Length,
- OriginalChecksum = hash,
- ChecksumVerified = checksum is not null,
- UploadTime = DateTime.UtcNow,
- LastAccessTime = lastAccessTime,
- LastWriteTime = lastWriteTime,
- CreateTime = createTime
- };
-
// Determine the MIME type
fileData.Seek(0, SeekOrigin.Begin);
var defs = inspector.Inspect(fileData);
@@ -142,18 +131,29 @@ public class MediaService : IMediaService {
fileData.Seek(0, SeekOrigin.Begin);
using var magickImage = new MagickImage(fileData);
- var media = db.Media
- .FirstOrDefault(m => m.Checksum == hash);
+ var media = db.UploadedFiles
+ .FirstOrDefault(uf => uf.Checksum == hash)?
+ .Media;
+
+ var fileRecord = new UploadedFile() {
+ Filename = fileName,
+ Length = fileData.Length,
+ Checksum = hash,
+ ChecksumVerified = checksum is not null,
+ MimeType = mime,
+ Width = magickImage.Width,
+ Height = magickImage.Height,
+ UploadTime = DateTime.UtcNow,
+ LastAccessTime = lastAccessTime,
+ LastWriteTime = lastWriteTime,
+ CreateTime = createTime
+ };
if(media is null) {
var ingestTagDef = db.TagDefinitions
.First(td => td.Guid == HBContext.IngestTag);
media = new() {
- Checksum = hash,
- MimeType = mime,
- Width = magickImage.Width,
- Height = magickImage.Height,
CurrentUploadedFile = fileRecord,
UploadedFiles = new() {
fileRecord
@@ -250,11 +250,14 @@ public class MediaService : IMediaService {
public Stream GetThumbnail(Guid media, int? width, int? height) {
using var db = dbFactory.CreateDbContext();
- var m = db.Media.First(m => m.Guid == media);
+
+ var m = db.Media
+ .Include(m => m.CurrentUploadedFile)
+ .First(m => m.Guid == media);
if(m is null)
throw new ObjectNotFoundException(media);
- if(m.MimeType.Split("/")[0] != "image")
+ if(m.CurrentUploadedFile.MimeType.Split("/")[0] != "image")
throw new ThumbnailException("Media object not an image", m);
using var image = new MagickImage(GetPath(m));
diff --git a/Services/OcrService.cs b/Services/OcrService.cs
index 2f65e43..1967234 100644
--- a/Services/OcrService.cs
+++ b/Services/OcrService.cs
@@ -59,9 +59,10 @@ public class OcrService : IHostedService {
using var db = dbFactory.CreateDbContext();
Guid[] guids = db.Media
+ .Include(m => m.CurrentUploadedFile)
.Include(m => m.OcrData)
.Where(m => m.OcrData == null)
- .Where(m => m.MimeType.Contains("image/"))
+ .Where(m => m.CurrentUploadedFile.MimeType.Contains("image/"))
.Select(m => m.Guid)
.ToArray();
db.Dispose();
diff --git a/Services/SearchService.cs b/Services/SearchService.cs
index 2e097e3..7c677b2 100644
--- a/Services/SearchService.cs
+++ b/Services/SearchService.cs
@@ -56,6 +56,7 @@ public class SearchService : ISearchService {
return db.Media
.Include(m => m.Tags)
+ .Include(m => m.CurrentUploadedFile)
.Where(m => mediaIds.Contains(m.ObjectId))
.ToArray();
}