Ho creato un importatore Yammer per qualcuno e vorrebbero che fosse reso pubblicamente disponibile. (Ciao @gerhard, penso che questo sia nel tuo campo.) Non riesco a capire la popolarità di Yammer e/o se sia qualcosa che presto vedrà molte persone reclamare una nuova piattaforma o se la maggior parte di quelle persone si aspetta semplicemente di perdere i propri dati quando lasciano la piattaforma.
L’esportazione di Yammer è un insieme di file CSV, quindi lo script di importazione utilizza script/import_scripts/base/generic_database.rb. Include l’importazione di messaggi privati (PM), che ha richiesto l’aggiunta di un paio di tabelle a generic_database.rb. Ho pensato che avesse più senso aggiungere codice separato per i PM piuttosto che cercare di forzare il codice esistente per gestirli e rischiare di romperlo per gli altri importatori che lo utilizzano (zendesk, zendesk_api e answerbase). Inoltre, gli allegati vengono gestiti in modo diverso da come devono essere negli script che utilizzano generic_database.rb, quindi le mie tabelle PM non gestiscono i caricamenti nel modo in cui fanno gli altri (cosa che non sono riuscito a capire del tutto). Ho anche aggiunto una tabella di caricamento invece di utilizzare topic_upload e post_upload come fa l’importatore generico.
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
Il codice attuale elabora i caricamenti quando vi fa riferimento in raw. Sostituisce anche i riferimenti agli utenti con riferimenti @username di Discourse. Gestisce anche alcuni bizzarri opengraphobject e li utilizza, se esistono, per generare titoli di argomenti (che mancano dalla maggior parte degli argomenti nel dump per cui ho scritto questo).
Domande:
- C’è troppa superficialità in questo per poter rispondere a queste domande?
- Dovrei creare un PM per il core, o includerlo semplicemente come repository autonomo (includerò uno script che copierà il codice nell’albero sorgente di Discourse ed eseguirà da lì)?
- Le aggiunte a
generic_databasesembrano ragionevoli o dovrei trovare un modo per aggiungerle a quella classe nel mio script di importazione o semplicemente includere le mie funzioni aggiuntive nel mio script e farlo fare riferimento solo al@dbglobale?