Class: AgentX::Cache::Database
- Inherits:
-
Object
- Object
- AgentX::Cache::Database
- Defined in:
- lib/agentx/cache.rb
Constant Summary collapse
- INSERT_SQL =
<<-SQL INSERT OR REPLACE INTO responses ( request_cache_key, request_host, request_base_url, response_code, response_headers, response_content_length, response_expires_at, response_body) VALUES (?, ?, ?, ?, ?, ?, ?, ?) SQL
- SELECT_BY_CACHE_KEY_SQL =
<<-SQL SELECT * FROM responses WHERE request_cache_key = ? SQL
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
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(<<-SQL) CREATE TABLE responses ( request_cache_key STRING PRIMARY KEY, request_host STRING, request_base_url STRING, response_code INTEGER, response_headers TEXT, response_content_length INTEGER, response_expires_at INTEGER, response_body BLOB) SQL @db.execute(<<-SQL) CREATE INDEX responses_expires_at ON responses (response_expires_at) SQL @db.execute(<<-SQL) CREATE INDEX responses_host ON responses (request_host) SQL @db end |
#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 |