using SQLite; using System.Collections; namespace ServiceLib.Common { public sealed class SQLiteHelper { private static readonly Lazy _instance = new(() => new()); public static SQLiteHelper Instance => _instance.Value; private string _connstr; private SQLiteConnection _db; private SQLiteAsyncConnection _dbAsync; private static readonly object objLock = new(); public 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 int Insert(object model) { return _db.Insert(model); } public int InsertAll(IEnumerable models) { lock (objLock) { return _db.InsertAll(models); } } public async Task InsertAsync(object model) { return await _dbAsync.InsertAsync(model); } public int Replace(object model) { lock (objLock) { return _db.InsertOrReplace(model); } } public async Task ReplaceAsync(object model) { return await _dbAsync.InsertOrReplaceAsync(model); } public int Update(object model) { lock (objLock) { return _db.Update(model); } } public async Task UpdateAsync(object model) { return await _dbAsync.UpdateAsync(model); } public int UpdateAll(IEnumerable models) { lock (objLock) { return _db.UpdateAll(models); } } public int Delete(object model) { lock (objLock) { return _db.Delete(model); } } public async Task DeleteAsync(object model) { return await _dbAsync.DeleteAsync(model); } public List Query(string sql) where T : new() { return _db.Query(sql); } public async Task> QueryAsync(string sql) where T : new() { return await _dbAsync.QueryAsync(sql); } public int Execute(string sql) { return _db.Execute(sql); } public async Task ExecuteAsync(string sql) { return await _dbAsync.ExecuteAsync(sql); } public TableQuery Table() where T : new() { return _db.Table(); } public AsyncTableQuery TableAsync() where T : new() { return _dbAsync.Table(); } } }