feat: use redis cache for non-id message lookups

This commit is contained in:
spiral
2022-11-24 06:32:55 +00:00
parent bf7747ab34
commit e9673a6704
9 changed files with 75 additions and 29 deletions

View File

@@ -18,6 +18,7 @@ public class PKControllerBase: ControllerBase
protected readonly ApiConfig _config;
protected readonly IDatabase _db;
protected readonly ModelRepository _repo;
protected readonly RedisService _redis;
protected readonly DispatchService _dispatch;
public PKControllerBase(IServiceProvider svc)
@@ -25,6 +26,7 @@ public class PKControllerBase: ControllerBase
_config = svc.GetRequiredService<ApiConfig>();
_db = svc.GetRequiredService<IDatabase>();
_repo = svc.GetRequiredService<ModelRepository>();
_redis = svc.GetRequiredService<RedisService>();
_dispatch = svc.GetRequiredService<DispatchService>();
}

View File

@@ -20,12 +20,7 @@ namespace PluralKit.API;
[Route("private")]
public class PrivateController: PKControllerBase
{
private readonly RedisService _redis;
public PrivateController(IServiceProvider svc) : base(svc)
{
_redis = svc.GetRequiredService<RedisService>();
}
public PrivateController(IServiceProvider svc) : base(svc) { }
[HttpGet("meta")]
public async Task<ActionResult<JObject>> Meta()

View File

@@ -92,7 +92,9 @@ public class DiscordControllerV2: PKControllerBase
[HttpGet("messages/{messageId}")]
public async Task<ActionResult<JObject>> MessageGet(ulong messageId)
{
var msg = await _repo.GetFullMessage(messageId);
var messageByOriginal = await _redis.GetOriginalMid(messageId);
var msg = await _repo.GetFullMessage(messageByOriginal ?? messageId);
if (msg == null)
throw Errors.MessageNotFound;