He creado un importador de Yammer para alguien y le gustaría que estuviera disponible públicamente. (Oye @gerhard, creo que esto es lo tuyo). No entiendo del todo la popularidad de Yammer y/o si es algo que pronto tendrá mucha gente pidiendo una nueva plataforma o si la mayoría de esas personas simplemente esperan perder sus datos cuando abandonan la plataforma.
La exportación de Yammer es un montón de archivos CSV, por lo que el script de importación utiliza script/import_scripts/base/generic_database.rb. Incluye la importación de mensajes privados (PM), lo que requirió agregar un par de tablas a generic_database.rb. Pensé que tenía más sentido agregar código separado para los PM que intentar forzar el código existente para manejarlos y arriesgarme a romperlo para los otros importadores que lo utilizan (zendesk, zendesk_api y answerbase). Además, los archivos adjuntos se manejan de manera diferente a como deben hacerlo en los scripts que utilizan generic_database.rb, por lo que mis tablas de PM no gestionan las cargas de la forma en que lo hacen los otros (lo cual no pude entender del todo). También agregué una tabla de cargas en lugar de usar topic_upload y post_upload como lo hace el importador genérico.
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
El código actual procesa las cargas cuando ve referencias a ellas en raw. También reemplaza las referencias a usuarios con referencias de Discourse @username. También maneja algunos opengraphobject extraños y los utiliza, si existen, para generar títulos de temas (que faltan en la mayoría de los temas en el volcado para el que escribí esto).
Preguntas:
- ¿Es esto demasiado simplificado para poder responder a estas preguntas?
- ¿Debo crear un PM para el núcleo, o simplemente incluir esto como un repositorio independiente (incluiré un script que copiará el código en el árbol de origen de Discourse y lo ejecutará desde allí)?
- ¿Las adiciones a
generic_databaseparecen razonables o debería ingeniármelas para agregarlas a esa clase en mi script de importación o simplemente incluir mis funciones adicionales en mi propio script y hacer que solo haga referencia al@dbglobal?