sqlite_object_store 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []