1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

RootId + Like

This commit is contained in:
Yan Maniez 2018-10-21 23:24:14 +02:00
parent 2230ddea79
commit 9d83e524cd
8 changed files with 27 additions and 11 deletions

View file

@ -34,12 +34,12 @@ namespace AideDeJeu.Droid
//string dbPath = Path.Combine(path, databaseName); //string dbPath = Path.Combine(path, databaseName);
//return dbPath; //return dbPath;
var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 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 // This is where we copy in our pre-created database
if (!File.Exists(path)) 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)) using (var outStream = new FileStream(path, FileMode.Create))
{ {

View file

@ -26,12 +26,12 @@ namespace AideDeJeu.UWP
public async Task<string> GetDatabasePathAsync(string databaseName) public async Task<string> GetDatabasePathAsync(string databaseName)
{ {
var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path; 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)) if (!File.Exists(path))
{ {
var assembly = typeof(Version_UWP).GetTypeInfo().Assembly; 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)) using (var outStream = new FileStream(path, FileMode.Create))
{ {

View file

@ -25,7 +25,7 @@ namespace AideDeJeu.Droid
public async Task<string> GetDatabasePathAsync(string databaseName) public async Task<string> 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); //var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Library", databaseName);
//return databasePath; //return databasePath;
} }

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using SQLite;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -99,8 +100,12 @@ namespace AideDeJeuLib
//} //}
[DataMember] [DataMember]
[PrimaryKey]
public virtual string Id { get; set; } public virtual string Id { get; set; }
[DataMember] [DataMember]
[Indexed]
public string RootId { get; set; }
[DataMember]
public string Name { get; set; } public string Name { get; set; }
[DataMember] [DataMember]
public int NameLevel { get; set; } public int NameLevel { get; set; }

View file

@ -62,15 +62,26 @@ namespace AideDeJeu.ViewModels
using (var context = await StoreViewModel.GetLibraryContextAsync()) using (var context = await StoreViewModel.GetLibraryContextAsync())
{ {
var primary = await context.Items. 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 }). Select(item => new SearchedItem() { Item = item, Preview = item.Name }).
ToListAsync(); ToListAsync();
var secondary = await context.Items. var secondary = await context.Items.
Where(item => item.Markdown.Contains(searchText)). Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")).
Select(item => new SearchedItem() Select(item => new SearchedItem()
{ {
Item = item, Preview = GetPreview(item.Markdown, searchText) Item = item, Preview = GetPreview(item.Markdown, searchText)
}).ToListAsync(); }).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); primary.AddRange(secondary);
return primary.ToList(); return primary.ToList();
} }

View file

@ -357,7 +357,7 @@ namespace AideDeJeu.ViewModels
{ {
var anchors = new Dictionary<string, Item>(); var anchors = new Dictionary<string, Item>();
//MakeAnchors(source, anchors, item); //MakeAnchors(source, anchors, item);
item.Id = $"{source}.md"; item.RootId = $"{source}.md";
_AllItems[source] = item; _AllItems[source] = item;
} }
} }
@ -404,7 +404,7 @@ namespace AideDeJeu.ViewModels
public static async Task<AideDeJeuContext> GetLibraryContextAsync() public static async Task<AideDeJeuContext> GetLibraryContextAsync()
{ {
var dbPath = await DependencyService.Get<INativeAPI>().GetDatabasePathAsync("library.db"); var dbPath = await DependencyService.Get<INativeAPI>().GetDatabasePathAsync("library");
return new AideDeJeuContext(dbPath); return new AideDeJeuContext(dbPath);
} }
@ -417,7 +417,7 @@ namespace AideDeJeu.ViewModels
} }
using (var context = await GetLibraryContextAsync()) 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();
} }
} }

View file

@ -25,7 +25,7 @@ namespace AideDeJeu.Cmd
public async Task<string> GetDatabasePathAsync(string databaseName) public async Task<string> GetDatabasePathAsync(string databaseName)
{ {
return Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @"..\..\..\..\..\Data\" + databaseName); return Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), $@"..\..\..\..\..\Data\{databaseName}.db");
} }
} }
} }

Binary file not shown.