我已经为某人创建了一个 Yammer 导入器,他们希望将其公开。 (嘿 @gerhard,我认为这属于你的领域。)我无法完全理解 Yammer 的受欢迎程度,以及它是否很快就会有很多人要求新的平台,或者大多数人只是期望在离开平台时丢失他们的数据。
Yammer 导出是一堆 CSV 文件,因此导入脚本使用 script/import_scripts/base/generic_database.rb。它包括导入 PM,这需要向 generic_database.rb 添加几个表。我认为为 PM 添加单独的代码比试图强制现有代码处理它们更有意义,以免破坏使用它的其他导入器(zendesk、zendesk_api 和 answerbase)。此外,附件的处理方式与 generic_database.rb 使用的脚本不同,因此我的 PM 表不按其他脚本的方式管理上传(我无法完全理解)。我还添加了一个上传表,而不是使用 generic_importer 使用的 topic_upload 和 post_upload。
def create_upload_table
@db.execute <<-SQL
CREATE TABLE IF NOT EXISTS upload (
id #{key_data_type} NOT NULL PRIMARY KEY,
user_id INTEGER,
original_filename TEXT,
filename TEXT,
description TEXT,
url TEXT
)
SQL
end
当前代码在 raw 中看到对上传的引用时会处理它们。它还将用户引用替换为 Discourse 的 @username 引用。它还处理一些奇怪的 opengraphobject,如果存在,则使用它们来生成主题标题(在我编写此脚本的转储中的大多数主题中都缺少这些标题)。
问题:
- 这是否太含糊不清,无法回答这些问题?
- 我应该创建一个 PM 来核心,还是将其包含在一个独立的存储库中(我将包含一个脚本,该脚本会将代码复制到 Discourse 源代码树中并从那里运行它)?
- 对
generic_database的添加听起来合理吗,还是我应该在我的导入脚本中添加该类,或者只是在我的脚本中包含我的附加函数并让它引用全局@db?