e176ccbab5
- DbConnectionFactory renamed to "Database", will now be the primary entry point for DB stuff - Created IPKConnection interface mostly containing async extensions to IDbConnection, use this going forward - Reworked the Connection/Command wrappers (that have performance/logging extensions) - Probably more stuff that I forgot???
28 lines
1.4 KiB
C#
28 lines
1.4 KiB
C#
#nullable enable
|
|
using System.Data;
|
|
using System.Threading.Tasks;
|
|
|
|
using Dapper;
|
|
|
|
namespace PluralKit.Core
|
|
{
|
|
public static class ModelQueryExt
|
|
{
|
|
public static Task<PKMember?> QueryMember(this IPKConnection conn, int id) =>
|
|
conn.QueryFirstOrDefaultAsync<PKMember?>("select * from members where id = @id", new {id});
|
|
|
|
public static Task<GuildConfig> QueryOrInsertGuildConfig(this IPKConnection conn, ulong guild) =>
|
|
conn.QueryFirstAsync<GuildConfig>("insert into servers (id) values (@Guild) on conflict do nothing returning *", new {Guild = guild});
|
|
|
|
public static Task<SystemGuildSettings> QueryOrInsertSystemGuildConfig(this IPKConnection conn, ulong guild, int system) =>
|
|
conn.QueryFirstAsync<SystemGuildSettings>(
|
|
"insert into member_guild (guild, member) values (@guild, @member) on conflict (guild, member) do update set guild = @guild, member = @member returning *",
|
|
new {guild, system});
|
|
|
|
public static Task<MemberGuildSettings> QueryOrInsertMemberGuildConfig(
|
|
this IPKConnection conn, ulong guild, int member) =>
|
|
conn.QueryFirstAsync<MemberGuildSettings>(
|
|
"insert into member_guild (guild, member) values (@guild, @member) on conflict (guild, member) do update set guild = @guild, member = @member returning *",
|
|
new {guild, member});
|
|
}
|
|
} |