The discussion revolves around issues with import scripts in a custom forum. Matias_Hernandez is having trouble relating topics and posts using the create_posts method. gerhard suggests rewriting the function, pointing out that the topic_lookup_from_imported_post_id() method returns a hash, and provides a revised code snippet.
paultaylor is experiencing a separate issue, trying to create topics owned by a particular user rather than the admin user running the script. They reference a related discussion, and ask for clarification on how to pass the user ID to the API, specifically whether to use the id column or the username column of the users table.
I’m writing an import script for a custom forum.
The importing of categories and users works good, but the script (using the create_posts method) is not able to build the relation between the topic and the replies.
The relevant code
//Topics
create_posts(threads, total: total) do |t|
source_user_id = @usernamesMap[t["username"]]
{
id: t["id"],
user_id: user_id_from_imported_user_id(source_user_id) || Discourse::SYSTEM_USER_ID,
raw: t["Thread_Description"],
created_at: t["created_at"],
posts_count: t["count"],
category: category_id_from_imported_category_id(t["Topic_ID"]),
title: t["title"]
}
end
// Replies
create_posts(posts, total: total) do |t|
next unless topic = topic_lookup_from_imported_post_id(t["Thread_ID"])
source_user_id = @usernamesMap[t["username"]]
opts = {
id: t['id'],
user_id: user_id_from_imported_user_id(source_user_id) || Discourse::SYSTEM_USER_ID,
raw: t["Post_Description"],
created_at: t["created_at"],
title: t["title"],
topic_id: topic_lookup_from_imported_post_id(t["Thread_ID"]), //This is not working correctly
reply_to_post_number: topic_lookup_from_imported_post_id(t["Thread_ID"])
}
end
Tentando descobrir como criar um tópico que pertença a um usuário específico, em vez do adminuser que está executando o script.
Pelo seu post, parece que basta passar o user_id para a API, embora não esteja documentado, mas não parece funcionar para mim. É esse o caso e, se for, o user_id é a coluna id da tabela users ou a coluna username?