This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user