storing 0.0.1

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