diff --git a/lib/outlook/translators.ex b/lib/outlook/translators.ex index 30ebc69..732c101 100644 --- a/lib/outlook/translators.ex +++ b/lib/outlook/translators.ex @@ -48,6 +48,19 @@ defmodule Outlook.Translators do |> Repo.update_all([inc: [our_character_count: billed_characters]]) end + def get_uptodate_deepl_counts(user) do + deepl_counts = Deepl.get_usage_counts(get_deepl_auth_key(user)) + our_character_count = deepl_account_for_user(user) + |> select([:our_character_count]) + |> Repo.one() + |> Map.get(:our_character_count) + most_accurate = max(our_character_count, deepl_counts.character_count) + %{character_limit: deepl_counts.character_limit, + character_count: deepl_counts.character_count, + our_character_count: our_character_count, + percent_used: most_accurate * 100 / deepl_counts.character_limit} + end + def translate(translation, current_user) do %{language: target_lang, article: %{content: article_tree, language: source_lang} @@ -71,6 +84,14 @@ defmodule Outlook.Translators do process_translation(result.translation, tunit_ids) end + def update_deepl_counts(user, counts) do + deepl_account_for_user(user) + |> Repo.update_all([set: [ + character_limit: counts.character_limit, + character_count: counts.character_count + ]]) + end + defp deepl_account_for_user(user) when is_struct(user), do: deepl_account_for_user(user.id) defp deepl_account_for_user(user_id) do DeeplAccount |> where(user_id: ^user_id)