Ich habe einen Yammer-Importer für jemanden erstellt und sie möchten, dass er öffentlich verfügbar ist. (Hallo @gerhard, ich glaube, das ist etwas für dich.) Ich kann die Popularität von Yammer nicht ganz nachvollziehen und/oder ob es etwas ist, für das bald viele Leute nach einer neuen Plattform verlangen werden, oder ob die meisten dieser Leute einfach erwarten, ihre Daten zu verlieren, wenn sie die Plattform verlassen.
Der Yammer-Export besteht aus einer Reihe von CSV-Dateien, daher verwendet das Importskript script/import_scripts/base/generic_database.rb. Es beinhaltet den Import von PMs, was die Hinzufügung einiger Tabellen zu generic_database.rb erforderte. Ich dachte, es wäre sinnvoller, separaten Code für PMs hinzuzufügen, als zu versuchen, den vorhandenen Code dafür anzupassen und zu riskieren, ihn für die anderen Importer, die ihn verwenden (zendesk, zendesk_api und answerbase), zu beschädigen. Auch Anhänge werden anders behandelt, als sie es in den Skripten, die generic_database.rb verwenden, tun müssen, daher verwalten meine PM-Tabellen keine Uploads so, wie es die anderen tun (was ich nicht ganz nachvollziehen konnte). Ich habe auch eine Upload-Tabelle hinzugefügt, anstatt topic_upload und post_upload zu verwenden, wie es der generische Importer tut.
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
Der aktuelle Code verarbeitet Uploads, wenn er Referenzen darauf in raw sieht. Er ersetzt auch Benutzerreferenzen durch Discourse-@username-Referenzen. Er verarbeitet auch einige bizarre opengraphobject und verwendet diese, falls vorhanden, um Topic-Titel zu generieren (die in den meisten Topics des Dumps, für den ich dies geschrieben habe, fehlen).
Fragen:
- Ist das zu viel Beschönigung, um diese Fragen beantworten zu können?
- Soll ich eine PM an das Kernteam erstellen oder dies als eigenständiges Repository einbinden (ich werde ein Skript beifügen, das den Code in den Discourse-Quellcode kopiert und von dort ausführt)?
- Sind die Ergänzungen zu
generic_databasevernünftig, oder sollte ich versuchen, diese Klasse in meinem Importskript zu ergänzen, oder einfach meine zusätzlichen Funktionen in meinem eigenen Skript belassen und es nur auf die globale@dbverweisen lassen?