誰かのために yammer インポーターを作成しましたが、公開できるようにしたいと考えています。(@gerhard さん、これはあなたの得意分野だと思います。)yammer の人気や、プラットフォームを離れるときにデータを失うことをほとんどの人が期待しているのか、それとも新しいプラットフォームを熱望する人がすぐに増えるのか、私にはよくわかりません。
yammer のエクスポートは一連の CSV ファイルなので、インポートスクリプトは script/import_scripts/base/generic_database.rb を使用します。これには PM のインポートが含まれており、generic_database.rb にいくつかのテーブルを追加する必要がありました。PM 用に別のコードを追加する方が、既存のコードを PM に対応するように強制して、それを使用する他のインポーター(zendesk、zendesk_api、および answerbase)に問題を引き起こすリスクを冒すよりも理にかなっていると思いました。また、添付ファイルの処理方法は、generic_database.rb を使用するスクリプトで必要な処理方法とは異なるため、私の PM テーブルは、他のテーブルが行っているようなアップロードを管理しません(これは私にはよくわかりませんでした)。さらに、ジェネリックインポーターが使用する 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を参照するだけにすべきですか?