using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using SQLite; using TodoList.Models; namespace TodoList.Services { public class SqliteDataService : IDataService { private readonly SQLiteAsyncConnection _database; public SqliteDataService() { var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); var folder = Path.Combine(appData, "TodoListApp"); Directory.CreateDirectory(folder); var databasePath = Path.Combine(folder, "TodoList.sqlite"); _database = new SQLiteAsyncConnection(databasePath); _database.CreateTableAsync().Wait(); } public async Task> LoadTasksAsync() { return await _database.Table().ToListAsync(); } public async Task SaveTaskAsync(TodoItem task) { await _database.InsertOrReplaceAsync(task); } public async Task SaveAllAsync(List tasks) { await _database.RunInTransactionAsync(tran => { foreach (var task in tasks) { tran.InsertOrReplace(task); } }); } public async Task DeleteTaskAsync(string id) { await _database.DeleteAsync(id); } } }