mystic 0.1.2 → 0.1.3

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mystic.rb +7 -1
  3. data/lib/mystic/model.rb +25 -21
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c1b298d8159f75053635c7ead806af57c42b2ac
4
- data.tar.gz: 208fbafe42642f540c5e7b262f35267611c3262e
3
+ metadata.gz: d72462dbb17bb77c1cf67fd294286f52636bd68f
4
+ data.tar.gz: e78d213ceb6133c03b24c00c959403bb51f3cc99
5
5
  SHA512:
6
- metadata.gz: 445ec0546c15ca3da3ea6328499c65611dbd86048a790a05e3af15c35a5e881a0a963a238cf6eea2245d6e03b630fb7e057dc1fb4268dccb4956a311bdd082b9
7
- data.tar.gz: fbe20de403540cb2d85d032919e7c1aa429feb97b5f52c68c26df45af01b9166ee58faa27f0ca9ef45a386de8b3c628a0d0fbf672152d327f99c7f7f36886e3c
6
+ metadata.gz: 3ef965891e3f3dc4c1617511707bf6af8cf3e747512cd96f44d20964142c7e81f13793dba7350a1c60eec681ae58f533e894dac57c85c8beb84e77eaf785ede9
7
+ data.tar.gz: 731b449bdc535b57cd0c22fd6bbc216c9f25b371b01e7a2e51e7386cf99701092c1358f93f4d0ce340915963b04e942644b712f14cf54c3e5eb81d239b57f05d
@@ -54,11 +54,17 @@ module Mystic
54
54
  conf[:user] = conf.delete :username
55
55
  raise MysticError, "Mystic only supports Postgres." unless /^postg.+$/i =~ conf[:adapter]
56
56
 
57
- @postgres = Postgres.new(conf)
57
+ @postgres = Postgres.new conf
58
58
 
59
59
  @env
60
60
  end
61
61
 
62
+ def manual_conn conf={}
63
+ load_env
64
+ @env = (ENV["RACK_ENV"] || ENV["RAILS_ENV"] || "development").to_s
65
+ @postgres = Postgres.new(conf)
66
+ end
67
+
62
68
  def root path=Pathname.new(Dir.pwd)
63
69
  raise RootError, "Failed to find the application's root." if path == path.parent
64
70
  mystic_path = path.join "config", "database.yml"
@@ -8,7 +8,7 @@ module Mystic
8
8
 
9
9
  module ClassMethods
10
10
  def table_name
11
- to_s.downcase
11
+ to_s.split("::").last.downcase
12
12
  end
13
13
 
14
14
  def visible_cols
@@ -26,19 +26,16 @@ module Mystic
26
26
  plural = opts[:plural] && op != "INSERT"
27
27
 
28
28
  sql << " RETURNING #{visible_cols*','}" if return_rows && op != "SELECT"
29
-
29
+
30
+ return sql unless return_json
31
+
30
32
  s = []
31
-
32
- if return_json
33
- s << "WITH res AS (#{sql}) SELECT"
34
- s << "array_to_json(array_agg(res))" if plural
35
- s << "row_to_json(res)" unless plural
36
- s << "AS #{Mystic::JSON_COL}"
37
- s << "FROM res"
38
- else
39
- s << sql
40
- end
41
-
33
+ s << "WITH res AS (#{sql}) SELECT"
34
+ s << "array_to_json(array_agg(res))" if plural
35
+ s << "row_to_json(res)" unless plural
36
+ s << "AS #{Mystic::JSON_COL}"
37
+ s << "FROM res"
38
+ s << "LIMIT 1" unless plural
42
39
  s*' '
43
40
  end
44
41
 
@@ -60,7 +57,7 @@ module Mystic
60
57
  :sql => sql.join(' '),
61
58
  :return_rows => true,
62
59
  :return_json => sym_opts[:return_json],
63
- :plural => count > 1
60
+ :plural => sym_opts[:fetch] == false
64
61
  )
65
62
  end
66
63
 
@@ -73,7 +70,8 @@ module Mystic
73
70
  wrapper_sql(
74
71
  :sql => "UPDATE #{table_name} SET #{set.sqlize*','} WHERE #{where.sqlize*' AND '}",
75
72
  :return_rows => sym_opts[:return_rows],
76
- :return_json => sym_opts[:return_json]
73
+ :return_json => sym_opts[:return_json],
74
+ :plural => sym_opts.member?(:plural) ? sym_opts[:plural] : true
77
75
  )
78
76
  end
79
77
 
@@ -85,7 +83,8 @@ module Mystic
85
83
  wrapper_sql(
86
84
  :sql => "INSERT INTO #{table_name} (#{params.keys*','}) VALUES (#{params.values.sqlize*','})",
87
85
  :return_rows => sym_opts[:return_rows],
88
- :return_json => sym_opts[:return_json]
86
+ :return_json => sym_opts[:return_json],
87
+ :plural => sym_opts.member?(:plural) ? sym_opts[:plural] : true
89
88
  )
90
89
  end
91
90
 
@@ -97,7 +96,8 @@ module Mystic
97
96
  wrapper_sql(
98
97
  :sql => "DELETE FROM #{table_name} WHERE #{params.sqlize*' AND '}",
99
98
  :return_rows => sym_opts[:return_rows],
100
- :return_json => sym_opts[:return_json]
99
+ :return_json => sym_opts[:return_json],
100
+ :plural => sym_opts.member?(:plural) ? sym_opts[:plural] : true
101
101
  )
102
102
  end
103
103
 
@@ -106,23 +106,27 @@ module Mystic
106
106
  end
107
107
 
108
108
  def fetch params={}, opts={}
109
- res = select params, opts.merge({:count => 1})
109
+ res = select params, opts.merge({:count => 1, :fetch => true})
110
110
  return res if res.is_a? String
111
111
  res.first rescue nil
112
112
  end
113
113
 
114
114
  def create params={}, opts={}
115
- res = Mystic.execute insert_sql(params, opts)
115
+ res = Mystic.execute insert_sql(params, opts.merge({ :return_rows => true }))
116
116
  return res if res.is_a? String
117
117
  res.first rescue nil
118
118
  end
119
119
 
120
120
  def update where={}, set={}, opts={}
121
- Mystic.execute update_sql(where, set, opts.merge({ :return_rows => true }))
121
+ res = Mystic.execute update_sql(where, set, opts.merge({ :return_rows => true }))
122
+ return res.first unless opts[:plural]
123
+ res
122
124
  end
123
125
 
124
126
  def delete params={}, opts={}
125
- Mystic.execute delete_sql(params, opts)
127
+ res = Mystic.execute delete_sql(params, opts)
128
+ return res.first if !opts[:plural] && !res.nil?
129
+ res
126
130
  end
127
131
 
128
132
  def exec_func funcname, *params
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mystic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathaniel Symer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-28 00:00:00.000000000 Z
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: densify