Refactor data stores, merging the Store classes
This commit is contained in:
@@ -8,17 +8,17 @@ namespace PluralKit.API.Controllers
|
||||
[Route("v1/a")]
|
||||
public class AccountController: ControllerBase
|
||||
{
|
||||
private SystemStore _systems;
|
||||
private IDataStore _data;
|
||||
|
||||
public AccountController(SystemStore systems)
|
||||
public AccountController(IDataStore data)
|
||||
{
|
||||
_systems = systems;
|
||||
_data = data;
|
||||
}
|
||||
|
||||
[HttpGet("{aid}")]
|
||||
public async Task<ActionResult<PKSystem>> GetSystemByAccount(ulong aid)
|
||||
{
|
||||
var system = await _systems.GetByAccount(aid);
|
||||
var system = await _data.GetSystemByAccount(aid);
|
||||
if (system == null) return NotFound("Account not found.");
|
||||
|
||||
return Ok(system);
|
||||
|
@@ -9,13 +9,13 @@ namespace PluralKit.API.Controllers
|
||||
[Route("v1/m")]
|
||||
public class MemberController: ControllerBase
|
||||
{
|
||||
private MemberStore _members;
|
||||
private IDataStore _data;
|
||||
private DbConnectionFactory _conn;
|
||||
private TokenAuthService _auth;
|
||||
|
||||
public MemberController(MemberStore members, DbConnectionFactory conn, TokenAuthService auth)
|
||||
public MemberController(IDataStore data, DbConnectionFactory conn, TokenAuthService auth)
|
||||
{
|
||||
_members = members;
|
||||
_data = data;
|
||||
_conn = conn;
|
||||
_auth = auth;
|
||||
}
|
||||
@@ -23,7 +23,7 @@ namespace PluralKit.API.Controllers
|
||||
[HttpGet("{hid}")]
|
||||
public async Task<ActionResult<PKMember>> GetMember(string hid)
|
||||
{
|
||||
var member = await _members.GetByHid(hid);
|
||||
var member = await _data.GetMemberByHid(hid);
|
||||
if (member == null) return NotFound("Member not found.");
|
||||
|
||||
return Ok(member);
|
||||
@@ -39,7 +39,7 @@ namespace PluralKit.API.Controllers
|
||||
return BadRequest("Member name cannot be null.");
|
||||
|
||||
// Enforce per-system member limit
|
||||
var memberCount = await _members.MemberCount(system);
|
||||
var memberCount = await _data.GetSystemMemberCount(system);
|
||||
if (memberCount >= Limits.MaxMemberCount)
|
||||
return BadRequest($"Member limit reached ({memberCount} / {Limits.MaxMemberCount}).");
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace PluralKit.API.Controllers
|
||||
if (newMember.Suffix != null && newMember.Suffix.Length > 1000)
|
||||
return BadRequest();
|
||||
|
||||
var member = await _members.Create(system, newMember.Name);
|
||||
var member = await _data.CreateMember(system, newMember.Name);
|
||||
|
||||
member.Name = newMember.Name;
|
||||
member.DisplayName = newMember.DisplayName;
|
||||
@@ -72,7 +72,7 @@ namespace PluralKit.API.Controllers
|
||||
member.Description = newMember.Description;
|
||||
member.Prefix = newMember.Prefix;
|
||||
member.Suffix = newMember.Suffix;
|
||||
await _members.Save(member);
|
||||
await _data.SaveMember(member);
|
||||
|
||||
return Ok(member);
|
||||
}
|
||||
@@ -81,7 +81,7 @@ namespace PluralKit.API.Controllers
|
||||
[RequiresSystem]
|
||||
public async Task<ActionResult<PKMember>> PatchMember(string hid, [FromBody] PKMember newMember)
|
||||
{
|
||||
var member = await _members.GetByHid(hid);
|
||||
var member = await _data.GetMemberByHid(hid);
|
||||
if (member == null) return NotFound("Member not found.");
|
||||
|
||||
if (member.System != _auth.CurrentSystem.Id) return Unauthorized($"Member '{hid}' is not part of your system.");
|
||||
@@ -116,7 +116,7 @@ namespace PluralKit.API.Controllers
|
||||
member.Description = newMember.Description;
|
||||
member.Prefix = newMember.Prefix;
|
||||
member.Suffix = newMember.Suffix;
|
||||
await _members.Save(member);
|
||||
await _data.SaveMember(member);
|
||||
|
||||
return Ok(member);
|
||||
}
|
||||
@@ -125,12 +125,12 @@ namespace PluralKit.API.Controllers
|
||||
[RequiresSystem]
|
||||
public async Task<ActionResult<PKMember>> DeleteMember(string hid)
|
||||
{
|
||||
var member = await _members.GetByHid(hid);
|
||||
var member = await _data.GetMemberByHid(hid);
|
||||
if (member == null) return NotFound("Member not found.");
|
||||
|
||||
if (member.System != _auth.CurrentSystem.Id) return Unauthorized($"Member '{hid}' is not part of your system.");
|
||||
|
||||
await _members.Delete(member);
|
||||
await _data.DeleteMember(member);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
@@ -21,17 +21,17 @@ namespace PluralKit.API.Controllers
|
||||
[Route("msg")]
|
||||
public class MessageController: ControllerBase
|
||||
{
|
||||
private MessageStore _messages;
|
||||
private IDataStore _data;
|
||||
|
||||
public MessageController(MessageStore messages)
|
||||
public MessageController(IDataStore _data)
|
||||
{
|
||||
_messages = messages;
|
||||
this._data = _data;
|
||||
}
|
||||
|
||||
[HttpGet("{mid}")]
|
||||
public async Task<ActionResult<MessageReturn>> GetMessage(ulong mid)
|
||||
{
|
||||
var msg = await _messages.Get(mid);
|
||||
var msg = await _data.GetMessage(mid);
|
||||
if (msg == null) return NotFound("Message not found.");
|
||||
|
||||
return new MessageReturn
|
||||
|
@@ -31,17 +31,13 @@ namespace PluralKit.API.Controllers
|
||||
[Route("v1/s")]
|
||||
public class SystemController : ControllerBase
|
||||
{
|
||||
private SystemStore _systems;
|
||||
private MemberStore _members;
|
||||
private SwitchStore _switches;
|
||||
private IDataStore _data;
|
||||
private DbConnectionFactory _conn;
|
||||
private TokenAuthService _auth;
|
||||
|
||||
public SystemController(SystemStore systems, MemberStore members, SwitchStore switches, DbConnectionFactory conn, TokenAuthService auth)
|
||||
public SystemController(IDataStore data, DbConnectionFactory conn, TokenAuthService auth)
|
||||
{
|
||||
_systems = systems;
|
||||
_members = members;
|
||||
_switches = switches;
|
||||
_data = data;
|
||||
_conn = conn;
|
||||
_auth = auth;
|
||||
}
|
||||
@@ -56,7 +52,7 @@ namespace PluralKit.API.Controllers
|
||||
[HttpGet("{hid}")]
|
||||
public async Task<ActionResult<PKSystem>> GetSystem(string hid)
|
||||
{
|
||||
var system = await _systems.GetByHid(hid);
|
||||
var system = await _data.GetSystemByHid(hid);
|
||||
if (system == null) return NotFound("System not found.");
|
||||
return Ok(system);
|
||||
}
|
||||
@@ -64,10 +60,10 @@ namespace PluralKit.API.Controllers
|
||||
[HttpGet("{hid}/members")]
|
||||
public async Task<ActionResult<IEnumerable<PKMember>>> GetMembers(string hid)
|
||||
{
|
||||
var system = await _systems.GetByHid(hid);
|
||||
var system = await _data.GetSystemByHid(hid);
|
||||
if (system == null) return NotFound("System not found.");
|
||||
|
||||
var members = await _members.GetBySystem(system);
|
||||
var members = await _data.GetSystemMembers(system);
|
||||
return Ok(members);
|
||||
}
|
||||
|
||||
@@ -76,7 +72,7 @@ namespace PluralKit.API.Controllers
|
||||
{
|
||||
if (before == null) before = SystemClock.Instance.GetCurrentInstant();
|
||||
|
||||
var system = await _systems.GetByHid(hid);
|
||||
var system = await _data.GetSystemByHid(hid);
|
||||
if (system == null) return NotFound("System not found.");
|
||||
|
||||
using (var conn = await _conn.Obtain())
|
||||
@@ -96,13 +92,13 @@ namespace PluralKit.API.Controllers
|
||||
[HttpGet("{hid}/fronters")]
|
||||
public async Task<ActionResult<FrontersReturn>> GetFronters(string hid)
|
||||
{
|
||||
var system = await _systems.GetByHid(hid);
|
||||
var system = await _data.GetSystemByHid(hid);
|
||||
if (system == null) return NotFound("System not found.");
|
||||
|
||||
var sw = await _switches.GetLatestSwitch(system);
|
||||
var sw = await _data.GetLatestSwitch(system);
|
||||
if (sw == null) return NotFound("System has no registered switches.");
|
||||
|
||||
var members = await _switches.GetSwitchMembers(sw);
|
||||
var members = await _data.GetSwitchMembers(sw);
|
||||
return Ok(new FrontersReturn
|
||||
{
|
||||
Timestamp = sw.Timestamp,
|
||||
@@ -130,7 +126,7 @@ namespace PluralKit.API.Controllers
|
||||
system.AvatarUrl = newSystem.AvatarUrl;
|
||||
system.UiTz = newSystem.UiTz ?? "UTC";
|
||||
|
||||
await _systems.Save(system);
|
||||
await _data.SaveSystem(system);
|
||||
return Ok(system);
|
||||
}
|
||||
|
||||
@@ -142,10 +138,10 @@ namespace PluralKit.API.Controllers
|
||||
return BadRequest("Duplicate members in member list.");
|
||||
|
||||
// We get the current switch, if it exists
|
||||
var latestSwitch = await _switches.GetLatestSwitch(_auth.CurrentSystem);
|
||||
var latestSwitch = await _data.GetLatestSwitch(_auth.CurrentSystem);
|
||||
if (latestSwitch != null)
|
||||
{
|
||||
var latestSwitchMembers = await _switches.GetSwitchMembers(latestSwitch);
|
||||
var latestSwitchMembers = await _data.GetSwitchMembers(latestSwitch);
|
||||
|
||||
// Bail if this switch is identical to the latest one
|
||||
if (latestSwitchMembers.Select(m => m.Hid).SequenceEqual(param.Members))
|
||||
@@ -174,7 +170,7 @@ namespace PluralKit.API.Controllers
|
||||
}
|
||||
|
||||
// Finally, log the switch (yay!)
|
||||
await _switches.RegisterSwitch(_auth.CurrentSystem, membersInOrder);
|
||||
await _data.AddSwitch(_auth.CurrentSystem, membersInOrder);
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user