Module: Familia::Horreum::DatabaseCommands
- Included in:
- Core
- Defined in:
- lib/familia/horreum/core/database_commands.rb
Overview
Methods that call Database commands (InstanceMethods)
NOTE: There is no hgetall for Horreum. This is because Horreum is a single hash in Database that we aren’t meant to have be working on in memory for more than, making changes -> committing. To emphasize this, instead of “refreshing” the object with hgetall, just load the object again.
Instance Method Summary collapse
-
#current_expiration ⇒ Integer
Retrieves the remaining time to live (TTL) for the object’s dbkey.
-
#data_type ⇒ Object
-
#decr(field) ⇒ Object
(also: #decrement)
-
#decrby(field, decrement) ⇒ Object
(also: #decrementby)
-
#delete! ⇒ Boolean
(also: #clear)
Deletes the entire dbkey.
-
#exists?(check_size: true) ⇒ Boolean
Checks if the calling object’s key exists in Redis.
-
#expire(default_expiration = nil) ⇒ Object
Sets a timeout on key.
-
#field_count ⇒ Integer
(also: #size)
Returns the number of fields in the main object hash.
-
#hget(field) ⇒ Object
-
#hgetall ⇒ Object
(also: #all)
For parity with DataType#hgetall.
-
#hkeys ⇒ Object
-
#hmset(hsh = {}) ⇒ Object
-
#hset(field, value) ⇒ Object
The number of fields that were added to the hash.
-
#hsetnx(field, value) ⇒ Integer
Sets field in the hash stored at key to value, only if field does not yet exist.
-
#hstrlen(field) ⇒ Object
(also: #hstrlength)
-
#hvals ⇒ Object
-
#incr(field) ⇒ Object
(also: #increment)
-
#incrby(field, increment) ⇒ Object
(also: #incrementby)
-
#incrbyfloat(field, increment) ⇒ Object
(also: #incrementbyfloat)
-
#key?(field) ⇒ Boolean
(also: #has_key?)
-
#move(logical_database) ⇒ Object
-
#remove_field(field) ⇒ Integer
(also: #remove)
Removes a field from the hash stored at the dbkey.
Instance Method Details
#current_expiration ⇒ Integer
Retrieves the remaining time to live (TTL) for the object’s dbkey.
This method accesses the ovjects Database client to obtain the TTL of dbkey
.
If debugging is enabled, it logs the TTL retrieval operation using Familia.trace
.
70 71 72 73 |
# File 'lib/familia/horreum/core/database_commands.rb', line 70 def current_expiration Familia.trace :CURRENT_EXPIRATION, dbclient, uri, caller(1..1) if Familia.debug? dbclient.ttl dbkey end |
#data_type ⇒ Object
85 86 87 88 |
# File 'lib/familia/horreum/core/database_commands.rb', line 85 def data_type Familia.trace :DATATYPE, dbclient, uri, caller(1..1) if Familia.debug? dbclient.type dbkey(suffix) end |
#decr(field) ⇒ Object Also known as: decrement
157 158 159 |
# File 'lib/familia/horreum/core/database_commands.rb', line 157 def decr(field) dbclient.hdecr field end |
#decrby(field, decrement) ⇒ Object Also known as: decrementby
152 153 154 |
# File 'lib/familia/horreum/core/database_commands.rb', line 152 def decrby(field, decrement) dbclient.decrby dbkey(suffix), field, decrement end |
#delete! ⇒ Boolean Also known as: clear
Deletes the entire dbkey
174 175 176 177 178 |
# File 'lib/familia/horreum/core/database_commands.rb', line 174 def delete! Familia.trace :DELETE!, dbclient, uri, caller(1..1) if Familia.debug? ret = dbclient.del dbkey ret.positive? end |
#exists?(check_size: true) ⇒ Boolean
The default behavior maintains backward compatibility by treating empty hashes
as non-existent. Use check_size: false
for pure key existence checking.
Checks if the calling object’s key exists in Redis.
39 40 41 42 43 44 |
# File 'lib/familia/horreum/core/database_commands.rb', line 39 def exists?(check_size: true) key_exists = self.class.exists?(identifier) return key_exists unless check_size key_exists && !size.zero? end |
#expire(default_expiration = nil) ⇒ Object
Sets a timeout on key. After the timeout has expired, the key will automatically be deleted. Returns 1 if the timeout was set, 0 if key does not exist or the timeout could not be set.
57 58 59 60 61 |
# File 'lib/familia/horreum/core/database_commands.rb', line 57 def expire(default_expiration = nil) default_expiration ||= self.class.default_expiration Familia.trace :EXPIRE, dbclient, default_expiration, caller(1..1) if Familia.debug? dbclient.expire dbkey, default_expiration.to_i end |
#field_count ⇒ Integer Also known as: size
Returns the number of fields in the main object hash
48 49 50 |
# File 'lib/familia/horreum/core/database_commands.rb', line 48 def field_count dbclient.hlen dbkey end |
#hget(field) ⇒ Object
97 98 99 100 |
# File 'lib/familia/horreum/core/database_commands.rb', line 97 def hget(field) Familia.trace :HGET, dbclient, field, caller(1..1) if Familia.debug? dbclient.hget dbkey(suffix), field end |
#hgetall ⇒ Object Also known as: all
For parity with DataType#hgetall
91 92 93 94 |
# File 'lib/familia/horreum/core/database_commands.rb', line 91 def hgetall Familia.trace :HGETALL, dbclient, uri, caller(1..1) if Familia.debug? dbclient.hgetall dbkey(suffix) end |
#hkeys ⇒ Object
128 129 130 131 |
# File 'lib/familia/horreum/core/database_commands.rb', line 128 def hkeys Familia.trace :HKEYS, dbclient, 'uri', caller(1..1) if Familia.debug? dbclient.hkeys dbkey(suffix) end |
#hmset(hsh = {}) ⇒ Object
122 123 124 125 126 |
# File 'lib/familia/horreum/core/database_commands.rb', line 122 def hmset(hsh = {}) hsh ||= to_h Familia.trace :HMSET, dbclient, hsh, caller(1..1) if Familia.debug? dbclient.hmset dbkey(suffix), hsh end |
#hset(field, value) ⇒ Object
Returns The number of fields that were added to the hash. If the field already exists, this will return 0.
104 105 106 107 |
# File 'lib/familia/horreum/core/database_commands.rb', line 104 def hset(field, value) Familia.trace :HSET, dbclient, field, caller(1..1) if Familia.debug? dbclient.hset dbkey, field, value end |
#hsetnx(field, value) ⇒ Integer
Sets field in the hash stored at key to value, only if field does not yet exist. If key does not exist, a new key holding a hash is created. If field already exists, this operation has no effect.
117 118 119 120 |
# File 'lib/familia/horreum/core/database_commands.rb', line 117 def hsetnx(field, value) Familia.trace :HSETNX, dbclient, field, caller(1..1) if Familia.debug? dbclient.hsetnx dbkey, field, value end |
#hstrlen(field) ⇒ Object Also known as: hstrlength
162 163 164 |
# File 'lib/familia/horreum/core/database_commands.rb', line 162 def hstrlen(field) dbclient.hstrlen dbkey(suffix), field end |
#hvals ⇒ Object
133 134 135 |
# File 'lib/familia/horreum/core/database_commands.rb', line 133 def hvals dbclient.hvals dbkey(suffix) end |
#incr(field) ⇒ Object Also known as: increment
137 138 139 |
# File 'lib/familia/horreum/core/database_commands.rb', line 137 def incr(field) dbclient.hincrby dbkey(suffix), field, 1 end |
#incrby(field, increment) ⇒ Object Also known as: incrementby
142 143 144 |
# File 'lib/familia/horreum/core/database_commands.rb', line 142 def incrby(field, increment) dbclient.hincrby dbkey(suffix), field, increment end |
#incrbyfloat(field, increment) ⇒ Object Also known as: incrementbyfloat
147 148 149 |
# File 'lib/familia/horreum/core/database_commands.rb', line 147 def incrbyfloat(field, increment) dbclient.hincrbyfloat dbkey(suffix), field, increment end |
#key?(field) ⇒ Boolean Also known as: has_key?
167 168 169 |
# File 'lib/familia/horreum/core/database_commands.rb', line 167 def key?(field) dbclient.hexists dbkey(suffix), field end |
#move(logical_database) ⇒ Object
19 20 21 |
# File 'lib/familia/horreum/core/database_commands.rb', line 19 def move(logical_database) dbclient.move dbkey, logical_database end |
#remove_field(field) ⇒ Integer Also known as: remove
Removes a field from the hash stored at the dbkey.
79 80 81 82 |
# File 'lib/familia/horreum/core/database_commands.rb', line 79 def remove_field(field) Familia.trace :HDEL, dbclient, field, caller(1..1) if Familia.debug? dbclient.hdel dbkey, field end |