storing 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cb9e623717833ee559b94a421d1e9d5dc09abd16
4
+ data.tar.gz: 5bf793aecad4f3feee07cfc09addec3f04b58aec
5
+ SHA512:
6
+ metadata.gz: 37b4a7c8a7a4fc734c58cdcbc803193b13aedca68fe1e7d6e4c90f4224044b168a8b4a0c88e1db39a019f4e94223bc6ad88efe28f0357fcbb1e67d8ce419d210
7
+ data.tar.gz: f98e2341b7d7e01c5cd11a821f24fe1a59d9d270a9623f9e90437440fb82e01b7c3bfa9ceefe278e9d7add9a5c3bf3317d38d656ea96e808b9edb080b5edd730
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in storing.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :minitest, :all_on_start => false do
5
+ # with Minitest::Spec
6
+ watch(%r{^spec/(.*)_spec\.rb})
7
+ watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
8
+ watch(%r{^spec/spec_helper\.rb}) { 'spec' }
9
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Erik Lott
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Storing
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'storing'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install storing
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ module Storing
2
+ class AbstractAdaptor
3
+ def query query_obj
4
+ raise NotImplementedError
5
+ end
6
+
7
+ def insert table_name, params={}
8
+ raise NotImplementedError
9
+ end
10
+
11
+ def update table_name, conditions={}, params={}
12
+ raise NotImplementedError
13
+ end
14
+
15
+ def delete table_name, conditions={}
16
+ raise NotImplementedError
17
+ end
18
+
19
+ def transaction &block
20
+ raise NotImplementedError
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,74 @@
1
+ require 'storing/exceptions'
2
+
3
+ module Storing
4
+ class Dataset
5
+ class PrimaryKey
6
+ def self.from_hash key, params={}
7
+ keys = [*key]
8
+ values = params.values_at(*keys)
9
+ new(keys, values)
10
+ end
11
+
12
+ attr_reader :key, :value
13
+
14
+ def initialize key, value=nil
15
+ @key = key
16
+ @value = value
17
+ end
18
+
19
+ def to_hash
20
+ output = {}
21
+ keys.length.times do |i|
22
+ output[keys[i]] = values[i]
23
+ end
24
+ output
25
+ end
26
+
27
+ def reject_from params={}
28
+ params.reject{ |k,v| keys.include?(k) }
29
+ end
30
+
31
+ private
32
+
33
+ def keys
34
+ [*key]
35
+ end
36
+
37
+ def values
38
+ [*value]
39
+ end
40
+ end
41
+
42
+ attr_reader :adaptor, :table_name, :primary_key_column
43
+
44
+ def initialize adaptor, table_name, primary_key_column
45
+ @adaptor = adaptor
46
+ @table_name = table_name
47
+ @primary_key_column = primary_key_column
48
+ end
49
+
50
+ def insert params={}
51
+ primary_key_value = adaptor.insert(table_name, params)
52
+ ::Storing::Dataset::PrimaryKey.new(primary_key_column, primary_key_value).to_hash
53
+ end
54
+
55
+ def update params={}
56
+ primary_key = ::Storing::Dataset::PrimaryKey.from_hash(primary_key_column, params)
57
+ filtered_params = primary_key.reject_from(params)
58
+ update_where(primary_key.to_hash, filtered_params)
59
+ end
60
+
61
+ def update_where conditions={}, params={}
62
+ adaptor.update(table_name, conditions, params)
63
+ end
64
+
65
+ def delete params={}
66
+ primary_key = ::Storing::Dataset::PrimaryKey.from_hash(primary_key_column, params)
67
+ delete_where(primary_key.to_hash)
68
+ end
69
+
70
+ def delete_where conditions={}
71
+ adaptor.delete(table_name, conditions)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,64 @@
1
+ require 'storing/exceptions'
2
+ require 'storing/dataset'
3
+
4
+ module Storing
5
+ class EntityStore
6
+ module Extension
7
+ def self.included(base)
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def set_primary_key val
13
+ @primary_key = val
14
+ end
15
+
16
+ def primary_key
17
+ @primary_key || raise(MissingPrimaryKey, 'primary key not assigned')
18
+ end
19
+
20
+ def set_table_name val
21
+ @table_name = val
22
+ end
23
+
24
+ def table_name
25
+ @table_name || raise(MissingTableName, 'table name not assigned')
26
+ end
27
+ end
28
+
29
+ attr_reader :adaptor
30
+
31
+ def initialize adaptor
32
+ @adaptor = adaptor
33
+ end
34
+
35
+ def insert *args
36
+ dataset.insert *args
37
+ end
38
+
39
+ def update *args
40
+ dataset.update *args
41
+ end
42
+
43
+ def update_where *args
44
+ dataset.update_where *args
45
+ end
46
+
47
+ def delete *args
48
+ dataset.delete *args
49
+ end
50
+
51
+ def delete_where *args
52
+ dataset.delete_where *args
53
+ end
54
+
55
+ private
56
+
57
+ def dataset
58
+ ::Storing::Dataset.new(adaptor, self.class.table_name, self.class.primary_key)
59
+ end
60
+ end
61
+
62
+ include Extension
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ module Storing
2
+ class StoringError < StandardError; end
3
+ class BadPrimaryKey < StoringError; end
4
+ class MissingTableName < StoringError; end
5
+ class MissingPrimaryKey < StoringError; end
6
+ end
@@ -0,0 +1,9 @@
1
+ module Storing
2
+ module Postgres
3
+ class AbstractQuery
4
+ def to_sql database
5
+ raise NotImplementedError
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,27 @@
1
+ require 'storing/postgres/abstract_queries/abstract_query'
2
+
3
+ module Storing
4
+ module Postgres
5
+ class AbstractSelectQuery < AbstractQuery
6
+ attr_reader :query_object
7
+
8
+ def initialize query_object=nil
9
+ @query_object = query_object
10
+ end
11
+
12
+ def query database
13
+ raise NotImplementedError
14
+ end
15
+
16
+ def to_sql database
17
+ query(database).select_sql
18
+ end
19
+
20
+ private
21
+
22
+ def call_query_chain database
23
+ query_object ? query_object.query(database) : database
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,58 @@
1
+ require 'sequel'
2
+ require 'storing/abstract_adaptor'
3
+ require 'storing/postgres/queries/insert_query'
4
+ require 'storing/postgres/queries/update_query'
5
+ require 'storing/postgres/queries/delete_query'
6
+
7
+ module Storing
8
+ module Postgres
9
+ class Adaptor < ::Storing::AbstractAdaptor
10
+ QUERY_METHOD_MAP = {
11
+ :select => :all,
12
+ :insert => :insert,
13
+ :update => :update,
14
+ :delete => :delete
15
+ }.freeze
16
+
17
+ attr_reader :database
18
+
19
+ def connect *args
20
+ new Sequel.postgres(*args)
21
+ end
22
+
23
+ def initialize database
24
+ @database = database
25
+ end
26
+
27
+ def query query_object
28
+ execute_query(query_object, :select)
29
+ end
30
+
31
+ def insert table_name, params={}
32
+ execute_query(InsertQuery.new(table_name, params), :insert)
33
+ end
34
+
35
+ def update table_name, conditions={}, params={}
36
+ execute_query(UpdateQuery.new(table_name, conditions, params), :update)
37
+ end
38
+
39
+ def delete table_name, conditions={}
40
+ execute_query(DeleteQuery.new(table_name, conditions), :delete)
41
+ end
42
+
43
+ def transaction
44
+ database.transaction
45
+ end
46
+
47
+ private
48
+
49
+ def execute_query query_object, type=:select
50
+ execute(query_object.to_sql(database), type)
51
+ end
52
+
53
+ def execute sql, type=:select
54
+ database[sql].send(QUERY_METHOD_MAP.fetch(type))
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,16 @@
1
+ require 'storing/postgres/abstract_queries/abstract_query'
2
+
3
+ module Storing
4
+ module Postgres
5
+ class DeleteQuery < ::Storing::Postgres::AbstractQuery
6
+ def initialize table_name, conditions={}
7
+ @table_name = table_name
8
+ @conditions = conditions
9
+ end
10
+
11
+ def to_sql database
12
+ database[@table_name].where(@conditions).delete_sql
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'storing/postgres/abstract_queries/abstract_query'
2
+
3
+ module Storing
4
+ module Postgres
5
+ class InsertQuery < ::Storing::Postgres::AbstractQuery
6
+ def initialize table_name, params={}
7
+ @table_name = table_name
8
+ @params = params
9
+ end
10
+
11
+ def to_sql database
12
+ database[@table_name].insert_sql(@params)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ require 'storing/postgres/abstract_queries/abstract_query'
2
+
3
+ module Storing
4
+ module Postgres
5
+ class UpdateQuery < ::Storing::Postgres::AbstractQuery
6
+ def initialize table_name, conditions={}, params={}
7
+ @table_name = table_name
8
+ @conditions = conditions
9
+ @params = params
10
+ end
11
+
12
+ def to_sql database
13
+ database[@table_name].where(@conditions).update_sql(@params)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module Storing
2
+ VERSION = "0.0.1"
3
+ end
data/lib/storing.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "storing/version"
2
+
3
+ module Storing
4
+ end
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+ require 'storing/dataset'
3
+
4
+ describe Storing::Dataset do
5
+ let(:table_name){ 'users' }
6
+ let(:adaptor){ stub }
7
+ let(:primary_key_column){ [:user_id, :user_type] }
8
+ let(:store){ Storing::Dataset.new(adaptor, table_name, primary_key_column) }
9
+
10
+ describe "#insert" do
11
+ let(:params){stub}
12
+
13
+ it "passes params to adaptor" do
14
+ adaptor.expects(:insert).with(table_name, params).returns([123, 'person'])
15
+ store.insert(params)
16
+ end
17
+
18
+ it "returns primary key hash" do
19
+ adaptor.expects(:insert).returns([123, 'person'])
20
+ store.insert(params).must_equal({:user_id=>123, :user_type=>"person"})
21
+ end
22
+ end
23
+
24
+ describe "#update" do
25
+ it "formats params and delegates to update_where method" do
26
+ params = {:user_id => 123, :user_type => "person", :first_name => 'john', :last_name => 'doe'}
27
+ store.expects(:update_where).with({:user_id => 123, :user_type => "person"}, {:first_name => 'john', :last_name => 'doe'})
28
+ store.update(params)
29
+ end
30
+ end
31
+
32
+ describe "#update_where" do
33
+ it "delegates to adaptor" do
34
+ adaptor_response = stub
35
+ params = stub
36
+ where = stub
37
+ adaptor.expects(:update).with(table_name, where, params).returns(adaptor_response)
38
+ store.update_where(where, params).must_equal(adaptor_response)
39
+ end
40
+ end
41
+
42
+ describe "#delete" do
43
+ it "delegates to delete_where method" do
44
+ params = {:user_id => 123, :user_type => "person", :first_name => 'john', :last_name => 'doe'}
45
+ store.expects(:delete_where).with({:user_id => 123, :user_type => "person"})
46
+ store.delete(params)
47
+ end
48
+ end
49
+
50
+ describe "#delete_where" do
51
+ it "delegates to adaptor" do
52
+ adaptor_response = stub
53
+ where = stub
54
+ adaptor.expects(:delete).with(table_name, where).returns(adaptor_response)
55
+ store.delete_where(where).must_equal(adaptor_response)
56
+ end
57
+ end
58
+ end
59
+
60
+ describe Storing::Dataset::PrimaryKey do
61
+ describe "#to_hash" do
62
+ it "returns hash version of primary key" do
63
+ pk = Storing::Dataset::PrimaryKey.new(:user_id, 123)
64
+ pk.to_hash.must_equal({:user_id => 123})
65
+
66
+ pk = Storing::Dataset::PrimaryKey.new([:user_id, :user_type], [123, 'person'])
67
+ pk.to_hash.must_equal({:user_id=>123, :user_type=>"person"})
68
+ end
69
+ end
70
+
71
+ describe "::from_hash" do
72
+ it "creates pk from hash" do
73
+ pk = Storing::Dataset::PrimaryKey.from_hash(:user_id, :user_id => 123, :name => 'john doe')
74
+ pk.key.must_equal [:user_id]
75
+ pk.value.must_equal [123]
76
+ end
77
+ end
78
+
79
+ describe "#reject_from" do
80
+ it "removes primary key from params" do
81
+ pk = Storing::Dataset::PrimaryKey.new([:user_id, :user_type])
82
+ pk.reject_from({
83
+ :user_id => 123,
84
+ :user_type => 'person',
85
+ :name => 'john doe'
86
+ }).must_equal({:name => 'john doe'})
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require 'storing/entity_store'
3
+
4
+ describe Storing::EntityStore::Extension do
5
+ let(:adaptor){stub}
6
+ let(:store_class) do
7
+ Class.new{
8
+ include Storing::EntityStore::Extension
9
+ set_table_name :user
10
+ set_primary_key :user_id
11
+ }
12
+ end
13
+ let(:store) { store_class.new(adaptor) }
14
+
15
+ describe "::set_primary_key" do
16
+ it "sets primary key on class" do
17
+ store_class.set_primary_key :subscription_id
18
+ store_class.primary_key.must_equal :subscription_id
19
+ end
20
+ end
21
+
22
+ describe "::set_table_name" do
23
+ it "sets primary key on class" do
24
+ store_class.set_table_name :subscription
25
+ store_class.table_name.must_equal :subscription
26
+ end
27
+ end
28
+
29
+ describe "instance methods" do
30
+ let(:dataset){ stub }
31
+
32
+ before do
33
+ store.expects(:dataset).returns(dataset)
34
+ end
35
+
36
+ describe "#insert" do
37
+ it "delegates to dataset" do
38
+ dataset.expects(:insert).with('blah')
39
+ store.insert('blah')
40
+ end
41
+ end
42
+
43
+ describe "#update" do
44
+ it "delegates to dataset" do
45
+ dataset.expects(:update).with('blah')
46
+ store.update('blah')
47
+ end
48
+ end
49
+
50
+ describe "#update_where" do
51
+ it "delegates to dataset" do
52
+ dataset.expects(:update_where).with('blah')
53
+ store.update_where('blah')
54
+ end
55
+ end
56
+
57
+ describe "#delete" do
58
+ it "delegates to dataset" do
59
+ dataset.expects(:delete).with('blah')
60
+ store.delete('blah')
61
+ end
62
+ end
63
+
64
+ describe "#delete_where" do
65
+ it "delegates to dataset" do
66
+ dataset.expects(:delete_where).with('blah')
67
+ store.delete_where('blah')
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require 'storing/postgres/queries/delete_query'
3
+
4
+ describe Storing::Postgres::DeleteQuery do
5
+ describe "to_sql" do
6
+ it "returns insert sql" do
7
+ query = Storing::Postgres::DeleteQuery.new(:user, :user_id => 123)
8
+ query.to_sql(DB).must_equal "DELETE FROM \"user\" WHERE (\"user_id\" = 123)"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require 'storing/postgres/queries/insert_query'
3
+
4
+ describe Storing::Postgres::InsertQuery do
5
+ describe "to_sql" do
6
+ it "returns insert sql" do
7
+ query = Storing::Postgres::InsertQuery.new(:user, :user_id => 123, :name => 'John Doe', :age => 35)
8
+ query.to_sql(DB).must_equal "INSERT INTO \"user\" (\"user_id\", \"name\", \"age\") VALUES (123, 'John Doe', 35)"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'storing/postgres/queries/update_query'
3
+
4
+ describe Storing::Postgres::UpdateQuery do
5
+ describe "to_sql" do
6
+ it "returns insert sql" do
7
+ conditions = {:user_id => 123}
8
+ params = {:name => 'John Doe', :age => 35}
9
+ query = Storing::Postgres::UpdateQuery.new(:user, conditions, params)
10
+ query.to_sql(DB).must_equal "UPDATE \"user\" SET \"name\" = 'John Doe', \"age\" = 35 WHERE (\"user_id\" = 123)"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'storing/postgres/adaptor'
3
+
4
+ describe Storing::Postgres::Adaptor do
5
+ describe "#insert" do
6
+ it "delegates to execute_query method" do
7
+ table_name = stub
8
+ params = stub
9
+ query_object = stub
10
+
11
+ Storing::Postgres::InsertQuery.expects(:new).with(table_name, params).returns(query_object)
12
+ adaptor = Storing::Postgres::Adaptor.new(DB)
13
+ adaptor.expects(:execute_query).with(query_object, :insert)
14
+ adaptor.insert(table_name, params)
15
+ end
16
+ end
17
+
18
+ describe "#update" do
19
+ it "delegates to execute_query method" do
20
+ table_name = stub
21
+ conditions = stub
22
+ params = stub
23
+ query_object = stub
24
+
25
+ Storing::Postgres::UpdateQuery.expects(:new).with(table_name, conditions, params).returns(query_object)
26
+ adaptor = Storing::Postgres::Adaptor.new(DB)
27
+ adaptor.expects(:execute_query).with(query_object, :update)
28
+ adaptor.update(table_name, conditions, params)
29
+ end
30
+ end
31
+
32
+ describe "#delete" do
33
+ it "delegates to execute_query method" do
34
+ table_name = stub
35
+ conditions = stub
36
+ query_object = stub
37
+
38
+ Storing::Postgres::DeleteQuery.expects(:new).with(table_name, conditions).returns(query_object)
39
+ adaptor = Storing::Postgres::Adaptor.new(DB)
40
+ adaptor.expects(:execute_query).with(query_object, :delete)
41
+ adaptor.delete(table_name, conditions)
42
+ end
43
+ end
44
+
45
+ describe "#query" do
46
+ it "delegates to execute_query method" do
47
+ query_object = stub
48
+
49
+ adaptor = Storing::Postgres::Adaptor.new(DB)
50
+ adaptor.expects(:execute_query).with(query_object, :select)
51
+ adaptor.query(query_object)
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,20 @@
1
+ require 'minitest/autorun'
2
+ require 'mocha/setup'
3
+ require 'sequel'
4
+
5
+ DB = Sequel.connect("postgres://admin:Zbx8L9W33E@localhost/gazou_postgres_test", :encoding => 'unicode')
6
+
7
+ require 'database_cleaner'
8
+
9
+ DatabaseCleaner.strategy = :transaction
10
+
11
+ class MiniTest::Spec
12
+ before :each do
13
+ DatabaseCleaner.start
14
+ DB[:source_type].insert(:source_type_code => 'S3', :name => 'amazons3source')
15
+ end
16
+
17
+ after :each do
18
+ DatabaseCleaner.clean
19
+ end
20
+ end
data/storing.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'storing/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "storing"
8
+ spec.version = Storing::VERSION
9
+ spec.authors = ["Erik Lott"]
10
+ spec.email = ["erik.lott@kodio.com"]
11
+ spec.description = %q{Minimal storage interface}
12
+ spec.summary = %q{General storage interface}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "guard-minitest", "~> 2.0.0"
24
+ spec.add_development_dependency "mocha", "~> 0.14.0"
25
+ spec.add_development_dependency "database_cleaner", "~> 1.2.0"
26
+ spec.add_development_dependency "sequel", "~> 4.3.0"
27
+ spec.add_development_dependency "pg", "~> 0.17.0"
28
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: storing
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Erik Lott
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard-minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: mocha
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.14.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.14.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: database_cleaner
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.2.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 1.2.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: sequel
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 4.3.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 4.3.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: pg
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.17.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.17.0
111
+ description: Minimal storage interface
112
+ email:
113
+ - erik.lott@kodio.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - Gemfile
120
+ - Guardfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - lib/storing.rb
125
+ - lib/storing/abstract_adaptor.rb
126
+ - lib/storing/dataset.rb
127
+ - lib/storing/entity_store.rb
128
+ - lib/storing/exceptions.rb
129
+ - lib/storing/postgres/abstract_queries/abstract_query.rb
130
+ - lib/storing/postgres/abstract_queries/abstract_select_query.rb
131
+ - lib/storing/postgres/adaptor.rb
132
+ - lib/storing/postgres/queries/delete_query.rb
133
+ - lib/storing/postgres/queries/insert_query.rb
134
+ - lib/storing/postgres/queries/update_query.rb
135
+ - lib/storing/version.rb
136
+ - spec/dataset_spec.rb
137
+ - spec/entity_store_spec.rb
138
+ - spec/postgres/adaptor/delete_query_spec.rb
139
+ - spec/postgres/adaptor/insert_query_spec.rb
140
+ - spec/postgres/adaptor/update_query_spec.rb
141
+ - spec/postgres/adaptor_spec.rb
142
+ - spec/spec_helper.rb
143
+ - storing.gemspec
144
+ homepage: ''
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.0.7
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: General storage interface
168
+ test_files:
169
+ - spec/dataset_spec.rb
170
+ - spec/entity_store_spec.rb
171
+ - spec/postgres/adaptor/delete_query_spec.rb
172
+ - spec/postgres/adaptor/insert_query_spec.rb
173
+ - spec/postgres/adaptor/update_query_spec.rb
174
+ - spec/postgres/adaptor_spec.rb
175
+ - spec/spec_helper.rb