Class: Robotwitter::Db

Inherits:
Object
  • Object
show all
Defined in:
lib/robotwitter/db.rb

Constant Summary collapse

TABLENAME =
'retweeted'

Instance Method Summary collapse

Constructor Details

#initialize(name, path) ⇒ Db

Returns a new instance of Db.



24
25
26
27
# File 'lib/robotwitter/db.rb', line 24

def initialize(name, path)
  create_db("#{path}/#{name}") unless exists? "#{path}/#{name}"
  @db = SQLite3::Database.new "#{path}/#{name}.db"
end

Instance Method Details

#create_db(name) ⇒ Object

create database



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/robotwitter/db.rb', line 11

def create_db(name)
  db = SQLite3::Database.new("#{name}.db")

  sql = <<-SQL
        create table #{TABLENAME} (
          id  integer PRIMARY KEY AUTOINCREMENT,
          tweet_id string
        );
        SQL

  db.execute_batch(sql)
end

#exists?(name) ⇒ Boolean

check if database exists

Returns:

  • (Boolean)


6
7
8
# File 'lib/robotwitter/db.rb', line 6

def exists?(name)
  File.exist?("#{name}.db")
end

#retweeted?(result) ⇒ Boolean

already retweeted this post

Returns:

  • (Boolean)


30
31
32
33
34
# File 'lib/robotwitter/db.rb', line 30

def retweeted? result
  sql = "select 1 from #{TABLENAME} where tweet_id = '#{result['id_str']}'"
  res = @db.get_first_row(sql)
  !res.nil?
end

#save_retweet(result) ⇒ Object

сохраняем ретвитт, чтобы не ретвиттить снова result - результат twitter.search



38
39
40
41
42
# File 'lib/robotwitter/db.rb', line 38

def save_retweet result
  id = result.attrs['id_str']
  sql = "insert into #{TABLENAME} (tweet_id) values (#{id})"
  @db.query(sql)
end