Add the sync server task.
continuous-integration/drone/push Build is passing Details

dev
KKlochko 3 months ago
parent b8a7ac9a48
commit 1b27b07268

@ -62,7 +62,13 @@ defmodule DecentralisedBookIndex.Metadata do
define :destroy_author, action: :destroy define :destroy_author, action: :destroy
end end
resource DecentralisedBookIndex.Metadata.DBIServer resource DecentralisedBookIndex.Metadata.DBIServer do
define :create_dbi_server, action: :create
define :list_dbi_server, action: :read
define :get_dbi_server_by_id, args: [:id], action: :by_id
define :update_dbi_server, action: :update
define :destroy_dbi_server, action: :destroy
end
resource DecentralisedBookIndex.Metadata.AuthorAliasRegistry do resource DecentralisedBookIndex.Metadata.AuthorAliasRegistry do
define :create_author_alias_registry, action: :create define :create_author_alias_registry, action: :create

@ -23,6 +23,12 @@ defmodule DecentralisedBookIndex.Metadata.DBIServer do
primary? true primary? true
accept [:name, :url] accept [:name, :url]
end end
read :by_id do
argument :id, :uuid, allow_nil?: false
get? true
filter expr(id == ^arg(:id))
end
end end
attributes do attributes do

@ -0,0 +1,23 @@
defmodule DecentralisedBookIndex.Sync.SyncServerTask do
alias DecentralisedBookIndex.Metadata
alias DecentralisedBookIndex.Metadata.DBIServer
alias DecentralisedBookIndex.SyncTasks.SyncAuthorsTask
def sync_all() do
{:ok, servers} = Metadata.list_dbi_server()
for server <- servers do
sync_one(server)
end
:ok
end
def sync_one(%DBIServer{} = server) do
server
|> SyncAuthorsTask.sync()
:ok
end
end

@ -0,0 +1,31 @@
defmodule DecentralisedBookIndex.Sync.SyncServerTaskTest do
use DecentralisedBookIndex.DataCase
alias DecentralisedBookIndex.Sync.SyncServerTask
alias DecentralisedBookIndex.Sync.ApiClients.FetchJson
alias DecentralisedBookIndex.Sync.AuthorSync
alias DecentralisedBookIndex.Metadata
alias DecentralisedBookIndex.TestEndpoints
@test_server_endpoint TestEndpoints.test_api_endpoint()
describe "sync all" do
test "servers" do
server = generate(dbi_server(url: @test_server_endpoint))
{:ok, author} = Metadata.create_author("Author", "An description")
assert server = SyncServerTask.sync_all()
end
end
describe "sync one" do
test "server" do
server = generate(dbi_server(url: @test_server_endpoint))
{:ok, author} = Metadata.create_author("Author", "An description")
assert server = SyncServerTask.sync_one(server)
end
end
end
Loading…
Cancel
Save