sqlite_object_store 0.1 → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/sqlite_object_store.rb +26 -5
  2. metadata +17 -1
@@ -1,4 +1,6 @@
1
1
  require 'oj'
2
+ # require 'json'
3
+ # require 'multi_json'
2
4
  require 'sqlite3'
3
5
 
4
6
  class SqliteObjectStore
@@ -10,6 +12,7 @@ class SqliteObjectStore
10
12
  @db = open_database(database_path)
11
13
  @table_name = table_name
12
14
  create_table(table_name)
15
+ @find_statement = db.prepare "select value from #{table_name} where key = ?"
13
16
  end
14
17
 
15
18
  def open_database(path)
@@ -19,19 +22,19 @@ class SqliteObjectStore
19
22
  end
20
23
 
21
24
  def [](key)
22
- db.execute "select value from #{table_name} where key = ?", String(key) do |row|
23
- return Oj.load(row.first)
25
+ @find_statement.execute!(String(key)) do |row|
26
+ return json_decode(row.first)
24
27
  end
25
28
  return nil
26
29
  end
27
30
 
28
31
  def []=(key, value)
29
- db.execute "insert or replace into #{table_name} (key, value) values (?, ?)", String(key), Oj.dump(value)
32
+ db.execute "insert or replace into #{table_name} (key, value) values (?, ?)", String(key), json_encode(value)
30
33
  end
31
34
 
32
35
  def each
33
36
  db.execute "select key, value from #{table_name}" do |row|
34
- yield [row[0], Oj.load(row[1])]
37
+ yield [row[0], json_decode(row[1])]
35
38
  end
36
39
  end
37
40
 
@@ -54,7 +57,25 @@ class SqliteObjectStore
54
57
  end
55
58
 
56
59
  def close
60
+ @find_statement.close
57
61
  db.close
58
62
  @@databases.delete(File.expand_path(database_path))
59
63
  end
60
- end
64
+
65
+ def json_encode(value)
66
+ Oj.dump(value, :mode => :compat)
67
+ end
68
+
69
+ def json_decode(str)
70
+ Oj.load(str, :mode => :compat)
71
+ end
72
+
73
+ # def json_encode(value)
74
+ # MultiJson.dump(value)
75
+ # end
76
+
77
+ # def json_decode(str)
78
+ # MultiJson.load(str)
79
+ # end
80
+
81
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlite_object_store
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: oj
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  description:
63
79
  email: eric@ericmason.net
64
80
  executables: []