feat(db): Add Postgres to SQL connection types + Refactor matching logic

Implements pattern matching for easier identification of database types.

Adds support for Postgres alongside existing Sqlite and MySQL types, enhancing flexibility for database connections.

Updates enum to include Postgres type.
This commit is contained in:
Sakura Akeno Isayeki 2025-04-28 14:17:59 +02:00
parent f28f1bf536
commit 27fde1f9ac
No known key found for this signature in database
GPG key ID: BAB781B71FD2E7E6

View file

@ -20,6 +20,9 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Microsoft.Data.Sqlite;
using MySql.Data.MySqlClient;
using Npgsql;
namespace TShockAPI.DB namespace TShockAPI.DB
{ {
@ -143,15 +146,13 @@ namespace TShockAPI.DB
return clone; return clone;
} }
public static SqlType GetSqlType(this IDbConnection conn) public static SqlType GetSqlType(this IDbConnection conn) => conn switch
{ {
var name = conn.GetType().Name; SqliteConnection => SqlType.Sqlite,
if (name == "SqliteConnection" || name == "SQLiteConnection") MySqlConnection => SqlType.Mysql,
return SqlType.Sqlite; NpgsqlConnection => SqlType.Postgres,
if (name == "MySqlConnection") _ => SqlType.Unknown
return SqlType.Mysql; };
return SqlType.Unknown;
}
private static readonly Dictionary<Type, Func<IDataReader, int, object>> ReadFuncs = new Dictionary private static readonly Dictionary<Type, Func<IDataReader, int, object>> ReadFuncs = new Dictionary
<Type, Func<IDataReader, int, object>> <Type, Func<IDataReader, int, object>>
@ -267,7 +268,8 @@ namespace TShockAPI.DB
{ {
Unknown, Unknown,
Sqlite, Sqlite,
Mysql Mysql,
Postgres
} }
public class QueryResult : IDisposable public class QueryResult : IDisposable