summaryrefslogtreecommitdiff
path: root/Services/MediaService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Services/MediaService.cs')
-rw-r--r--Services/MediaService.cs41
1 files changed, 22 insertions, 19 deletions
diff --git a/Services/MediaService.cs b/Services/MediaService.cs
index cfd15f8..e573add 100644
--- a/Services/MediaService.cs
+++ b/Services/MediaService.cs
@@ -117,17 +117,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);
@@ -139,18 +128,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
@@ -244,11 +244,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));