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