Update to sync newer resources from a datetime.

dev
KKlochko 3 months ago
parent cbec8fceb4
commit 3285265e4d

@ -7,8 +7,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncAuthorsTask do
require Logger require Logger
def sync(%DBIServer{} = server) do def sync(%DBIServer{} = server, url_params \\ "") do
url = "#{server.url}/api/v1/json/authors" url = "#{server.url}/api/v1/json/authors#{url_params}"
FetchJsons.get(url, sync_author_closure(server)) FetchJsons.get(url, sync_author_closure(server))
server server

@ -9,8 +9,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncBooksTask do
require Logger require Logger
def sync(%DBIServer{} = server) do def sync(%DBIServer{} = server, url_params \\ "") do
url = "#{server.url}/api/v1/json/books" url = "#{server.url}/api/v1/json/books#{url_params}"
FetchJsons.get(url, sync_author_closure(server)) FetchJsons.get(url, sync_author_closure(server))
server server

@ -7,8 +7,8 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncPublishersTask do
require Logger require Logger
def sync(%DBIServer{} = server) do def sync(%DBIServer{} = server, url_params \\ "") do
url = "#{server.url}/api/v1/json/publishers" url = "#{server.url}/api/v1/json/publishers#{url_params}"
FetchJsons.get(url, sync_closure(server)) FetchJsons.get(url, sync_closure(server))
server server

@ -3,21 +3,32 @@ defmodule DecentralisedBookIndex.Sync.SyncServerTask do
alias DecentralisedBookIndex.Metadata.DBIServer alias DecentralisedBookIndex.Metadata.DBIServer
alias DecentralisedBookIndex.SyncTasks.SyncAuthorsTask 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() {:ok, servers} = Metadata.list_dbi_server()
params = params(last_sync_datetime)
for server <- servers do for server <- servers do
sync_one(server) sync_one(server, params)
end end
:ok :ok
end end
def sync_one(%DBIServer{} = server) do def sync_one(%DBIServer{} = server, url_params \\ "") do
server server
|> SyncAuthorsTask.sync() |> SyncAuthorsTask.sync(url_params)
|> SyncPublishersTask.sync(url_params)
|> SyncBooksTask.sync(url_params)
:ok :ok
end 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 end

Loading…
Cancel
Save