From 0e7521df9fc3386340331b27076d8b6b19d214e8 Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg <maxwell@joindiaspora.com> Date: Sat, 3 Sep 2011 16:07:06 -0700 Subject: [PATCH] adding csv generator --- lib/csv_generator.rb | 69 ++++++++++++++++++++++++++++++++++ spec/lib/csv_generator_spec.rb | 19 ++++++++++ 2 files changed, 88 insertions(+) create mode 100644 lib/csv_generator.rb create mode 100644 spec/lib/csv_generator_spec.rb diff --git a/lib/csv_generator.rb b/lib/csv_generator.rb new file mode 100644 index 0000000000..de12bccf25 --- /dev/null +++ b/lib/csv_generator.rb @@ -0,0 +1,69 @@ +module CsvGenerator + + PATH = '/Users/maxwell/Sites/dump' + + def self.all_active_users + file = self.filename("all_active_users") + sql = <<SQL + SELECT email AS '%EMAIL%' + #{self.output_syntax(file)} + FROM users where username IS NOT NULL +SQL + ActiveRecord::Base.execute(sql) + end + + def self.all_inactive_invited_users + file = self.filename("all_inactive_invited_users.csv") + sql = <<SQL + SELECT invitations.identifier AS '%EMAIL%', users.invitation_token AS '%TOKEN%' + #{self.output_syntax(file)} + FROM invitations + JOIN users ON + users.id=invitations.recipient_id + WHERE users.username IS NULL + AND invitations.service='email' +SQL + ActiveRecord::Base.execute(sql) + end + + def self.waitlist + filename = File.join(Rails.root, 'config', 'mailing_list.csv') + + people = self.load_waiting_list_csv + offset = self.offset + left = people[0...offset] + right = people[offset...people.size] + + #reading from csv (get number of row we're on) - left + #reading from csv (get number of row we're on) - right + end + + def self.load_waiting_list_csv + csv= File.join(Rails.root, 'config', 'mailing_list.csv') + if RUBY_VERSION.include? "1.8" + require 'fastercsv' + people = FasterCSV.read(csv) + else + require 'csv' + people = CSV.read(csv) + end + people + end + + def self.offset + offset_filename = File.join(Rails.root, 'config', 'email_offset') + File.read(offset_filename).to_i + end + + def self.filename(name) + "#{PATH}#{Time.now.strftime("%Y-%m-%d")}-#{name}" + end + + def self.output_syntax filename + <<SQL + INTO OUTFILE '#{filename}' +FIELDS TERMINATED BY '\t' +LINES TERMINATED BY '\n' +SQL + end +end diff --git a/spec/lib/csv_generator_spec.rb b/spec/lib/csv_generator_spec.rb new file mode 100644 index 0000000000..f8068da5b6 --- /dev/null +++ b/spec/lib/csv_generator_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe CsvGenerator do + describe '.all_active_users' do + + end + + describe '.all_inactive_invited_users' do + + end + + describe '.waitlist_sent' do + + end + + describe '.waitlist_pending' do + + end +end -- GitLab