flex_pg 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ebdf95739af9dde6360e3d3c2d416fe6ef9a04e
4
- data.tar.gz: eb369e8b9d698029ac3057664a25fc8f8ed4ce78
3
+ metadata.gz: 567e7383b14fe7e98276875433e62ee982ae9aa9
4
+ data.tar.gz: e29094c0796ab94fbb34a46981e19d6a40566c9f
5
5
  SHA512:
6
- metadata.gz: 57cf0e76f1124e9f920e92276624e776f45a95324e7dde9626600f781e9ac07a82aa73cad324c14db690a0a77313bbc3882d1b690a29627427be15121eb08029
7
- data.tar.gz: f97ce42d87a21d198767fafef01b7960df12859f1c8c0f302a5c1d25146732cbbe3bf1c95f6cb328607a0890775e57882a57b088003558721f6f8ec8b5b42ae3
6
+ metadata.gz: ee7e0fec0d9a8c4c9c8680697385c4992bc78765602550c5e5e4f9cd05661ba2da9bcae6b1c5e367a0e571b8a59fb53c3a6af3e4f61f24656baebec12f620fd0
7
+ data.tar.gz: 212824eb17b1bc644e932cad0b8a215b2b6cbb12ddba9ab1b08daf5852e996e9823aed28727de3f44bb42d78e4b6e67c88fa3587412c2b06ea3626d467698a0d
@@ -1,11 +1,30 @@
1
+ require 'flex_config'
2
+ require 'flex_pg/sequel_mods'
1
3
  require 'sequel'
2
4
 
3
5
  class FlexPG
4
6
 
5
7
  def initialize (args)
6
- @db = Sequel.postgres(args)
8
+ details = args
9
+ if details.keys.include?(:local_user)
10
+
11
+ if details[:local_user] == ENV['USER']
12
+
13
+ details[:host] = 'localhost'
14
+ details[:user] = details.delete(:local_user)
15
+ details.delete(:password)
16
+
17
+ @db = Sequel.postgres(details)
18
+ else
19
+ @db = Sequel.postgres(args)
20
+ end
21
+ else
22
+ @db = Sequel.postgres(args)
23
+ end
24
+
7
25
  @db.extension :pg_array
8
26
  @db.extension :pg_hstore
27
+ @db_details = args
9
28
  end
10
29
 
11
30
  def method_missing (method, *args, &block)
@@ -13,7 +32,7 @@ class FlexPG
13
32
  end
14
33
 
15
34
  def [] (symbol)
16
- FlexDS.new({db: @db, table: symbol})
35
+ FlexDS.new({ db: @db, table: symbol })
17
36
  end
18
37
 
19
38
  end
@@ -23,7 +42,7 @@ class FlexPG
23
42
  class FlexDS
24
43
 
25
44
  def initialize (args)
26
- @database = args[:db]
45
+ @database = args[:db]
27
46
  @table_name = args[:table]
28
47
  end
29
48
 
@@ -32,24 +51,28 @@ class FlexPG
32
51
  outcome = table.insert_ignore.insert(details)
33
52
 
34
53
  unless outcome.nil?
35
- puts 'insert successful'
54
+ # puts 'insert successful'
36
55
  return outcome
37
56
  end
38
57
 
39
- puts 'possible conflict...'
58
+ # puts 'possible conflict...'
40
59
 
41
60
  columns = @database.indexes(@table_name).to_a.first.to_a[1][:columns]
61
+ if columns.nil?
62
+ p_key = primary_key
63
+ conflict_id = details[p_key]
64
+ else
65
+ selector = columns.inject({}) { |acc, key|
66
+ acc.store(key, details[key])
67
+ acc
68
+ }
69
+ p_key = primary_key
70
+ conflict_id = @database[@table_name].where(selector).first[p_key]
71
+ end
42
72
 
43
- selector = columns.inject({}) { |acc, key|
44
- acc.store(key, details[key])
45
- acc
46
- }
47
- p_key = primary_key
48
- conflict_id = @database[@table_name].where(selector).first[p_key]
49
- outcome = table.where(p_key => conflict_id).update(details)
50
- puts 'update successful' unless outcome == 0
73
+ outcome = table.where(p_key => conflict_id).returning(p_key).update(details).first[p_key]
74
+ # puts 'update successful' unless outcome.nil?
51
75
  outcome
52
-
53
76
  end
54
77
 
55
78
  def primary_key
@@ -66,4 +89,8 @@ class FlexPG
66
89
 
67
90
  end
68
91
 
69
- end
92
+ end
93
+
94
+ Sequel.extension :core_extensions
95
+ Sequel.extension :pg_array_ops
96
+ Sequel.extension :pg_hstore_ops
@@ -0,0 +1,11 @@
1
+ require 'sequel'
2
+
3
+ module Sequel
4
+ class Dataset
5
+
6
+ def get_key (**conditions)
7
+ self[conditions][:id] || self.insert(conditions)
8
+ end
9
+
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flex_pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2016-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -31,6 +31,7 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/flex_pg.rb
34
+ - lib/flex_pg/sequel_mods.rb
34
35
  homepage:
35
36
  licenses: []
36
37
  metadata: {}