Guest User

Untitled

a guest
May 24th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. def load_all_records_by_category(category_alias_link) do
  2. with %{id: category_id} <- get_changelog_category_by_alias_link(category_alias_link),
  3. versions <- load_all_versions_by_category(category_id),
  4. [%{id: last_version_id}] <- Enum.take(versions, -1),
  5. records <- load_records_by_version_in_category(category_id, last_version_id),
  6. count <- count_all_posts_in_category(category_id) do
  7.  
  8.  
  9. %{category_versions: versions, records: records, count: count}
  10. else
  11. nil -> {:error, :wrong_data}
  12. :error -> {:error, :wrong_data}
  13. end
  14. end
  15.  
  16. def load_all_records_by_category(category_alias_link, version_id) do
  17. with %{id: category_id} <- get_changelog_category_by_alias_link(category_alias_link),
  18. versions <- load_all_versions_by_category(category_id),
  19. records <- load_records_by_version_in_category(category_id, version_id),
  20. count <- count_all_posts_in_category(category_id) do
  21.  
  22.  
  23. %{category_versions: versions, records: records, count: count}
  24. else
  25. nil -> {:error, :wrong_data}
  26. :error -> {:error, :wrong_data}
  27. end
  28. end
  29.  
  30. def count_all_posts_in_category(category_id) do
  31. query = from p in ChangelogRecord,
  32. where: p.cms_changelog_category_id == ^category_id,
  33. select: %{
  34. record_count: count(p.id),
  35. }
  36. Repo.all(query)
  37. end
  38.  
  39.  
  40. def load_all_versions_by_category(category_id) do
  41. query = from p in ChangelogVersion,
  42. where: p.cms_changelog_category_id == ^category_id,
  43. select: %{
  44. title: p.title,
  45. id: p.id,
  46. }
  47. Repo.all(query)
  48. end
  49.  
  50. def load_records_by_version_in_category(category_id, version_id) do
  51. query = from p in ChangelogRecord,
  52. where: p.cms_changelog_category_id == ^category_id,
  53. where: p.cms_changelog_version_id == ^version_id,
  54. select: %{
  55. id: p.id,
  56. title: p.title,
  57. status: p.status,
  58. log_type: p.log_type,
  59. link_attachment_title: p.link_attachment_title,
  60. link_attachment_link: p.link_attachment_link,
  61. group_acl: p.group_acl,
  62. version: p.version,
  63. user_sender_id: p.user_sender_id,
  64. delete_number_line: p.delete_number_line,
  65. update_number_line: p.update_number_line,
  66. add_number_line: p.add_number_line
  67. }
  68. Repo.all(query)
  69. end
Add Comment
Please, Sign In to add comment