1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-11-01 16:05:42 +00:00

Blindage BDD

This commit is contained in:
Yan Maniez 2018-12-16 02:43:21 +01:00
parent d5b731ef06
commit 5951e8195e
7 changed files with 212 additions and 137 deletions

View file

@ -29,10 +29,17 @@ namespace AideDeJeu.Droid
public async Task<string> GetDatabasePathAsync(string databaseName)
{
if (await CheckDatabaseVersionAsync(databaseName))
try
{
await CopyOldToNewFileAsync(databaseName, "db");
await CopyOldToNewFileAsync(databaseName, "ver");
if (await CheckDatabaseVersionAsync(databaseName))
{
await CopyOldToNewFileAsync(databaseName, "db");
await CopyOldToNewFileAsync(databaseName, "ver");
}
}
catch
{
}
return GetNewFilePath(databaseName, "db");
}

View file

@ -1,11 +1,11 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------

View file

@ -25,10 +25,17 @@ namespace AideDeJeu.UWP
public async Task<string> GetDatabasePathAsync(string databaseName)
{
if (await CheckDatabaseVersionAsync(databaseName))
try
{
await CopyOldToNewFileAsync(databaseName, "db");
await CopyOldToNewFileAsync(databaseName, "ver");
if (await CheckDatabaseVersionAsync(databaseName))
{
await CopyOldToNewFileAsync(databaseName, "db");
await CopyOldToNewFileAsync(databaseName, "ver");
}
}
catch
{
}
return GetNewFilePath(databaseName, "db");
}

View file

@ -59,62 +59,70 @@ namespace AideDeJeu.ViewModels
public async Task<IEnumerable<SearchedItem>> DeepSearchAllItemsAsync(string searchText)
{
using (var context = await StoreViewModel.GetLibraryContextAsync())
try
{
var primary = await context.Items.
Where(item => EF.Functions.Like(item.Name, $"%{searchText}%")).
Select(item => new SearchedItem() { Item = item, Preview = item.ParentName != null ? $"> {item.ParentName}" : "" }).
ToListAsync();
var secondary = await context.Items.
Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")).
Select(item => new SearchedItem()
{
Item = item, Preview = (item.ParentName != null ? $"> {item.ParentName} > " : "") + 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()
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
var primary = await context.Items.
Where(item => EF.Functions.Like(item.Name, $"%{searchText}%")).
Select(item => new SearchedItem() { Item = item, Preview = item.ParentName != null ? $"> {item.ParentName}" : "" }).
ToListAsync();
var secondary = await context.Items.
Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")).
Select(item => new SearchedItem()
{
Item = item,
Preview = (item.ParentName != null ? $"> {item.ParentName} > " : "") + 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();
}
//List<SearchedItem> primaryItems = new List<SearchedItem>();
//List<SearchedItem> secondaryItems = new List<SearchedItem>();
//var cleanSearchText = Tools.Helpers.RemoveDiacritics(searchText ?? string.Empty).ToLower();
//foreach (var item in Store._AllItems)
//{
// var name = item.Value.Name;
// var cleanName = Tools.Helpers.RemoveDiacritics(name).ToLower();
// if (cleanName.Contains(cleanSearchText))
// {
// Item = item,
// Preview = GetPreview(item.Markdown, searchText)
// }).ToListAsync();
primary.AddRange(secondary);
return primary.ToList();
// primaryItems.Add(new SearchedItem() { Item = item.Value, Preview = name });
// }
// else
// {
// var markdown = item.Value.Markdown;
// var cleanMarkdown = Tools.Helpers.RemoveDiacritics(markdown).ToLower();
// if (cleanMarkdown.Contains(cleanSearchText))
// {
// int position = cleanMarkdown.IndexOf(cleanSearchText);
// int startPosition = Math.Max(0, position - 30);
// int endPosition = Math.Min(markdown.Length, position + searchText.Length + 30);
// var preview = markdown.Substring(startPosition, endPosition - startPosition - 1);
// secondaryItems.Add(new SearchedItem() { Item = item.Value, Preview = preview });
// }
// }
//}
//primaryItems.AddRange(secondaryItems);
//return primaryItems;
}
catch
{
return new List<SearchedItem>();
}
//List<SearchedItem> primaryItems = new List<SearchedItem>();
//List<SearchedItem> secondaryItems = new List<SearchedItem>();
//var cleanSearchText = Tools.Helpers.RemoveDiacritics(searchText ?? string.Empty).ToLower();
//foreach (var item in Store._AllItems)
//{
// var name = item.Value.Name;
// var cleanName = Tools.Helpers.RemoveDiacritics(name).ToLower();
// if (cleanName.Contains(cleanSearchText))
// {
// primaryItems.Add(new SearchedItem() { Item = item.Value, Preview = name });
// }
// else
// {
// var markdown = item.Value.Markdown;
// var cleanMarkdown = Tools.Helpers.RemoveDiacritics(markdown).ToLower();
// if (cleanMarkdown.Contains(cleanSearchText))
// {
// int position = cleanMarkdown.IndexOf(cleanSearchText);
// int startPosition = Math.Max(0, position - 30);
// int endPosition = Math.Min(markdown.Length, position + searchText.Length + 30);
// var preview = markdown.Substring(startPosition, endPosition - startPosition - 1);
// secondaryItems.Add(new SearchedItem() { Item = item.Value, Preview = preview });
// }
// }
//}
//primaryItems.AddRange(secondaryItems);
//return primaryItems;
}

View file

@ -317,19 +317,26 @@ namespace AideDeJeu.ViewModels
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
using (var context = await StoreViewModel.GetLibraryContextAsync())
try
{
return context.SpellsVO.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.SpellsVO.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}
catch
{
return new List<Item>();
}
}
@ -397,19 +404,26 @@ namespace AideDeJeu.ViewModels
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
using (var context = await StoreViewModel.GetLibraryContextAsync())
try
{
return context.SpellsHD.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.SpellsHD.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}
catch
{
return new List<Item>();
}
}
@ -658,22 +672,28 @@ namespace AideDeJeu.ViewModels
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested();
using (var context = await StoreViewModel.GetLibraryContextAsync())
try
{
return context.MonstersVO.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToList();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.MonstersVO.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToList();
}
}
catch
{
return new List<Item>();
}
}
public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>()
@ -774,22 +794,28 @@ namespace AideDeJeu.ViewModels
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested();
using (var context = await StoreViewModel.GetLibraryContextAsync())
try
{
return context.MonstersHD.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToList();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.MonstersHD.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToList();
}
}
catch
{
return new List<Item>();
}
}
public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>()
{
@ -907,18 +933,25 @@ namespace AideDeJeu.ViewModels
var minPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPrice).SelectedKey ?? "0 pc";
var maxPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPrice).SelectedKey ?? "1 000 000 po";
using (var context = await GetLibraryContextAsync())
try
{
return context.Equipments.Where(equipment =>
equipment.Type.ToLower().Contains(type.ToLower()) &&
priceComparer.Compare(equipment.Price, minPrice) >= 0 &&
priceComparer.Compare(equipment.Price, maxPrice) <= 0 &&
(
(Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(eq => eq.Name)
.ToList();
using (var context = await GetLibraryContextAsync())
{
return context.Equipments.Where(equipment =>
equipment.Type.ToLower().Contains(type.ToLower()) &&
priceComparer.Compare(equipment.Price, minPrice) >= 0 &&
priceComparer.Compare(equipment.Price, maxPrice) <= 0 &&
(
(Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(eq => eq.Name)
.ToList();
}
}
catch
{
return new List<Item>();
}
}
@ -1007,14 +1040,21 @@ namespace AideDeJeu.ViewModels
var rarity = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Rarity).SelectedKey ?? "";
var attunement = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Attunement).SelectedKey ?? "";
using (var context = await GetLibraryContextAsync())
try
{
return context.MagicItems.Where(magicitem =>
MatchContains(magicitem.Type, type) &&
MatchContains(magicitem.Rarity, rarity) &&
MatchContains(magicitem.Attunement, attunement) &&
MatchSearch(magicitem)
).OrderBy(eq => eq.Name).ToList();
using (var context = await GetLibraryContextAsync())
{
return context.MagicItems.Where(magicitem =>
MatchContains(magicitem.Type, type) &&
MatchContains(magicitem.Rarity, rarity) &&
MatchContains(magicitem.Attunement, attunement) &&
MatchSearch(magicitem)
).OrderBy(eq => eq.Name).ToList();
}
}
catch
{
return new List<Item>();
}
}

View file

@ -418,9 +418,16 @@ namespace AideDeJeu.ViewModels
{
id += $"#{anchor}";
}
using (var context = await GetLibraryContextAsync())
try
{
return await context.Items.Where(item => item.Id == id || item.RootId == id).FirstOrDefaultAsync();
using (var context = await GetLibraryContextAsync())
{
return await context.Items.Where(item => item.Id == id || item.RootId == id).FirstOrDefaultAsync();
}
}
catch
{
return null;
}
}

View file

@ -62,9 +62,15 @@ namespace AideDeJeu.Views
async Task InitDBEngineAsync()
{
await Task.Delay(1000).ConfigureAwait(false);
using (var context = await StoreViewModel.GetLibraryContextAsync().ConfigureAwait(false))
try
{
using (var context = await StoreViewModel.GetLibraryContextAsync().ConfigureAwait(false))
{
var item = context.Items.FirstOrDefault();
}
}
catch
{
var item = context.Items.FirstOrDefault();
}
}