public async Task <Ability> LoadAbilityByIdAsync(int id, int versionGroup, int language, CancellationToken token) { try { string query = Queries.AbilityQuery(id, versionGroup, language); IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false); DbAbility ability = abilities.Single(); var result = new Ability { Id = ability.Id, IngameText = ability.FlavorText, Name = ability.Name }; result.ShortDescription = await ProzessPlaceholderText(ability.ShortEffect, language, token); result.Description = await ProzessPlaceholderText(ability.Effect, language, token); result.VersionChangelog = await ProzessPlaceholderText(ability.EffectChange, language, token); return(result); } catch (Exception) { return(null); } }
async Task <string> LoadTypeNameByIdentifierAsync(string identifier, int language, CancellationToken token) { try { string query = String.Format(@" SELECT ty.id, tyn.name FROM types ty LEFT JOIN (SELECT e.type_id AS id, COALESCE(o.name, e.name) AS name FROM type_names e LEFT OUTER JOIN type_names o ON e.type_id = o.type_id AND o.local_language_id = {1} WHERE e.local_language_id = 9 GROUP BY e.type_id) AS tyn ON ty.id = tyn.id WHERE ty.identifier = '{0}' ", identifier, language); IEnumerable <DbAbility> types = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false); DbAbility type = types.Single(); return(type.Name); } catch (Exception) { return(null); } }
async Task <string> LoadAbilityNameByIdentifierAsync(string identifier, int language, CancellationToken token) { try { string query = String.Format(@" SELECT ab.id, abn.name FROM abilities ab LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name FROM ability_names e LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id AND o.local_language_id = {1} WHERE e.local_language_id = 9 GROUP BY e.ability_id) AS abn ON ab.id = abn.id WHERE ab.identifier = '{0}' ", identifier, language); IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false); DbAbility ability = abilities.Single(); return(ability.Name); } catch (Exception) { return(null); } }
public async Task <Ability> LoadAbilityByIdAsync(int id, GameVersion version, int language, CancellationToken token) { try { string query = String.Format(@" SELECT a.id, an.name, aft.flavor_text, ap.short_effect, IFNULL(acp.effect, ap.effect) AS effect FROM abilities AS a LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name FROM ability_names e LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id and o.local_language_id = {0} WHERE e.local_language_id = 9 GROUP BY e.ability_id) AS an ON a.id = an.id LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text FROM ability_flavor_text e LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id and o.language_id = {0} WHERE e.language_id = 9 GROUP BY e.ability_id) AS aft ON a.id = aft.id LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.short_effect, e.short_effect) AS short_effect, COALESCE(o.effect, e.effect) AS effect FROM ability_prose e LEFT OUTER JOIN ability_prose o ON e.ability_id = o.ability_id and o.local_language_id = {0} WHERE e.local_language_id = 9 GROUP BY e.ability_id) AS ap ON a.id = ap.id LEFT JOIN ability_changelog ac ON a.id = ac.ability_id AND ac.changed_in_version_group_id <= {1} LEFT JOIN (SELECT e.ability_changelog_id AS id, COALESCE(o.effect, e.effect) AS effect FROM ability_changelog_prose e LEFT OUTER JOIN ability_changelog_prose o ON e.ability_changelog_id = o.ability_changelog_id and o.local_language_id = {0} WHERE e.local_language_id = 9 GROUP BY e.ability_changelog_id) AS acp ON ac.id = acp.id WHERE a.id = {2} AND a.is_main_series = 1 AND a.generation_id <= {3} ", language, version.VersionGroup, id, version.Generation); IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false); DbAbility ability = abilities.FirstOrDefault(); if (ability == null) { return(null); } return(new Ability { Description = ability.ShortEffect, Effect = ability.Effect, FlavorText = ability.FlavorText, Id = ability.Id, Name = ability.Name }); } catch (Exception) { return(null); } }
public async Task <Ability> LoadAbilityAsync(int id, GameVersion version, int displayLanguage, CancellationToken token) { try { string query = "SELECT a.id, an.name, ad.short_effect, ad.effect, aft.flavor_text FROM abilities AS a\n" + "LEFT JOIN\n(SELECT def.ability_id AS id, IFNULL(curr.name, def.name) AS name FROM ability_names def\n" + "LEFT JOIN ability_names curr ON def.ability_id = curr.ability_id AND def.local_language_id = 9 AND curr.local_language_id = ?\n" + "GROUP BY def.ability_id)\nAS an ON a.id = an.id\n" + "LEFT JOIN\n(SELECT def.ability_id AS id, IFNULL(curr.short_effect, def.short_effect) AS short_effect, IFNULL(curr.effect, def.effect) AS effect FROM ability_prose def\n" + "LEFT JOIN ability_prose curr ON def.ability_id = curr.ability_id AND def.local_language_id = 9 AND curr.local_language_id = ?\n" + "GROUP BY def.ability_id)\nAS ad ON a.id = ad.id\n" + "LEFT JOIN\n(SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text, e.version_group_id FROM ability_flavor_text e\n" + "LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id and o.language_id = ?\n" + "WHERE e.language_id = 9 AND e.version_group_id = ?\n" + "GROUP BY e.ability_id)\nAS aft ON a.id = aft.id\n" + "WHERE aft.version_group_id = ? AND a.id = ?"; IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[] { displayLanguage, displayLanguage, displayLanguage, version.VersionGroup, version.VersionGroup, id }); DbAbility dbAbility = abilities.FirstOrDefault(); if (dbAbility == null) { return(null); } return(new Ability { Description = dbAbility.Effect, Effect = dbAbility.ShortEffect, FlavorText = dbAbility.FlavorText, Id = dbAbility.Id, Name = dbAbility.Name }); } catch (Exception) { return(null); } }
public async Task <Ability> LoadAbilityAsync(int id, int versionGroup, int displayLanguage, CancellationToken token) { try { string query = String.Format(@" SELECT ab.id, abn.name, abft.flavor_text, abp.short_effect, abp.effect, acp.effect_change FROM abilities AS ab LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name FROM ability_names e LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id AND o.local_language_id = {2} WHERE e.local_language_id = 9 GROUP BY e.ability_id) AS abn ON ab.id = abn.id LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text, e.version_group_id FROM ability_flavor_text e LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id AND o.language_id = {2} WHERE e.language_id = 9 AND e.version_group_id = 15 GROUP BY e.ability_id) AS abft ON ab.id = abft.id LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.short_effect, e.short_effect) AS short_effect, COALESCE(o.effect, e.effect) AS effect FROM ability_prose e LEFT OUTER JOIN ability_prose o ON e.ability_id = o.ability_id AND o.local_language_id = {2} WHERE e.local_language_id = 9 GROUP BY e.ability_id) AS abp ON ab.id = abp.id LEFT JOIN ability_changelog ac ON ab.id = ac.ability_id AND ac.changed_in_version_group_id <= {1} LEFT JOIN (SELECT e.ability_changelog_id AS id, COALESCE(o.effect, e.effect) AS effect_change FROM ability_changelog_prose e LEFT OUTER JOIN ability_changelog_prose o ON e.ability_changelog_id = o.ability_changelog_id AND o.local_language_id = {2} WHERE e.local_language_id = 9 GROUP BY e.ability_changelog_id) AS acp ON ac.id = acp.id WHERE ab.is_main_series AND ab.id = {0} ORDER BY ac.changed_in_version_group_id DESC LIMIT 1 ", id, versionGroup, displayLanguage); IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false); DbAbility ability = abilities.FirstOrDefault(); if (ability == null) { return(null); } var ab = new Ability { FlavorText = ability.FlavorText, Id = ability.Id, Name = ability.Name }; ab.Description = await ProzessAbilityText(ability.ShortEffect, displayLanguage, token); ab.Effect = await ProzessAbilityText(ability.Effect, displayLanguage, token); ab.EffectChange = await ProzessAbilityText(ability.EffectChange, displayLanguage, token); return(ab); } catch (Exception) { return(null); } }