Class: Client

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

Instance Method Summary collapse

Constructor Details

#initialize(url = ENV['REPLIT_DB_URL']) ⇒ Client

Change url to point to a different path.

Parameters:

  • url (String, nil) (defaults to: ENV['REPLIT_DB_URL'])


9
10
11
# File 'lib/repldb.rb', line 9

def initialize(url = ENV['REPLIT_DB_URL'])
  @url = url
end

Instance Method Details

#del(key) ⇒ Object

Deletes key.

Parameters:

  • key (String)


46
47
48
49
50
51
52
53
# File 'lib/repldb.rb', line 46

def del(key)
  uri = URI.parse("#{@url}/#{serialize(key)}")
  req = Net::HTTP::Delete.new(uri.path)

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.request(req)
end

#del_allObject

Deletes all keys, ultimately emptying the database.



56
57
58
# File 'lib/repldb.rb', line 56

def del_all
  keys.each { |k| del(k) }
end

#exists?(key) ⇒ Boolean

Check if key exists.

Parameters:

  • key (String)

Returns:

  • (Boolean)


81
82
83
# File 'lib/repldb.rb', line 81

def exists?(key)
  !get(key).nil?
end

#get(key, default = nil) ⇒ Object

Gets key. If it doesn’t exist, <tt>default<tt> will be used.

Parameters:

  • key (String)

    the key to get

  • default (Any) (defaults to: nil)

    the default value if the key doesn’t exist.



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/repldb.rb', line 24

def get(key, default = nil)
  val = get_url("#{@url}/#{serialize(key)}")
  if val.body == ''
    default
  else
    begin
      JSON.parse(val.body)
    rescue StandardError
      default
    end
  end
end

#get_hashObject

Gets all the keys as a hash.



72
73
74
75
76
77
# File 'lib/repldb.rb', line 72

def get_hash
  o = {}
  ks = keys
  ks.each { |k| o[k] = get(k) }
  o
end

#keys(prefix = '') ⇒ Object

Get all the keys as an array. prefix can be used to get all keys with a prefix.

Parameters:

  • prefix (String, nil) (defaults to: '')

    Get all keys with prefix at the start.



40
41
42
# File 'lib/repldb.rb', line 40

def keys(prefix = '')
  get_url("#{@url}?prefix=#{prefix}").body.split("\n").map { |k| deserialize(k) }
end

#set(key, val) ⇒ Object

Sets key to val.

Parameters:

  • key (String)

    the key to set.

  • val (Any)

    the value.



16
17
18
# File 'lib/repldb.rb', line 16

def set(key, val)
  post_url(@url.to_s, serialize(key) => JSON.generate(val))
end

#set_hash(hash) ⇒ Object

This will append hash. **This will NOT replace existing keys!**

Parameters:

  • hash (Hash)


63
64
65
66
67
68
69
# File 'lib/repldb.rb', line 63

def set_hash(hash)
  if hash.is_a? Hash
    hash.each { |k, v| set(k, v) }
  else
    raise '[GemDb] Error: Argument must be a hash'
  end
end