누군가를 위해 yammer 가져오기(importer)를 만들었고, 공개하기를 원합니다. (Hey @gerhard , 이건 아마 당신의 전문 분야일 것 같아요.) yammer의 인기가 왜 그런지, 그리고 곧 많은 사람들이 새로운 플랫폼을 원하게 될지, 아니면 대부분의 사람들이 플랫폼을 떠날 때 데이터가 사라지는 것을 그냥 받아들일 것인지는 정확히 파악이 안 됩니다.
yammer 내보내기(export)는 CSV 파일들의 묶음이라, 가져오기 스크립트는 script/import_scripts/base/generic_database.rb를 사용합니다. 개인 메시지(PM) 가져오기를 포함했는데, 이를 위해 generic_database.rb에 테이블 두 개를 추가해야 했습니다. 기존 코드를 억지로 PM 처리에 맞게 바꾸어 다른 가져오기 도구(zendesk, zendesk_api, answerbase)에서 사용할 때 깨질 위험을 감수하기보다는, PM을 위한 별도의 코드를 추가하는 것이 더 합리적이라고 생각했습니다. 또한 첨부 파일은 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를 참조하게 하면 될까요?