|
|
|
@ -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
|
|
|
|
|