Class: AgentX::Cache::Database
- Inherits:
-
Object
- Object
- AgentX::Cache::Database
- Defined in:
- lib/agentx/cache.rb
Constant Summary collapse
- INSERT_SQL =
" INSERT OR REPLACE INTO responses (\n request_cache_key, \n request_host, \n request_base_url,\n response_code,\n response_headers,\n response_content_length,\n response_expires_at,\n response_body) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n"- SELECT_BY_CACHE_KEY_SQL =
" SELECT * FROM responses WHERE request_cache_key = ?\n"
Instance Attribute Summary collapse
-
#filename ⇒ Object
readonly
Returns the value of attribute filename.
Instance Method Summary collapse
- #create ⇒ Object
-
#initialize(filename = File.join(AgentX.root, 'cache.sqlite3')) ⇒ Database
constructor
A new instance of Database.
- #read(cache_key) ⇒ Object
- #write(opts = {}) ⇒ Object
Constructor Details
#initialize(filename = File.join(AgentX.root, 'cache.sqlite3')) ⇒ Database
Returns a new instance of Database.
48 49 50 51 52 |
# File 'lib/agentx/cache.rb', line 48 def initialize(filename=File.join(AgentX.root, 'cache.sqlite3')) @filename = filename create end |
Instance Attribute Details
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
46 47 48 |
# File 'lib/agentx/cache.rb', line 46 def filename @filename end |
Instance Method Details
#create ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/agentx/cache.rb', line 54 def create if File.exists?(filename) return @db = SQLite3::Database.new(filename) end @db = SQLite3::Database.new(filename) @db.execute(" CREATE TABLE responses (\n request_cache_key STRING PRIMARY KEY,\n request_host STRING,\n request_base_url STRING,\n response_code INTEGER,\n response_headers TEXT,\n response_content_length INTEGER,\n response_expires_at INTEGER,\n response_body BLOB)\n SQL\n\n @db.execute(<<-SQL)\n CREATE INDEX responses_expires_at ON responses (response_expires_at)\n SQL\n\n @db.execute(<<-SQL)\n CREATE INDEX responses_host ON responses (request_host)\n SQL\n\n @db\nend\n") |
#read(cache_key) ⇒ Object
114 115 116 117 118 119 |
# File 'lib/agentx/cache.rb', line 114 def read(cache_key) @prepared_read ||= @db.prepare(SELECT_BY_CACHE_KEY_SQL) rs = @prepared_read.execute(cache_key) rs.next_hash end |
#write(opts = {}) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/agentx/cache.rb', line 96 def write(opts={}) @prepared_write ||= @db.prepare(INSERT_SQL) @prepared_write.execute( opts[:request_cache_key], opts[:request_host], opts[:request_base_url], opts[:response_code], opts[:response_headers], opts[:response_content_length], opts[:response_expires_at].to_i, opts[:response_body]) end |