Problema com a criação de Tópico com external_id

Olá,

  1. Criei um Tópico (usando a API REST) com o campo “external_id”.
  2. Excluí esse Tópico. Presumo que o Tópico ainda esteja no Banco de Dados, mas oculto dos usuários.
  3. Tentei criar o MESMO Tópico com o mesmo “external_id”, e recebo “External has already been taken”.

Se o Tópico é excluído do ponto de vista do usuário, então o usuário deveria poder criar um novo Tópico com os mesmos dados, mas por que isso não está acontecendo? Parece não haver como usar o mesmo “external_id”. Parece um bug.

2022/10/12 12:33:32 resp: &{Status:404 Not Found StatusCode:404 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:32 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] Vary:[Accept-Encoding] X-Content-Type-Options:[nosniff] X-Discourse-Route:[topics/show_by_external_id] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[26b86048-937c-451c-ac0c-b23dbcd3c8ca] X-Runtime:[0.013603] X-Xss-Protection:[0]] Body:0xc000183bc0 ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:true Trailer:map[] Request:0xc00030a800 TLS:0xc0000d22c0}
2022/10/12 12:33:32 req: &{Method:GET URL:https://forums.tamillinuxcommunity.org/t/external_id/7N69MKNwQAs.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:32 {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
2022/10/12 12:33:32 uploading  https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:32 {"title":"[Youtube] ஆண்ட்ராய்டுக்கான கட்டற்ற மென்பொருள் | FOSS for Android | F-Droid | Tamil","raw":"https://www.youtube.com/watch?v=7N69MKNwQAs\nஇந்த காணொளியில் F-Droid எவ்வாறு பயன்படுத்துவது? அதன் பயன் என்ன ? - என்பதை காண்போம்.\n\nகாணொளி வழங்கியவர்: \nமணிமாறன், விழுப்புரம் கட்டற்ற மென்பொருள் குழுமம்\n\nF-Droid: http://fdroid.org/\n\n#fdroid #fossforandroid #tamil #android #vglug","category":3,"external_id":"7N69MKNwQAs"}

2022/10/12 12:33:33 failed to create Topic: https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:33 err: <nil>
2022/10/12 12:33:33 resp: &{Status:422 Unprocessable Entity StatusCode:422 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Cache-Control:[no-cache, no-store] Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:33 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] X-Content-Type-Options:[nosniff] X-Discourse-Route:[posts/create] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[217f7585-269a-48b3-ac5e-215e02e76bdb] X-Runtime:[0.060606] X-Xss-Protection:[0]] Body:{cs:0xc00032c180} ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:false Trailer:map[] Request:0xc000352100 TLS:0xc0000d22c0}
2022/10/12 12:33:33 req: &{Method:POST URL:https://forums.tamillinuxcommunity.org/posts.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u] Content-Type:[application/json]] Body:0xc0005b0228 GetBody:0x6b0e40 ContentLength:733 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:33 {"action":"create_post","errors":["Title has already been used","External has already been taken"]}

O que aconteceria se o primeiro tópico fosse recuperado?

1 curtida

não há como desfazer a exclusão desse primeiro tópico, não vejo nenhum ícone/botão para desfazer a exclusão.

Olá Mohan. :wave:

Acho que o que @RGJ estava se referindo: isso não é um bug, já que o Discourse usa uma abordagem de “exclusão lógica” por padrão. O external_id seria usado nesse contexto, o que é intencional. :+1:

2 curtidas

O ícone para “restaurar” é este:

E também há a opção na chave de tópico:

Não existe nada assim

O ponto é que tal tópico pode ser recuperado e, nesse caso, haveria dois tópicos com o mesmo ID externo. O ID externo deve ser único, em todos os tópicos, incluindo os excluídos. Como disse @maiki, isso é por design.

1 curtida

pode ser recuperado? como? Eu também quero recuperar esse tópico, meu problema vai desaparecer. mas não há como recuperar esse tópico.

Ou o discourse deveria permitir o uso do external_id que é usado em um tópico excluído ou deveria ter alguma forma de recuperar o tópico excluído com esse external_id. Eu não vejo nenhuma dessas duas coisas.

Então, obviamente, é um bug.

As postagens acima da minha indicam claramente que os tópicos podem ser restaurados. O fato de você parecer incapaz de restaurar este tópico específico não significa que seja um bug, seria uma questão de permissões ou configurações.

Você é administrador do fórum?

A propósito, por favor, pare de classificar isso como Bug.

1 curtida

Devo classificar isso como um bug?

Não, você não deve.
Por favor, use o modo de segurança e veja se consegue fazer isso. Se não conseguir, diga-nos em grande detalhe o que você vê em vez disso. Capturas de tela ajudarão.

Me avisem se estou tentando do jeito errado

2 curtidas

O botão de restaurar está no tópico “excluído”. Portanto, você precisa visualizá-lo e restaurá-lo de lá.

Você não pode acessar o menu apropriado na lista de posts excluídos do usuário. Você tem que ir para o próprio tópico para ver a opção no menu:


@Mohan43u, isso responde à sua pergunta original sobre como o external_id é usado? :slight_smile:

Sim, mas @Mohan43u tem razão, não há como ir para lá a partir da lista de “posts excluídos”. Então, como você chega a esse tópico?

Além disso, ?status=deleted não parece mais funcionar?

Não há como ir para aquele tópico excluído, exceto pela minha página de perfil. Ele não é acessível a partir das categorias.

/latest?status=deleted funciona para mim no meu site de teste?


Ahhh, entendi agora. O vídeo definitivamente ajudou. :slight_smile: Sim, o título do tópico atualmente não aparece em tópicos excluídos dessa visualização. Isso foi levantado anteriormente, mas pode valer a pena dar uma olhada novamente. :+1:

Você poderia tentar [SeuSite]/latest?status=deleted e ver se consegue acessar o tópico a partir da lista de tópicos lá em vez disso?

E agora que encontrei o outro tópico, há também outra dica para navegar até o tópico excluído através dos seus logs de staff, se isso ajudar:

1 curtida

Fórum totalmente limpo, testes aprovados esta manhã. Quando eu desfaço a exclusão do tópico, ele aparece em latest novamente.

Boa sugestão!!
Mas seria muito bom se a postagem excluída no perfil também permitisse a navegação até ela.

1 curtida

Eu acho que o seu está oculto pela CTA do banner do tópico de boas-vindas. Você poderia tentar ocultá-lo no seu console e ver se o tópico está atrás dele? (ou editar o tópico de boas-vindas para dispensar o banner :slight_smile:)

1 curtida

Você está certo!

Isso é ao mesmo tempo brilhante (sua resposta) e muito triste (o motivo).

Então, agora temos duas razões para recategorizar isso para UX

1 curtida

Muito obrigado, consegui recuperar esse tópico e meu cliente rest-api está satisfeito.

3 curtidas