activerecord-postgresql-extensions 0.0.7
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.
- data/MIT-LICENSE +23 -0
- data/README.rdoc +32 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/lib/activerecord-postgresql-extensions.rb +30 -0
- data/lib/postgresql_extensions/foreign_key_associations.rb +367 -0
- data/lib/postgresql_extensions/postgresql_adapter_extensions.rb +646 -0
- data/lib/postgresql_extensions/postgresql_constraints.rb +579 -0
- data/lib/postgresql_extensions/postgresql_functions.rb +345 -0
- data/lib/postgresql_extensions/postgresql_geometry.rb +212 -0
- data/lib/postgresql_extensions/postgresql_indexes.rb +219 -0
- data/lib/postgresql_extensions/postgresql_languages.rb +80 -0
- data/lib/postgresql_extensions/postgresql_permissions.rb +322 -0
- data/lib/postgresql_extensions/postgresql_rules.rb +112 -0
- data/lib/postgresql_extensions/postgresql_schemas.rb +49 -0
- data/lib/postgresql_extensions/postgresql_sequences.rb +222 -0
- data/lib/postgresql_extensions/postgresql_tables.rb +308 -0
- data/lib/postgresql_extensions/postgresql_triggers.rb +131 -0
- data/lib/postgresql_extensions/postgresql_types.rb +17 -0
- data/lib/postgresql_extensions/postgresql_views.rb +103 -0
- data/postgresql-extensions.gemspec +50 -0
- data/test/adapter_test.rb +45 -0
- data/test/constraints_test.rb +98 -0
- data/test/functions_test.rb +112 -0
- data/test/geometry_test.rb +43 -0
- data/test/index_test.rb +68 -0
- data/test/languages_test.rb +48 -0
- data/test/permissions_test.rb +163 -0
- data/test/rules_test.rb +32 -0
- data/test/schemas_test.rb +43 -0
- data/test/sequences_test.rb +90 -0
- data/test/tables_test.rb +49 -0
- data/test/test_helper.rb +64 -0
- metadata +97 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class SchemasTests < Test::Unit::TestCase
|
6
|
+
include PostgreSQLExtensionsTestHelper
|
7
|
+
|
8
|
+
def test_create_schema
|
9
|
+
Mig.create_schema(:foo)
|
10
|
+
Mig.create_schema(:foo, :authorization => 'bar')
|
11
|
+
|
12
|
+
assert_equal([
|
13
|
+
"CREATE SCHEMA \"foo\"",
|
14
|
+
"CREATE SCHEMA \"foo\" AUTHORIZATION \"bar\""
|
15
|
+
], statements)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_drop_schema
|
19
|
+
Mig.drop_schema(:foo)
|
20
|
+
Mig.drop_schema(:foo, :if_exists => true, :cascade => true)
|
21
|
+
|
22
|
+
assert_equal([
|
23
|
+
"DROP SCHEMA \"foo\"",
|
24
|
+
"DROP SCHEMA IF EXISTS \"foo\" CASCADE"
|
25
|
+
], statements)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_alter_schema_name
|
29
|
+
Mig.alter_schema_name(:foo, :bar)
|
30
|
+
|
31
|
+
assert_equal([
|
32
|
+
"ALTER SCHEMA \"foo\" RENAME TO \"bar\""
|
33
|
+
], statements)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_alter_schema_owner
|
37
|
+
Mig.alter_schema_owner(:foo, :bar)
|
38
|
+
|
39
|
+
assert_equal([
|
40
|
+
"ALTER SCHEMA \"foo\" OWNER TO \"bar\""
|
41
|
+
], statements)
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class SequenceTests < Test::Unit::TestCase
|
6
|
+
include PostgreSQLExtensionsTestHelper
|
7
|
+
|
8
|
+
def test_create_sequence
|
9
|
+
Mig.create_sequence(
|
10
|
+
'what_a_sequence_of_events',
|
11
|
+
:start => 10
|
12
|
+
)
|
13
|
+
|
14
|
+
Mig.create_sequence(
|
15
|
+
'what_a_sequence_of_events',
|
16
|
+
:increment => 2,
|
17
|
+
:cache => 2,
|
18
|
+
:min_value => nil,
|
19
|
+
:max_value => 10,
|
20
|
+
:owned_by => [ :foo, :id ]
|
21
|
+
)
|
22
|
+
|
23
|
+
assert_equal([
|
24
|
+
"CREATE SEQUENCE \"what_a_sequence_of_events\" START WITH 10",
|
25
|
+
"CREATE SEQUENCE \"what_a_sequence_of_events\" INCREMENT BY 2 NO MINVALUE MAXVALUE 10 CACHE 2 OWNED BY \"foo\".\"id\""
|
26
|
+
], statements)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_drop_sequence
|
30
|
+
Mig.drop_sequence(
|
31
|
+
:foo_id_seq,
|
32
|
+
:if_exists => true,
|
33
|
+
:cascade => true
|
34
|
+
)
|
35
|
+
|
36
|
+
assert_equal([
|
37
|
+
"DROP SEQUENCE IF EXISTS \"foo_id_seq\" CASCADE"
|
38
|
+
], statements)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_rename_sequence
|
42
|
+
Mig.rename_sequence(:foo, :bar)
|
43
|
+
|
44
|
+
assert_equal([
|
45
|
+
'ALTER SEQUENCE "foo" RENAME TO "bar"'
|
46
|
+
], statements)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_alter_sequence_schema
|
50
|
+
Mig.alter_sequence_schema(:foo, :bar)
|
51
|
+
Mig.alter_sequence_schema(:foo, :public)
|
52
|
+
|
53
|
+
assert_equal([
|
54
|
+
'ALTER SEQUENCE "foo" SET SCHEMA "bar"',
|
55
|
+
'ALTER SEQUENCE "foo" SET SCHEMA PUBLIC',
|
56
|
+
], statements)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_set_sequence_value
|
60
|
+
Mig.set_sequence_value(:foo, 42)
|
61
|
+
Mig.set_sequence_value(:foo, 42, :is_called => false)
|
62
|
+
|
63
|
+
assert_equal([
|
64
|
+
"SELECT setval('foo', 42, true)",
|
65
|
+
"SELECT setval('foo', 42, false)"
|
66
|
+
], statements)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_create_sequence
|
70
|
+
Mig.alter_sequence(
|
71
|
+
'what_a_sequence_of_events',
|
72
|
+
:restart_with => 10
|
73
|
+
)
|
74
|
+
|
75
|
+
Mig.alter_sequence(
|
76
|
+
'what_a_sequence_of_events',
|
77
|
+
:start => 10,
|
78
|
+
:increment => 2,
|
79
|
+
:cache => 2,
|
80
|
+
:min_value => nil,
|
81
|
+
:max_value => 10,
|
82
|
+
:owned_by => [ :foo, :id ]
|
83
|
+
)
|
84
|
+
|
85
|
+
assert_equal([
|
86
|
+
"ALTER SEQUENCE \"what_a_sequence_of_events\" RESTART WITH 10",
|
87
|
+
"ALTER SEQUENCE \"what_a_sequence_of_events\" INCREMENT BY 2 NO MINVALUE MAXVALUE 10 START WITH 10 CACHE 2 OWNED BY \"foo\".\"id\""
|
88
|
+
], statements)
|
89
|
+
end
|
90
|
+
end
|
data/test/tables_test.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class TablesTests < Test::Unit::TestCase
|
6
|
+
include PostgreSQLExtensionsTestHelper
|
7
|
+
|
8
|
+
def test_foreign_key_in_column_definition
|
9
|
+
Mig.create_table('foo') do |t|
|
10
|
+
t.integer :foo_id, :references => {
|
11
|
+
:table => :foo,
|
12
|
+
:on_delete => :set_null,
|
13
|
+
:on_update => :cascade
|
14
|
+
}
|
15
|
+
|
16
|
+
t.integer :bar_id, :references => :bar
|
17
|
+
|
18
|
+
t.integer :baz_id, :references => [ :baz ]
|
19
|
+
|
20
|
+
t.foreign_key [ :schabba_id, :doo_id ], :bar, [ :schabba_id, :doo_id ]
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_equal([
|
24
|
+
%{CREATE TABLE "foo" (
|
25
|
+
"id" serial primary key,
|
26
|
+
"foo_id" integer,
|
27
|
+
"bar_id" integer,
|
28
|
+
"baz_id" integer,
|
29
|
+
FOREIGN KEY ("foo_id") REFERENCES "foo" ON DELETE SET NULL ON UPDATE CASCADE,
|
30
|
+
FOREIGN KEY ("bar_id") REFERENCES "bar",
|
31
|
+
FOREIGN KEY ("baz_id") REFERENCES "baz",
|
32
|
+
FOREIGN KEY ("schabba_id", "doo_id") REFERENCES "bar" ("schabba_id", "doo_id")
|
33
|
+
)} ], statements)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_default_with_expression
|
37
|
+
Mig.create_table('foo') do |t|
|
38
|
+
t.integer :foo_id, :default => { :expression => '1 + 1' }
|
39
|
+
t.integer :bar_id, :default => '1 + 1'
|
40
|
+
end
|
41
|
+
|
42
|
+
assert_equal([
|
43
|
+
%{CREATE TABLE "foo" (
|
44
|
+
"id" serial primary key,
|
45
|
+
"foo_id" integer DEFAULT 1 + 1,
|
46
|
+
"bar_id" integer DEFAULT '1 + 1'
|
47
|
+
)} ], statements)
|
48
|
+
end
|
49
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
|
2
|
+
ACTIVERECORD_GEM_VERSION = ENV['ACTIVERECORD_GEM_VERSION'] || '~> 3.0.3'
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
gem 'activerecord', ACTIVERECORD_GEM_VERSION
|
6
|
+
|
7
|
+
require 'active_record'
|
8
|
+
require 'test/unit'
|
9
|
+
require File.join(File.dirname(__FILE__), *%w{ .. lib activerecord-postgresql-extensions })
|
10
|
+
|
11
|
+
puts "Testing against ActiveRecord #{Gem.loaded_specs['activerecord'].version.to_s}"
|
12
|
+
|
13
|
+
ActiveRecord::Base.configurations = {
|
14
|
+
'arunit' => {
|
15
|
+
:adapter => 'postgresql',
|
16
|
+
:database => 'postgresql_extensions_unit_tests',
|
17
|
+
:min_messages => 'warning'
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
ActiveRecord::Base.establish_connection 'arunit'
|
22
|
+
#ActiveRecord::Base.connection.drop_database('postgresql_extensions_unit_tests')
|
23
|
+
#ActiveRecord::Base.connection.create_database('postgresql_extensions_unit_tests')
|
24
|
+
|
25
|
+
ARBC = ActiveRecord::Base.connection
|
26
|
+
|
27
|
+
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
|
28
|
+
def statements
|
29
|
+
@statements ||= []
|
30
|
+
end
|
31
|
+
|
32
|
+
def execute_with_statement_capture(sql, name = nil)
|
33
|
+
statements << sql
|
34
|
+
#execute_without_statement_capture(sql, name)
|
35
|
+
end
|
36
|
+
alias_method_chain :execute, :statement_capture
|
37
|
+
|
38
|
+
def query_with_statement_capture(sql, name = nil)
|
39
|
+
statements << sql
|
40
|
+
#query_without_statement_capture(sql, name)
|
41
|
+
end
|
42
|
+
alias_method_chain :query, :statement_capture
|
43
|
+
|
44
|
+
def clear_statements!
|
45
|
+
@statements = []
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
module PostgreSQLExtensionsTestHelper
|
50
|
+
def clear_statements!
|
51
|
+
ActiveRecord::Base.connection.clear_statements!
|
52
|
+
end
|
53
|
+
|
54
|
+
def statements
|
55
|
+
ActiveRecord::Base.connection.statements
|
56
|
+
end
|
57
|
+
|
58
|
+
def setup
|
59
|
+
clear_statements!
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
class Mig < ActiveRecord::Migration
|
64
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: activerecord-postgresql-extensions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- J Smith
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-06-28 00:00:00 Z
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: A whole bunch of extensions the ActiveRecord PostgreSQL adapter.
|
22
|
+
email: code@zoocasa.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- README.rdoc
|
29
|
+
files:
|
30
|
+
- MIT-LICENSE
|
31
|
+
- README.rdoc
|
32
|
+
- Rakefile
|
33
|
+
- VERSION
|
34
|
+
- lib/activerecord-postgresql-extensions.rb
|
35
|
+
- lib/postgresql_extensions/foreign_key_associations.rb
|
36
|
+
- lib/postgresql_extensions/postgresql_adapter_extensions.rb
|
37
|
+
- lib/postgresql_extensions/postgresql_constraints.rb
|
38
|
+
- lib/postgresql_extensions/postgresql_functions.rb
|
39
|
+
- lib/postgresql_extensions/postgresql_geometry.rb
|
40
|
+
- lib/postgresql_extensions/postgresql_indexes.rb
|
41
|
+
- lib/postgresql_extensions/postgresql_languages.rb
|
42
|
+
- lib/postgresql_extensions/postgresql_permissions.rb
|
43
|
+
- lib/postgresql_extensions/postgresql_rules.rb
|
44
|
+
- lib/postgresql_extensions/postgresql_schemas.rb
|
45
|
+
- lib/postgresql_extensions/postgresql_sequences.rb
|
46
|
+
- lib/postgresql_extensions/postgresql_tables.rb
|
47
|
+
- lib/postgresql_extensions/postgresql_triggers.rb
|
48
|
+
- lib/postgresql_extensions/postgresql_types.rb
|
49
|
+
- lib/postgresql_extensions/postgresql_views.rb
|
50
|
+
- postgresql-extensions.gemspec
|
51
|
+
- test/adapter_test.rb
|
52
|
+
- test/constraints_test.rb
|
53
|
+
- test/functions_test.rb
|
54
|
+
- test/geometry_test.rb
|
55
|
+
- test/index_test.rb
|
56
|
+
- test/languages_test.rb
|
57
|
+
- test/permissions_test.rb
|
58
|
+
- test/rules_test.rb
|
59
|
+
- test/schemas_test.rb
|
60
|
+
- test/sequences_test.rb
|
61
|
+
- test/tables_test.rb
|
62
|
+
- test/test_helper.rb
|
63
|
+
homepage: http://github.com/zoocasa/activerecord-postgresql-extensions
|
64
|
+
licenses: []
|
65
|
+
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
version: "0"
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
requirements: []
|
90
|
+
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 1.7.2
|
93
|
+
signing_key:
|
94
|
+
specification_version: 3
|
95
|
+
summary: A whole bunch of extensions the ActiveRecord PostgreSQL adapter.
|
96
|
+
test_files: []
|
97
|
+
|