Add media url to MediaModel+Start work on tonenized search query model
Some checks failed
Build and Push Image / build-and-push (push) Has been cancelled

This commit is contained in:
2025-07-12 18:08:46 -04:00
parent 8536d335bc
commit b85bcd1c7a
5 changed files with 25 additions and 2 deletions

View File

@@ -14,8 +14,13 @@ pub fn MediaItem(props: MediaItemProps) -> Element {
let filename = item.file_name; let filename = item.file_name;
let id = item.id.unwrap().value; let id = item.id.unwrap().value;
let thumb = item.thumb_url; let thumb = item.thumb_url;
let url = item.media_url;
return rsx! { return rsx! {
a { class: "mediaItem", href: "{HOST}/m/{id}", target: "_blank", a {
class: "mediaItem",
href: "{HOST}/{url}",
target: "_blank",
"data-id" : id,
img { src: "{HOST}{thumb}" } img { src: "{HOST}{thumb}" }
span { class: "info", span { class: "info",
span { class: "name", "{filename}" } span { class: "name", "{filename}" }

View File

@@ -1,6 +1,8 @@
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
using SixLabors.ImageSharp;
namespace AobaCore.Models; namespace AobaCore.Models;
[BsonIgnoreExtraElements] [BsonIgnoreExtraElements]
@@ -16,6 +18,7 @@ public class Media
public ObjectId Owner { get; set; } public ObjectId Owner { get; set; }
public DateTime UploadDate { get; set; } public DateTime UploadDate { get; set; }
public string[] Tags { get; set; } = []; public string[] Tags { get; set; } = [];
public Size? Dimensions { get; set; }
public Dictionary<ThumbnailSize, ObjectId> Thumbnails { get; set; } = []; public Dictionary<ThumbnailSize, ObjectId> Thumbnails { get; set; } = [];
@@ -82,7 +85,7 @@ public class Media
{ {
return this switch return this switch
{ {
//Media { MediaType: MediaType.Raw or MediaType.Text or MediaType.Code} => $"/i/dl/{MediaId}/{Filename}", Media { MediaType: MediaType.Raw or MediaType.Text or MediaType.Code } => $"/m/{MediaId}/{Uri.EscapeDataString(Filename)}",
_ => $"/m/{MediaId}" _ => $"/m/{MediaId}"
}; };
} }

View File

@@ -14,6 +14,7 @@ namespace AobaServer.Controllers;
public class MediaController(AobaService aobaService, ILogger<MediaController> logger) : Controller public class MediaController(AobaService aobaService, ILogger<MediaController> logger) : Controller
{ {
[HttpGet("{id}")] [HttpGet("{id}")]
[HttpGet("{id}/*")]
[ResponseCache(Duration = int.MaxValue)] [ResponseCache(Duration = int.MaxValue)]
public async Task<IActionResult> MediaAsync(ObjectId id, [FromServices] MongoClient client, CancellationToken cancellationToken) public async Task<IActionResult> MediaAsync(ObjectId id, [FromServices] MongoClient client, CancellationToken cancellationToken)
{ {
@@ -58,6 +59,7 @@ public class MediaController(AobaService aobaService, ILogger<MediaController> l
} }
[HttpGet("/t/{id}")] [HttpGet("/t/{id}")]
[ResponseCache(Duration = int.MaxValue)]
public async Task<IActionResult> ThumbAsync(ObjectId id, [FromServices] ThumbnailService thumbnailService, CancellationToken cancellationToken = default) public async Task<IActionResult> ThumbAsync(ObjectId id, [FromServices] ThumbnailService thumbnailService, CancellationToken cancellationToken = default)
{ {
var thumb = await thumbnailService.GetThumbnailByFileIdAsync(id, cancellationToken); var thumb = await thumbnailService.GetThumbnailByFileIdAsync(id, cancellationToken);

View File

@@ -82,6 +82,7 @@ message MediaModel {
int32 viewCount = 5; int32 viewCount = 5;
Id owner = 6; Id owner = 6;
string thumbUrl = 7; string thumbUrl = 7;
string mediaUrl = 8;
} }
enum MediaType { enum MediaType {
@@ -99,3 +100,14 @@ message ShareXResponse {
string error = 2; string error = 2;
} }
} }
message SearchQuery {
optional string queryText = 1;
repeated Filter filters = 2;
}
message Filter {
string key = 1;
repeated string values = 2;
}

View File

@@ -56,6 +56,7 @@ public static class ProtoExtensions
Owner = media.Owner.ToId(), Owner = media.Owner.ToId(),
ViewCount = media.ViewCount, ViewCount = media.ViewCount,
ThumbUrl = thumbUrl, ThumbUrl = thumbUrl,
MediaUrl = media.GetMediaUrl()
}; };
} }