Merge branch 'feat/apiv2' into main

This commit is contained in:
spiral
2021-10-30 18:18:08 -04:00
43 changed files with 2456 additions and 310 deletions

View File

@@ -16,6 +16,15 @@ namespace PluralKit.Core
return _db.QueryStream<PKGroup>(query);
}
public IAsyncEnumerable<PKMember> GetGroupMembers(GroupId id)
{
var query = new Query("group_members")
.Select("members.*")
.Join("members", "group_members.member_id", "members.id")
.Where("group_members.group_id", id);
return _db.QueryStream<PKMember>(query);
}
// todo: add this to metrics tracking
public async Task AddGroupsToMember(MemberId member, IReadOnlyCollection<GroupId> groups)
{
@@ -67,5 +76,21 @@ namespace PluralKit.Core
.WhereIn("member_id", members);
return _db.ExecuteQuery(query);
}
public Task ClearGroupMembers(GroupId group)
{
_logger.Information("Cleared members of {GroupId}", group);
var query = new Query("group_members").AsDelete()
.Where("group_id", group);
return _db.ExecuteQuery(query);
}
public Task ClearMemberGroups(MemberId member)
{
_logger.Information("Cleared groups of {GroupId}", member);
var query = new Query("group_members").AsDelete()
.Where("member_id", member);
return _db.ExecuteQuery(query);
}
}
}

View File

@@ -21,8 +21,14 @@ namespace PluralKit.Core
}
public Task<SystemGuildSettings> GetSystemGuild(ulong guild, SystemId system)
public Task<SystemGuildSettings> GetSystemGuild(ulong guild, SystemId system, bool defaultInsert = true)
{
if (!defaultInsert)
return _db.QueryFirst<SystemGuildSettings>(new Query("system_guild")
.Where("guild", guild)
.Where("system", system)
);
var query = new Query("system_guild").AsInsert(new
{
guild = guild,
@@ -33,16 +39,22 @@ namespace PluralKit.Core
);
}
public Task UpdateSystemGuild(SystemId system, ulong guild, SystemGuildPatch patch)
public Task<SystemGuildSettings> UpdateSystemGuild(SystemId system, ulong guild, SystemGuildPatch patch)
{
_logger.Information("Updated {SystemId} in guild {GuildId}: {@SystemGuildPatch}", system, guild, patch);
var query = patch.Apply(new Query("system_guild").Where("system", system).Where("guild", guild));
return _db.ExecuteQuery(query, extraSql: "returning *");
return _db.QueryFirst<SystemGuildSettings>(query, extraSql: "returning *");
}
public Task<MemberGuildSettings> GetMemberGuild(ulong guild, MemberId member)
public Task<MemberGuildSettings> GetMemberGuild(ulong guild, MemberId member, bool defaultInsert = true)
{
if (!defaultInsert)
return _db.QueryFirst<MemberGuildSettings>(new Query("member_guild")
.Where("guild", guild)
.Where("member", member)
);
var query = new Query("member_guild").AsInsert(new
{
guild = guild,
@@ -53,11 +65,11 @@ namespace PluralKit.Core
);
}
public Task UpdateMemberGuild(MemberId member, ulong guild, MemberGuildPatch patch)
public Task<MemberGuildSettings> UpdateMemberGuild(MemberId member, ulong guild, MemberGuildPatch patch)
{
_logger.Information("Updated {MemberId} in guild {GuildId}: {@MemberGuildPatch}", member, guild, patch);
var query = patch.Apply(new Query("member_guild").Where("member", member).Where("guild", guild));
return _db.ExecuteQuery(query, extraSql: "returning *");
return _db.QueryFirst<MemberGuildSettings>(query, extraSql: "returning *");
}
}
}

View File

@@ -9,8 +9,8 @@ namespace PluralKit.Core
{
public partial class ModelRepository
{
public Task<IEnumerable<PKShardInfo>> GetShards(IPKConnection conn) =>
conn.QueryAsync<PKShardInfo>("select * from shards order by id");
public Task<IEnumerable<PKShardInfo>> GetShards() =>
_db.Execute(conn => conn.QueryAsync<PKShardInfo>("select * from shards order by id"));
public Task SetShardStatus(IPKConnection conn, int shard, PKShardInfo.ShardStatus status) =>
conn.ExecuteAsync(