Several more database-y refactors
- 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???
This commit is contained in:
		@@ -1,5 +1,4 @@
 | 
			
		||||
#nullable enable
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
@@ -9,19 +8,19 @@ namespace PluralKit.Core
 | 
			
		||||
{
 | 
			
		||||
    public static class ModelQueryExt
 | 
			
		||||
    {
 | 
			
		||||
        public static Task<PKMember?> QueryMember(this IDbConnection conn, int id) =>
 | 
			
		||||
        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 IDbConnection conn, ulong guild) =>
 | 
			
		||||
        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 IDbConnection conn, ulong guild, int system) =>
 | 
			
		||||
        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 IDbConnection conn, ulong guild, int member) =>
 | 
			
		||||
            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});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user