using System.Collections; using SQLite; namespace ServiceLib.Common; public sealed class SQLiteHelper { private static readonly Lazy _instance = new(() => new()); public static SQLiteHelper Instance => _instance.Value; private readonly string _connstr; private SQLiteConnection _db; private SQLiteAsyncConnection _dbAsync; private readonly string _configDB = "guiNDB.db"; public SQLiteHelper() { _connstr = Utils.GetConfigPath(_configDB); _db = new SQLiteConnection(_connstr, false); _dbAsync = new SQLiteAsyncConnection(_connstr, false); } public CreateTableResult CreateTable() { return _db.CreateTable(); } public async Task InsertAllAsync(IEnumerable models) { return await _dbAsync.InsertAllAsync(models); } public async Task InsertAsync(object model) { return await _dbAsync.InsertAsync(model); } public async Task ReplaceAsync(object model) { return await _dbAsync.InsertOrReplaceAsync(model); } public async Task UpdateAsync(object model) { return await _dbAsync.UpdateAsync(model); } public async Task UpdateAllAsync(IEnumerable models) { return await _dbAsync.UpdateAllAsync(models); } public async Task DeleteAsync(object model) { return await _dbAsync.DeleteAsync(model); } public async Task DeleteAllAsync() { return await _dbAsync.DeleteAllAsync(); } public async Task ExecuteAsync(string sql) { return await _dbAsync.ExecuteAsync(sql); } public async Task> QueryAsync(string sql) where T : new() { return await _dbAsync.QueryAsync(sql); } public AsyncTableQuery TableAsync() where T : new() { return _dbAsync.Table(); } public async Task DisposeDbConnectionAsync() { await Task.Factory.StartNew(() => { _db?.Close(); _db?.Dispose(); _db = null; _dbAsync?.GetConnection()?.Close(); _dbAsync?.GetConnection()?.Dispose(); _dbAsync = null; }); } }