diff --git a/AideDeJeu/AideDeJeu.Android/NativeAPI.cs b/AideDeJeu/AideDeJeu.Android/NativeAPI.cs index 6941b0be..5ad1c48a 100644 --- a/AideDeJeu/AideDeJeu.Android/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.Android/NativeAPI.cs @@ -34,12 +34,12 @@ namespace AideDeJeu.Droid //string dbPath = Path.Combine(path, databaseName); //return dbPath; var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); - var path = Path.Combine(documentsDirectoryPath, databaseName); + var path = Path.Combine(documentsDirectoryPath, $"{databaseName}.db"); // This is where we copy in our pre-created database if (!File.Exists(path)) { - using (var inStream = Android.App.Application.Context.Assets.Open(databaseName)) + using (var inStream = Android.App.Application.Context.Assets.Open($"{databaseName}.db")) { using (var outStream = new FileStream(path, FileMode.Create)) { diff --git a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs index 44a92701..da78d701 100644 --- a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs @@ -26,12 +26,12 @@ namespace AideDeJeu.UWP public async Task GetDatabasePathAsync(string databaseName) { var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path; - var path = Path.Combine(documentsDirectoryPath, databaseName); + var path = Path.Combine(documentsDirectoryPath, $"{databaseName}.db"); if (!File.Exists(path)) { var assembly = typeof(Version_UWP).GetTypeInfo().Assembly; - using (var inStream = assembly.GetManifestResourceStream("AideDeJeu.UWP." + databaseName)) + using (var inStream = assembly.GetManifestResourceStream($"AideDeJeu.UWP.{databaseName}.db")) { using (var outStream = new FileStream(path, FileMode.Create)) { diff --git a/AideDeJeu/AideDeJeu.iOS/NativeAPI.cs b/AideDeJeu/AideDeJeu.iOS/NativeAPI.cs index ea0db5e1..a604d0e3 100644 --- a/AideDeJeu/AideDeJeu.iOS/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.iOS/NativeAPI.cs @@ -25,7 +25,7 @@ namespace AideDeJeu.Droid public async Task GetDatabasePathAsync(string databaseName) { - return NSBundle.MainBundle.PathForResource("library", "db"); + return NSBundle.MainBundle.PathForResource(databaseName, "db"); //var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Library", databaseName); //return databasePath; } diff --git a/AideDeJeu/AideDeJeu/Models/Item.cs b/AideDeJeu/AideDeJeu/Models/Item.cs index f130fb7b..080da517 100644 --- a/AideDeJeu/AideDeJeu/Models/Item.cs +++ b/AideDeJeu/AideDeJeu/Models/Item.cs @@ -1,4 +1,5 @@ using AideDeJeu.ViewModels; +using SQLite; using System; using System.Collections; using System.Collections.Generic; @@ -99,8 +100,12 @@ namespace AideDeJeuLib //} [DataMember] + [PrimaryKey] public virtual string Id { get; set; } [DataMember] + [Indexed] + public string RootId { get; set; } + [DataMember] public string Name { get; set; } [DataMember] public int NameLevel { get; set; } diff --git a/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs index 5c2b02fc..7893ff50 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs @@ -62,15 +62,26 @@ namespace AideDeJeu.ViewModels using (var context = await StoreViewModel.GetLibraryContextAsync()) { var primary = await context.Items. - Where(item => item.Name.Contains(searchText)). + Where(item => EF.Functions.Like(item.Name, $"%{searchText}%")). Select(item => new SearchedItem() { Item = item, Preview = item.Name }). ToListAsync(); var secondary = await context.Items. - Where(item => item.Markdown.Contains(searchText)). + Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")). Select(item => new SearchedItem() { Item = item, Preview = GetPreview(item.Markdown, searchText) }).ToListAsync(); + //var primary = await context.Items. + // Where(item => item.Name.Contains(searchText)). + // Select(item => new SearchedItem() { Item = item, Preview = item.Name }). + // ToListAsync(); + //var secondary = await context.Items. + // Where(item => item.Markdown.Contains(searchText)). + // Select(item => new SearchedItem() + // { + // Item = item, + // Preview = GetPreview(item.Markdown, searchText) + // }).ToListAsync(); primary.AddRange(secondary); return primary.ToList(); } diff --git a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs index 527d8578..79e7d8f0 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs @@ -357,7 +357,7 @@ namespace AideDeJeu.ViewModels { var anchors = new Dictionary(); //MakeAnchors(source, anchors, item); - item.Id = $"{source}.md"; + item.RootId = $"{source}.md"; _AllItems[source] = item; } } @@ -404,7 +404,7 @@ namespace AideDeJeu.ViewModels public static async Task GetLibraryContextAsync() { - var dbPath = await DependencyService.Get().GetDatabasePathAsync("library.db"); + var dbPath = await DependencyService.Get().GetDatabasePathAsync("library"); return new AideDeJeuContext(dbPath); } @@ -417,7 +417,7 @@ namespace AideDeJeu.ViewModels } using (var context = await GetLibraryContextAsync()) { - return await context.Items.Where(item => item.Id == id).FirstOrDefaultAsync(); + return await context.Items.Where(item => item.Id == id || item.RootId == id).FirstOrDefaultAsync(); } } diff --git a/AideDeJeu/AideDeJeuCmd/NativeAPI.cs b/AideDeJeu/AideDeJeuCmd/NativeAPI.cs index c4822b85..d355c531 100644 --- a/AideDeJeu/AideDeJeuCmd/NativeAPI.cs +++ b/AideDeJeu/AideDeJeuCmd/NativeAPI.cs @@ -25,7 +25,7 @@ namespace AideDeJeu.Cmd public async Task GetDatabasePathAsync(string databaseName) { - return Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @"..\..\..\..\..\Data\" + databaseName); + return Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), $@"..\..\..\..\..\Data\{databaseName}.db"); } } } \ No newline at end of file diff --git a/Data/library.db b/Data/library.db index ce1ec4ae..b90217f3 100644 Binary files a/Data/library.db and b/Data/library.db differ