actn-db 0.0.3 → 0.0.4

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.
@@ -1,7 +1,7 @@
1
1
  // Generated by CoffeeScript 1.6.3
2
2
  (function() {
3
- var Builder;
4
-
3
+ var Builder, root;
4
+ root = this;
5
5
  Builder = (function() {
6
6
  function Builder(schema_name, table_name, search_path, query) {
7
7
  var _base;
@@ -212,7 +212,5 @@
212
212
  return Builder;
213
213
 
214
214
  })();
215
-
216
- actn.Builder = Builder;
217
-
215
+ return root.actn.Builder = Builder;
218
216
  }).call(this);
@@ -4,8 +4,8 @@ namespace :db do
4
4
 
5
5
  desc "erases and rewinds all dbs"
6
6
  task :reset do
7
- Rake::Task["db:drop"].execute
8
- Rake::Task["db:create"].execute
7
+ Rake::Task["db:drop_schema"].execute
8
+ Rake::Task["db:create_schema"].execute
9
9
  Rake::Task["db:migrate"].execute
10
10
  end
11
11
 
@@ -14,8 +14,6 @@ namespace :db do
14
14
 
15
15
  puts "Db Migrating... #{db_config[:dbname]}"
16
16
  pg = PG::EM::Client.new(db_config)
17
-
18
-
19
17
 
20
18
  Actn::DB.paths.uniq.each do |path|
21
19
 
@@ -24,15 +22,18 @@ namespace :db do
24
22
  pg.exec(File.read("#{path}/db/__setup.sql")) if File.exists?("#{path}/db/__setup.sql")
25
23
 
26
24
  if File.exists?("#{path}/db/lib")
27
- `coffee --compile --output #{path}/db/lib #{path}/db/lib` rescue nil
25
+ `coffee --bare --compile --output #{path}/db/lib #{path}/db/lib` rescue nil
28
26
 
29
27
  Dir.glob("#{path}/db/lib/*.js").each do |js|
30
- name = File.basename(js,".js").split("_").last
28
+ # name = File.basename(js,".js").split("_").last
29
+ name = File.basename(js,".js")[1..-1]
31
30
  sql = "INSERT INTO plv8_modules values ($1,true,$2)"
32
31
  pg.exec_params(sql,[name,File.read(js)])
33
32
  end
34
33
  end
35
34
 
35
+ pg.exec "SELECT plv8_startup();"
36
+
36
37
  pg.exec(File.read("#{path}/db/__functions.sql")) if File.exists?("#{path}/db/__functions.sql")
37
38
 
38
39
  if File.exists?("#{path}/db/")
@@ -59,22 +60,34 @@ namespace :db do
59
60
 
60
61
  puts "#{name} inserted:#{inserted} updated:#{updated}"
61
62
  end
62
-
63
- pg.exec "SELECT plv8_startup();"
64
-
63
+
65
64
  end
66
65
 
67
-
68
66
  end
69
67
 
70
68
  end
69
+
70
+ desc 'Drops all schemas'
71
+ task :drop_schema do
72
+ puts "Db Dropping... #{db_config[:dbname]}"
73
+ pg = PG::EM::Client.new(db_config)
74
+ pg.exec "drop schema public cascade;"
75
+ pg.exec "drop schema if exists core cascade;"
76
+ end
77
+
78
+ desc 'Creates public schema'
79
+ task :create_schema do
80
+ puts "Db Creating... #{db_config[:dbname]}"
81
+ pg = PG::EM::Client.new(db_config)
82
+ pg.exec "create schema public;"
83
+ end
71
84
 
72
85
  desc 'Drops the database'
73
86
  task :drop do
74
87
  puts "Db Dropping... #{db_config[:dbname]}"
75
88
  pg = PG::EM::Client.new(pg_config)
76
89
  sql = "DROP DATABASE IF EXISTS \"%s\";" % [db_config[:dbname]]
77
- pg.exec(sql).error_message
90
+ pg.exec(sql)
78
91
  end
79
92
 
80
93
  desc 'Creates the database'
@@ -1,5 +1,5 @@
1
1
  module Actn
2
2
  module DB
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -34,7 +34,7 @@ module Actn
34
34
  assert_equal "ModelName", model.name
35
35
 
36
36
  samenamedmodel = Model.create(data)
37
- puts samenamedmodel.errors.inspect
37
+ # puts samenamedmodel.errors.inspect
38
38
  refute samenamedmodel.persisted?
39
39
 
40
40
  model.destroy
@@ -5,7 +5,7 @@ require 'minitest/autorun'
5
5
  require 'minitest/pride'
6
6
 
7
7
  ENV['RACK_ENV'] = "test"
8
- ENV['DATABASE_URL'] = "postgres://localhost:5432/actn_test"
8
+ ENV['DATABASE_URL'] ||= "postgres://localhost:5432/actn_test"
9
9
 
10
10
  I18n.enforce_available_locales = false
11
11
 
@@ -15,4 +15,4 @@ class MiniTest::Test
15
15
  def random_str
16
16
  (0...8).map { (65 + rand(26)).chr }.join
17
17
  end
18
- end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actn-db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Onur Uyar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-03 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -153,12 +153,14 @@ files:
153
153
  - db/1_db.sql
154
154
  - db/__functions.sql
155
155
  - db/__setup.sql
156
- - db/lib/_0_actn.js
157
- - db/lib/_1_underscore.js
156
+ - db/lib/_0_underscore.js
157
+ - db/lib/_1_inflections.js
158
158
  - db/lib/_2_jjv.js
159
- - db/lib/_3_inflections.js
160
- - db/lib/_4_builder.coffee
161
- - db/lib/_4_builder.js
159
+ - db/lib/_3_actn.js
160
+ - db/lib/_4_functions.coffee
161
+ - db/lib/_4_functions.js
162
+ - db/lib/_5_builder.coffee
163
+ - db/lib/_5_builder.js
162
164
  - db/schemas/model.json
163
165
  - lib/actn/core_ext/hash.rb
164
166
  - lib/actn/core_ext/kernel.rb
@@ -1,23 +0,0 @@
1
- global = (function() {
2
- return this;
3
- }).call(null);
4
-
5
- var Actn = (function() {
6
- function Actn() {}
7
-
8
- Actn.prototype.valueAt = function(data, key) {
9
- var i, keys;
10
- keys = key.split(".");
11
- for (i in keys) {
12
- if (data != null) {
13
- data = data[keys[i]];
14
- }
15
- }
16
- return data;
17
- };
18
-
19
- return Actn;
20
-
21
- })();
22
-
23
- actn = new Actn();
@@ -1,136 +0,0 @@
1
- class Builder
2
-
3
- constructor: (@schema_name, @table_name, @search_path, @query) ->
4
- @query.select ?= "*"
5
- @params = []
6
- @i = 0
7
-
8
- qm: -> "$#{@i += 1}"
9
-
10
- make_select: ->
11
- if @query?.select?.indexOf('COUNT') > -1
12
- @query.select
13
- else
14
- if @query.select is "*"
15
- "data"
16
- else
17
- @params.push _.flatten([@query.select]).join(".")
18
- "__select(data, #{@qm()}) as data" #::text
19
-
20
-
21
- make_where: (q, join_by = 'AND') ->
22
- sql = []
23
- for k, subquery of q
24
- switch k
25
- when 'and', 'AND', '&', '&&'
26
- sql.push "(#{make_where(subquery, 'AND')})"
27
- when 'or', 'OR', '|', '||'
28
- sql.push "(#{make_where(subquery, 'OR')})"
29
- when 'not', 'NOT', '!'
30
- sql.push "NOT (#{make_where(subquery, 'AND')})"
31
- else
32
- if _.isArray(subquery)
33
- @params.push k
34
- @params.push subquery[1]
35
- sql.push "#{@plv8_key(subquery[1])} #{subquery[0]} #{@plv8_qm(subquery[1])}"
36
- else if _.isObject(subquery)
37
- comparisons = []
38
- for symbol, value in subquery
39
- comparisons.push "#{symbol} #{@plv8_qm(value)}"
40
- @params.push k
41
- @params.push value
42
- sql.push _.map(comparisons, (comparison) -> "#{@plv8_key(value)} #{comparison}").join(" AND ")
43
- else
44
- @params.push k
45
- @params.push subquery
46
- sql.push "#{@plv8_key(subquery)} = #{@plv8_qm(subquery)}"
47
-
48
- sql.join "\n#{join_by} "
49
-
50
-
51
- make_order_by: () ->
52
- ord = @query.order_by
53
- str = []
54
- if _.isArray(ord)
55
- @params.push ord[0]
56
- str.push "#{@plv8_key(ord[1])} #{ord[1].toUpperCase()}"
57
- else if _.isObject(ord)
58
- for k,v in ord
59
- @params.push v
60
- str.push "#{@plv8_key(k)} #{k.toUpperCase()}"
61
- else
62
- @params.push ord
63
- str.push @qm()
64
- str.join(",")
65
-
66
-
67
- make_limit: ->
68
- @params.push @query.limit
69
- @qm()
70
-
71
-
72
- make_offset: ->
73
- @params.push @query.offset
74
- @qm()
75
-
76
-
77
- build_select: ->
78
- sql = []
79
- sql.push "SET search_path TO #{@search_path};"
80
- sql.push "SELECT #{@make_select()} FROM #{@schema_name}.#{@table_name}"
81
- sql.push "WHERE #{@make_where(@query.where)}" unless _.isEmpty(@query.where)
82
- sql.push "ORDER BY #{@make_order()}" if @query.order_by?
83
- sql.push "LIMIT #{@make_limit()}" if @query.limit?
84
- sql.push "OFFSET #{@make_offset()}" if @query.offset?
85
- [sql.join("\n"), @params]
86
-
87
- build_delete: ->
88
- sql = []
89
- sql.push "SET search_path TO #{@search_path};"
90
- sql.push "DELETE FROM #{@schema_name}.#{@table_name}"
91
- sql.push "WHERE #{@make_where(@query.where)}" unless _.isEmpty(@query.where)
92
- sql.push "RETURNING data::json;"
93
- [sql.join("\n"), @params]
94
-
95
- build_update: (data, merge = true) ->
96
-
97
- @params.push data
98
- @params.push merge
99
- sql = []
100
- sql.push "SET search_path TO #{@search_path};"
101
- sql.push "UPDATE #{@schema_name}.#{@table_name} SET data = __patch(data,#{@qm()},#{@qm()})"
102
- sql.push "WHERE #{@make_where(@query.where)}" unless _.isEmpty(@query.where)
103
- sql.push "RETURNING data::json;"
104
- [sql.join("\n"), @params]
105
-
106
- build_insert: (data, merge = true) ->
107
- @params.push data
108
- @params.push merge
109
- sql = []
110
- sql.push "SET search_path TO #{@search_path};"
111
- sql.push "INSERT INTO #{@schema_name}.#{@table_name} (data) VALUES (__patch(__defaults(),#{@qm()},#{@qm()}))"
112
- sql.push "RETURNING data::json;"
113
- [sql.join("\n"), @params]
114
-
115
- plv8_key: (value) -> "#{@typecast(value,true)}(data, #{@qm()}::text)" #::text
116
-
117
- plv8_qm: (value) -> "#{@qm()}::#{@typecast(value)}"
118
-
119
- typecast: (value, is_func = false) ->
120
- type = if is_func then "__" else ""
121
- if _.isBoolean(value)
122
- type += "bool"
123
- else if _.isDate(value)
124
- type += "timestamp"
125
- else if _.isNumber(value)
126
- type += "integer"
127
- else if _.isObject(value)
128
- type += (if is_func then "text" else "json")
129
- else if _.isArray(value)
130
- type += (if is_func then "text" else "array")
131
- else
132
- type += (if is_func then "string" else "text")
133
- type
134
-
135
-
136
- actn.Builder = Builder