#!/usr/bin/env ruby

require 'rubygems'
require 'twitter_search'
require 'dm-core'

unless ARGV.length == 1
$stderr.puts "Usage: #{$0} searchterm"
exit 1
end

search_term = ARGV.first

DataMapper.setup( :default, "sqlite3://#{Dir.pwd}/#{search_term}.db" )

class Tweet
include DataMapper::Resource

property :from_user, String
property :from_user_id, String
property :text, String
property :created_at, DateTime
property :profile_image_url, String
property :id, String, :key => true
end

DataMapper.auto_migrate!

def with_tweets_matching(hashtag)
client = TwitterSearch::Client.new 'search_sucker'
page = 1
begin
tweets = client.query :q => hashtag, :rpp => 100, :page => page
tweets.each do |tweet|
yield tweet
end
page = page + 1
end while tweets.size > 0
end

with_tweets_matching(search_term) do |t|
e = Tweet.new
e.attributes = {
:from_user => t.from_user,
:from_user_id => t.from_user_id,
:text => t.text,
:created_at => t.created_at,
:profile_image_url => t.profile_image_url,
:id => t.id
}
e.save
end