issue fix

This commit is contained in:
2022-03-11 17:16:49 +08:00
parent 5ec4119025
commit 28897c96ea
11 changed files with 66 additions and 74 deletions

View File

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Billing.Models;
using SQLite;
@ -31,35 +30,35 @@ namespace Billing.Store
await database.InsertAllAsync(new List<Category>
{
// sample categories
new() { Id = 1, Name = Resource.Clothing, Icon = "clothes" },
new() { Id = 2, Name = Resource.Food, Icon = "food" },
new() { Id = 4, Name = Resource.Daily, Icon = "daily" },
new() { Id = 5, Name = Resource.Trans, Icon = "trans" },
new() { Id = 6, Name = Resource.Entertainment, Icon = "face" },
new() { Id = 7, Name = Resource.Learn, Icon = "learn" },
new() { Id = 8, Name = Resource.Medical, Icon = "medical" },
new() { Id = 9, Name = Resource.OtherSpending, Icon = "plus" },
new() { Name = Resource.Clothing, Icon = "clothes" },
new() { Name = Resource.Food, Icon = "food" },
new() { Name = Resource.Daily, Icon = "daily" },
new() { Name = Resource.Trans, Icon = "trans" },
new() { Name = Resource.Entertainment, Icon = "face" },
new() { Name = Resource.Learn, Icon = "learn" },
new() { Name = Resource.Medical, Icon = "medical" },
new() { Name = Resource.OtherSpending, Icon = "plus" },
new() { Id = 10, Type = CategoryType.Income, Name = Resource.Earnings, Icon = "#brand#btc" },
new() { Id = 20, Type = CategoryType.Income, Name = Resource.OtherIncome, Icon = "plus" },
new() { Type = CategoryType.Income, Name = Resource.Earnings, Icon = "#brand#btc" },
new() { Type = CategoryType.Income, Name = Resource.OtherIncome, Icon = "plus" },
// sub-categories
new() { Id = 100, ParentId = 1, Name = Resource.Jewellery, Icon = "gem" },
new() { Id = 101, ParentId = 1, Name = Resource.Cosmetics, Icon = "makeup" },
new() { Id = 102, ParentId = 2, Name = Resource.Brunch, Icon = "brunch" },
new() { Id = 103, ParentId = 2, Name = Resource.Dinner, Icon = "dinner" },
new() { Id = 104, ParentId = 2, Name = Resource.Drinks, Icon = "drink" },
new() { Id = 105, ParentId = 2, Name = Resource.Fruit, Icon = "fruit" },
new() { Id = 106, ParentId = 4, Name = Resource.UtilityBill, Icon = "bill" },
new() { Id = 107, ParentId = 4, Name = Resource.PropertyFee, Icon = "fee" },
new() { Id = 108, ParentId = 4, Name = Resource.Rent, Icon = "rent" },
new() { Id = 109, ParentId = 4, Name = Resource.Maintenance, Icon = "maintenance" },
new() { Id = 110, ParentId = 5, Name = Resource.LightRail, Icon = "rail" },
new() { Id = 111, ParentId = 5, Name = Resource.Taxi, Icon = "taxi" },
new() { Id = 112, ParentId = 6, Name = Resource.Fitness, Icon = "fitness" },
new() { Id = 113, ParentId = 6, Name = Resource.Party, Icon = "party" },
new() { Id = 200, ParentId = 10, Type = CategoryType.Income, Name = Resource.Salary, Icon = "#brand#buffer" },
new() { Id = 201, ParentId = 10, Type = CategoryType.Income, Name = Resource.Bonus, Icon = "dollar" },
new() { ParentId = 1, Name = Resource.Jewellery, Icon = "gem" },
new() { ParentId = 1, Name = Resource.Cosmetics, Icon = "makeup" },
new() { ParentId = 2, Name = Resource.Brunch, Icon = "brunch" },
new() { ParentId = 2, Name = Resource.Dinner, Icon = "dinner" },
new() { ParentId = 2, Name = Resource.Drinks, Icon = "drink" },
new() { ParentId = 2, Name = Resource.Fruit, Icon = "fruit" },
new() { ParentId = 3, Name = Resource.UtilityBill, Icon = "bill" },
new() { ParentId = 3, Name = Resource.PropertyFee, Icon = "fee" },
new() { ParentId = 3, Name = Resource.Rent, Icon = "rent" },
new() { ParentId = 3, Name = Resource.Maintenance, Icon = "maintenance" },
new() { ParentId = 4, Name = Resource.LightRail, Icon = "rail" },
new() { ParentId = 4, Name = Resource.Taxi, Icon = "taxi" },
new() { ParentId = 5, Name = Resource.Fitness, Icon = "fitness" },
new() { ParentId = 5, Name = Resource.Party, Icon = "party" },
new() { ParentId = 9, Type = CategoryType.Income, Name = Resource.Salary, Icon = "#brand#buffer" },
new() { ParentId = 9, Type = CategoryType.Income, Name = Resource.Bonus, Icon = "dollar" },
});
}
return instance;
@ -141,8 +140,8 @@ namespace Billing.Store
var source = new TaskCompletionSource<T>();
Task.Run(async () =>
{
var list = await database.QueryAsync<T>($"SELECT * FROM [{typeof(T).Name}] WHERE [Id] = ?", id);
source.SetResult(list.FirstOrDefault());
var item = await database.FindWithQueryAsync<T>($"SELECT * FROM [{typeof(T).Name}] WHERE [Id] = ? LIMIT 1", id);
source.SetResult(item);
});
return source.Task;
}
@ -172,20 +171,20 @@ namespace Billing.Store
{
try
{
if (item.Id < 0)
if (item.Id > 0)
{
return database.InsertAsync(item);
return database.UpdateAsync(item);
}
else
{
return database.UpdateAsync(item);
return database.InsertAsync(item);
}
}
catch (Exception ex)
{
Helper.Error("db.write", $"failed to insert/update item, table: {typeof(T)}, id: {item.Id}, item: {item}, error: {ex.Message}");
}
return Task.FromResult(-1);
return Task.FromResult(0);
}
private Task<int> DeleteItemAsync<T>(T item) where T : IIdItem
@ -198,7 +197,7 @@ namespace Billing.Store
{
Helper.Error("db.delete", $"failed to delete item, table: {typeof(T)}, id: {item.Id}, item: {item}, error: {ex.Message}");
}
return Task.FromResult(-1);
return Task.FromResult(0);
}
#endregion