From 3285265e4d0db035f7062cbf23f43e6ff93429cb Mon Sep 17 00:00:00 2001 From: KKlochko Date: Thu, 10 Apr 2025 19:04:14 +0300 Subject: [PATCH] Update to sync newer resources from a datetime. --- .../sync/sync_tasks/sync_authors_task.ex | 4 ++-- .../sync/sync_tasks/sync_books_task.ex | 4 ++-- .../sync/sync_tasks/sync_publishers_task.ex | 4 ++-- .../sync/sync_tasks/sync_server_task.ex | 19 +++++++++++++++---- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/decentralised_book_index/sync/sync_tasks/sync_authors_task.ex b/lib/decentralised_book_index/sync/sync_tasks/sync_authors_task.ex index f814a9c..d8c1b20 100644 --- a/lib/decentralised_book_index/sync/sync_tasks/sync_authors_task.ex +++ b/lib/decentralised_book_index/sync/sync_tasks/sync_authors_task.ex @@ -7,8 +7,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncAuthorsTask do require Logger - def sync(%DBIServer{} = server) do - url = "#{server.url}/api/v1/json/authors" + def sync(%DBIServer{} = server, url_params \\ "") do + url = "#{server.url}/api/v1/json/authors#{url_params}" FetchJsons.get(url, sync_author_closure(server)) server diff --git a/lib/decentralised_book_index/sync/sync_tasks/sync_books_task.ex b/lib/decentralised_book_index/sync/sync_tasks/sync_books_task.ex index 86a30df..bbb7f1b 100644 --- a/lib/decentralised_book_index/sync/sync_tasks/sync_books_task.ex +++ b/lib/decentralised_book_index/sync/sync_tasks/sync_books_task.ex @@ -9,8 +9,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncBooksTask do require Logger - def sync(%DBIServer{} = server) do - url = "#{server.url}/api/v1/json/books" + def sync(%DBIServer{} = server, url_params \\ "") do + url = "#{server.url}/api/v1/json/books#{url_params}" FetchJsons.get(url, sync_author_closure(server)) server diff --git a/lib/decentralised_book_index/sync/sync_tasks/sync_publishers_task.ex b/lib/decentralised_book_index/sync/sync_tasks/sync_publishers_task.ex index 9a50b22..8c81afa 100644 --- a/lib/decentralised_book_index/sync/sync_tasks/sync_publishers_task.ex +++ b/lib/decentralised_book_index/sync/sync_tasks/sync_publishers_task.ex @@ -7,8 +7,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncPublishersTask do require Logger - def sync(%DBIServer{} = server) do - url = "#{server.url}/api/v1/json/publishers" + def sync(%DBIServer{} = server, url_params \\ "") do + url = "#{server.url}/api/v1/json/publishers#{url_params}" FetchJsons.get(url, sync_closure(server)) server diff --git a/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex b/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex index eafcf44..167ed11 100644 --- a/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex +++ b/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex @@ -3,21 +3,32 @@ defmodule DecentralisedBookIndex.Sync.SyncServerTask do alias DecentralisedBookIndex.Metadata.DBIServer alias DecentralisedBookIndex.SyncTasks.SyncAuthorsTask + alias DecentralisedBookIndex.SyncTasks.SyncPublishersTask + alias DecentralisedBookIndex.SyncTasks.SyncBooksTask - def sync_all() do + def sync_all(last_sync_datetime \\ nil) do {:ok, servers} = Metadata.list_dbi_server() + params = params(last_sync_datetime) + for server <- servers do - sync_one(server) + sync_one(server, params) end :ok end - def sync_one(%DBIServer{} = server) do + def sync_one(%DBIServer{} = server, url_params \\ "") do server - |> SyncAuthorsTask.sync() + |> SyncAuthorsTask.sync(url_params) + |> SyncPublishersTask.sync(url_params) + |> SyncBooksTask.sync(url_params) :ok end + + defp params(datetime) when is_nil(datetime), do: "" + defp params(datetime) when not is_nil(datetime) do + "?filter[updated_at][gte]=#{DateTime.to_iso8601(datetime)}" + end end