scieloorg / kernel

É o componente central da nova arquitetura de sistemas de informação da Metodologia SciELO, ainda em fase de desenvolvimento.
https://docs.google.com/document/d/14YBl7--4ouaWBQhxzUYWRuhmegwnSYrDgupsED6rhvM/edit?usp=sharing
BSD 2-Clause "Simplified" License
6 stars 11 forks source link

Adequa a interface RESTful para usar a nova estrutura de itens ao relacionar entidades #180

Closed joffilyfe closed 5 years ago

joffilyfe commented 5 years ago

O que esse PR faz?

Este pull request finaliza as modificações relacionadas a lista de itens dos bundles. O relacionamento entre Journal -> Issue e Issue -> Document passa a receber itens na estrutura de dicionários e sempre exige a chave id.

Onde a revisão poderia começar?

Como este poderia ser testado manualmente?

A sugestão para testar este PR é utilizar todos os endpoints expostos pelo Kernel e que em algum nível possam enfrentar problemas pelas modificações:

Alguns comandos para ajudar:

# DOCUMENTS

# Crie um documento
curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347 -d '{"data": "https://raw.githubusercontent.com/scieloorg/packtools/master/tests/samples/0034-8910-rsp-48-2-0347.xml", "assets": [{"asset_id":"0034-8910-rsp-48-2-0347-gf01", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf01.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf01-en", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf01-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf02", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf02.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf02-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf02-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf03", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf03.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf03-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf03-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf04", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf04.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf04-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf04-en.jpg"}]}'

# Acesse o documento
curl -X GET -H 'Accept: text/xml' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347 -v | more

# Acesse o manifest e o front
curl -X GET -H 'Accept: application/json' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347/manifest -v | more

curl -X GET -H 'Accept: application/json' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347/front -v | more

# BUNDLES

# Crie um bundle
curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/bundles/0066-782X-1999-v72-n0 -d '{"titles": [{"language": "pt", "value": "Bundle exemplo"}], "volume": "v1"}'

# Acesse o bundle
curl -X GET -H 'Accept: application/json' http://0.0.0.0:6543/bundles/0066-782X-1999-v72-n0 -v | more

# Relacione o documento com o bundle
curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/bundles/0066-782X-1999-v72-n0/documents -d '[{"id": "0034-8910-rsp-48-2-0347", "order": "01"}, {"id": "0034-8910-rsp-48-2-0348", "order": "02"}]' -v

# Verifique se o relacionamento foi realizado
curl -X GET -H 'Accept: application/json' http://0.0.0.0:6543/bundles/0066-782X-1999-v72-n0 -v

# JOURNALS

# Crie um journal
curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/journals/0066-782XX -d '{"title": "Exemplo de journal"}'

# Relacione com um bundle criado
curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/journals/0066-782XX/issues -d '[{"id": "0066-782X-1999-v72-n0", "ns": ["2019", "v1"]}]' -v

# Acesse o journal e verifique o relacionamwento
curl -X GET -H 'Accept: application/json' http://0.0.0.0:6543/journals/0066-782XX -v

# Tente alterar UM relacionamento e perceba que não é possível via PATCH
curl -X PATCH -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/journals/0066-782XX/issues -d '{"issue": {"id": "0066-782X-1999-v72-n0", "ns": ["2019", "v2"]}}'

# Adicione uma relacionamento em uma posição específica via PATCH
curl -X PATCH -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/journals/0066-782XX/issues -d '{"issue": {"id": "nova-issue-2", "ns": ["2019", "v1"]}, "index": 0}'

# Remova um relacionamento
curl -X DELETE -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/journals/0066-782XX/issues -d '{"issue": "nova-issue"}'

Algum cenário de contexto que queira dar?

N/A

Screenshots

N/A

Quais são tickets relevantes?

closes #173 #174

Referências

N/A