-
Notifications
You must be signed in to change notification settings - Fork 49
/
sqlite.rb
52 lines (43 loc) · 1.64 KB
/
sqlite.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
module Picky
module Backends
class SQLite < Backend
attr_reader :realtime
def initialize options = {}
@realtime = options[:realtime]
require 'sqlite3'
rescue LoadError => e
warn_gem_missing 'sqlite3', 'SQLite bindings'
end
# Returns an object that on #initial, #load returns an object that responds to:
# [:token] # => [id, id, id, id, id] (an array of ids)
#
def create_inverted bundle
StringKeyArray.new bundle.index_path(:inverted), realtime: realtime
end
# Returns an object that on #initial, #load returns an object that responds to:
# [:token] # => 1.23 (a weight)
#
def create_weights bundle
Value.new bundle.index_path(:weights), realtime: realtime
end
# Returns an object that on #initial, #load returns an object that responds to:
# [:encoded] # => [:original, :original] (an array of original symbols this similarity encoded thing maps to)
#
def create_similarity bundle
StringKeyArray.new bundle.index_path(:similarity), realtime: realtime
end
# Returns an object that on #initial, #load returns an object that responds to:
# [:key] # => value (a value for this config key)
#
def create_configuration bundle
Value.new bundle.index_path(:configuration), realtime: realtime
end
# Returns an object that on #initial, #load returns an object that responds to:
# [id] # => [:sym1, :sym2]
#
def create_realtime bundle
IntegerKeyArray.new bundle.index_path(:realtime), realtime: realtime
end
end
end
end