fix: more refactorings for cleaning code
This commit is contained in:
49
lib/bds/ai/chat_tool_query_helpers.ex
Normal file
49
lib/bds/ai/chat_tool_query_helpers.ex
Normal file
@@ -0,0 +1,49 @@
|
||||
defmodule BDS.AI.ChatToolQueryHelpers do
|
||||
@moduledoc false
|
||||
|
||||
alias BDS.Search
|
||||
|
||||
def normalize_limit(value) when is_integer(value) and value > 0 and value <= 50, do: value
|
||||
def normalize_limit(_value), do: 10
|
||||
|
||||
def normalize_offset(value) when is_integer(value) and value >= 0, do: value
|
||||
def normalize_offset(_value), do: 0
|
||||
|
||||
def search_filters(arguments) do
|
||||
%{}
|
||||
|> BDS.MapUtils.maybe_put(:category, BDS.MapUtils.blank_to_nil(arguments["category"]))
|
||||
|> BDS.MapUtils.maybe_put(:tags, BDS.MapUtils.blank_to_nil(arguments["tags"]))
|
||||
|> BDS.MapUtils.maybe_put(:language, BDS.MapUtils.blank_to_nil(arguments["language"]))
|
||||
|> BDS.MapUtils.maybe_put(
|
||||
:missing_translation_language,
|
||||
BDS.MapUtils.blank_to_nil(arguments["missingTranslationLanguage"])
|
||||
)
|
||||
|> BDS.MapUtils.maybe_put(:year, arguments["year"])
|
||||
|> BDS.MapUtils.maybe_put(:month, arguments["month"])
|
||||
|> BDS.MapUtils.maybe_put(:status, BDS.BoundedAtoms.post_status(arguments["status"]))
|
||||
|> Map.put(:offset, normalize_offset(arguments["offset"]))
|
||||
|> Map.put(:limit, normalize_limit(arguments["limit"]))
|
||||
end
|
||||
|
||||
def search_all_counted_posts(project_id, arguments) do
|
||||
filters = search_filters(arguments) |> Map.put(:offset, 0) |> Map.put(:limit, 1)
|
||||
{:ok, %{total: total}} = Search.search_posts(project_id, "", filters)
|
||||
|
||||
filters = Map.put(filters, :limit, max(total, 1))
|
||||
{:ok, result} = Search.search_posts(project_id, "", filters)
|
||||
|
||||
result
|
||||
end
|
||||
|
||||
def search_result(project_id, query, filters, mapper) do
|
||||
{:ok, result} = Search.search_posts(project_id, query, filters)
|
||||
|
||||
%{
|
||||
posts: Enum.map(result.posts, mapper),
|
||||
total: result.total,
|
||||
offset: result.offset,
|
||||
limit: result.limit,
|
||||
has_more: result.offset + result.limit < result.total
|
||||
}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user