arel 1.0.1 → 2.0.0
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.txt +20 -0
- data/Manifest.txt +105 -0
- data/README.markdown +12 -32
- data/Rakefile +17 -0
- data/arel.gemspec +39 -0
- data/lib/arel.rb +30 -9
- data/lib/arel/attributes.rb +20 -0
- data/lib/arel/attributes/attribute.rb +190 -0
- data/lib/arel/compatibility/wheres.rb +33 -0
- data/lib/arel/crud.rb +37 -0
- data/lib/arel/delete_manager.rb +22 -0
- data/lib/arel/deprecated.rb +4 -0
- data/lib/arel/expression.rb +4 -0
- data/lib/arel/expressions.rb +23 -0
- data/lib/arel/insert_manager.rb +34 -0
- data/lib/arel/nodes.rb +44 -0
- data/lib/arel/nodes/and.rb +6 -0
- data/lib/arel/nodes/assignment.rb +6 -0
- data/lib/arel/nodes/avg.rb +6 -0
- data/lib/arel/nodes/between.rb +6 -0
- data/lib/arel/nodes/binary.rb +12 -0
- data/lib/arel/nodes/count.rb +13 -0
- data/lib/arel/nodes/delete_statement.rb +17 -0
- data/lib/arel/nodes/does_not_match.rb +6 -0
- data/lib/arel/nodes/equality.rb +9 -0
- data/lib/arel/nodes/exists.rb +11 -0
- data/lib/arel/nodes/function.rb +18 -0
- data/lib/arel/nodes/greater_than.rb +6 -0
- data/lib/arel/nodes/greater_than_or_equal.rb +6 -0
- data/lib/arel/nodes/group.rb +11 -0
- data/lib/arel/nodes/grouping.rb +11 -0
- data/lib/arel/nodes/having.rb +11 -0
- data/lib/arel/nodes/in.rb +6 -0
- data/lib/arel/nodes/inner_join.rb +6 -0
- data/lib/arel/nodes/insert_statement.rb +19 -0
- data/lib/arel/nodes/join.rb +13 -0
- data/lib/arel/nodes/less_than.rb +6 -0
- data/lib/arel/nodes/less_than_or_equal.rb +6 -0
- data/lib/arel/nodes/lock.rb +6 -0
- data/lib/arel/nodes/matches.rb +6 -0
- data/lib/arel/nodes/max.rb +6 -0
- data/lib/arel/nodes/min.rb +6 -0
- data/lib/arel/nodes/node.rb +30 -0
- data/lib/arel/nodes/not_equal.rb +6 -0
- data/lib/arel/nodes/not_in.rb +6 -0
- data/lib/arel/nodes/offset.rb +11 -0
- data/lib/arel/nodes/on.rb +11 -0
- data/lib/arel/nodes/or.rb +6 -0
- data/lib/arel/nodes/ordering.rb +19 -0
- data/lib/arel/nodes/outer_join.rb +6 -0
- data/lib/arel/nodes/select_core.rb +25 -0
- data/lib/arel/nodes/select_statement.rb +22 -0
- data/lib/arel/nodes/sql_literal.rb +7 -0
- data/lib/arel/nodes/string_join.rb +11 -0
- data/lib/arel/nodes/sum.rb +6 -0
- data/lib/arel/nodes/table_alias.rb +21 -0
- data/lib/arel/nodes/unqualified_column.rb +19 -0
- data/lib/arel/nodes/update_statement.rb +21 -0
- data/lib/arel/nodes/values.rb +12 -0
- data/lib/arel/relation.rb +6 -0
- data/lib/arel/select_manager.rb +203 -0
- data/lib/arel/sql/engine.rb +10 -0
- data/lib/arel/sql_literal.rb +1 -10
- data/lib/arel/table.rb +126 -0
- data/lib/arel/tree_manager.rb +26 -0
- data/lib/arel/update_manager.rb +48 -0
- data/lib/arel/visitors.rb +30 -0
- data/lib/arel/visitors/dot.rb +233 -0
- data/lib/arel/visitors/join_sql.rb +38 -0
- data/lib/arel/visitors/mysql.rb +16 -0
- data/lib/arel/visitors/oracle.rb +69 -0
- data/lib/arel/visitors/order_clauses.rb +9 -0
- data/lib/arel/visitors/postgresql.rb +54 -0
- data/lib/arel/visitors/to_sql.rb +301 -0
- data/lib/arel/visitors/where_sql.rb +9 -0
- data/spec/activerecord_compat_spec.rb +18 -0
- data/spec/attributes/attribute_spec.rb +648 -0
- data/spec/attributes_spec.rb +33 -6
- data/spec/crud_spec.rb +69 -0
- data/spec/delete_manager_spec.rb +53 -0
- data/spec/insert_manager_spec.rb +141 -0
- data/spec/nodes/count_spec.rb +18 -0
- data/spec/nodes/delete_statement_spec.rb +15 -0
- data/spec/nodes/equality_spec.rb +72 -0
- data/spec/nodes/insert_statement_spec.rb +18 -0
- data/spec/nodes/or_spec.rb +20 -0
- data/spec/nodes/select_core_spec.rb +21 -0
- data/spec/nodes/select_statement_spec.rb +14 -0
- data/spec/nodes/sql_literal_spec.rb +26 -0
- data/spec/nodes/sum_spec.rb +12 -0
- data/spec/nodes/update_statement_spec.rb +18 -0
- data/spec/select_manager_spec.rb +581 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +6 -21
- data/spec/support/fake_record.rb +89 -0
- data/spec/support/shared/tree_manager_shared.rb +9 -0
- data/spec/table_spec.rb +176 -0
- data/spec/update_manager_spec.rb +89 -0
- data/spec/visitors/join_sql_spec.rb +35 -0
- data/spec/visitors/oracle_spec.rb +111 -0
- data/spec/visitors/to_sql_spec.rb +134 -0
- metadata +160 -260
- data/lib/arel/algebra.rb +0 -10
- data/lib/arel/algebra/attributes.rb +0 -7
- data/lib/arel/algebra/attributes/attribute.rb +0 -304
- data/lib/arel/algebra/attributes/boolean.rb +0 -21
- data/lib/arel/algebra/attributes/decimal.rb +0 -9
- data/lib/arel/algebra/attributes/float.rb +0 -9
- data/lib/arel/algebra/attributes/integer.rb +0 -10
- data/lib/arel/algebra/attributes/string.rb +0 -10
- data/lib/arel/algebra/attributes/time.rb +0 -6
- data/lib/arel/algebra/core_extensions.rb +0 -3
- data/lib/arel/algebra/core_extensions/hash.rb +0 -7
- data/lib/arel/algebra/core_extensions/object.rb +0 -13
- data/lib/arel/algebra/core_extensions/symbol.rb +0 -9
- data/lib/arel/algebra/expression.rb +0 -56
- data/lib/arel/algebra/header.rb +0 -66
- data/lib/arel/algebra/ordering.rb +0 -31
- data/lib/arel/algebra/predicates.rb +0 -306
- data/lib/arel/algebra/relations.rb +0 -16
- data/lib/arel/algebra/relations/operations/from.rb +0 -14
- data/lib/arel/algebra/relations/operations/group.rb +0 -14
- data/lib/arel/algebra/relations/operations/having.rb +0 -14
- data/lib/arel/algebra/relations/operations/join.rb +0 -103
- data/lib/arel/algebra/relations/operations/lock.rb +0 -10
- data/lib/arel/algebra/relations/operations/order.rb +0 -23
- data/lib/arel/algebra/relations/operations/project.rb +0 -20
- data/lib/arel/algebra/relations/operations/skip.rb +0 -14
- data/lib/arel/algebra/relations/operations/take.rb +0 -18
- data/lib/arel/algebra/relations/operations/where.rb +0 -24
- data/lib/arel/algebra/relations/relation.rb +0 -205
- data/lib/arel/algebra/relations/row.rb +0 -29
- data/lib/arel/algebra/relations/utilities/compound.rb +0 -55
- data/lib/arel/algebra/relations/utilities/externalization.rb +0 -26
- data/lib/arel/algebra/relations/utilities/nil.rb +0 -7
- data/lib/arel/algebra/relations/writes.rb +0 -47
- data/lib/arel/algebra/value.rb +0 -53
- data/lib/arel/engines.rb +0 -2
- data/lib/arel/engines/memory.rb +0 -2
- data/lib/arel/engines/memory/engine.rb +0 -10
- data/lib/arel/engines/memory/relations.rb +0 -2
- data/lib/arel/engines/memory/relations/array.rb +0 -37
- data/lib/arel/engines/memory/relations/operations.rb +0 -9
- data/lib/arel/engines/sql.rb +0 -6
- data/lib/arel/engines/sql/attributes.rb +0 -45
- data/lib/arel/engines/sql/christener.rb +0 -20
- data/lib/arel/engines/sql/compilers/ibm_db_compiler.rb +0 -48
- data/lib/arel/engines/sql/compilers/mysql_compiler.rb +0 -11
- data/lib/arel/engines/sql/compilers/oracle_compiler.rb +0 -106
- data/lib/arel/engines/sql/compilers/postgresql_compiler.rb +0 -50
- data/lib/arel/engines/sql/compilers/sqlite_compiler.rb +0 -9
- data/lib/arel/engines/sql/core_extensions.rb +0 -4
- data/lib/arel/engines/sql/core_extensions/array.rb +0 -24
- data/lib/arel/engines/sql/core_extensions/nil_class.rb +0 -15
- data/lib/arel/engines/sql/core_extensions/object.rb +0 -19
- data/lib/arel/engines/sql/core_extensions/range.rb +0 -19
- data/lib/arel/engines/sql/engine.rb +0 -47
- data/lib/arel/engines/sql/formatters.rb +0 -138
- data/lib/arel/engines/sql/relations.rb +0 -3
- data/lib/arel/engines/sql/relations/compiler.rb +0 -153
- data/lib/arel/engines/sql/relations/table.rb +0 -100
- data/lib/arel/engines/sql/relations/utilities/nil.rb +0 -6
- data/lib/arel/recursion/base_case.rb +0 -13
- data/lib/arel/session.rb +0 -35
- data/lib/arel/version.rb +0 -3
- data/spec/algebra/unit/predicates/binary_spec.rb +0 -35
- data/spec/algebra/unit/predicates/equality_spec.rb +0 -29
- data/spec/algebra/unit/predicates/in_spec.rb +0 -12
- data/spec/algebra/unit/predicates/inequality_spec.rb +0 -32
- data/spec/algebra/unit/predicates/predicate_spec.rb +0 -22
- data/spec/algebra/unit/primitives/attribute_spec.rb +0 -175
- data/spec/algebra/unit/primitives/expression_spec.rb +0 -39
- data/spec/algebra/unit/primitives/value_spec.rb +0 -15
- data/spec/algebra/unit/relations/alias_spec.rb +0 -16
- data/spec/algebra/unit/relations/delete_spec.rb +0 -9
- data/spec/algebra/unit/relations/group_spec.rb +0 -10
- data/spec/algebra/unit/relations/insert_spec.rb +0 -9
- data/spec/algebra/unit/relations/join_spec.rb +0 -18
- data/spec/algebra/unit/relations/order_spec.rb +0 -21
- data/spec/algebra/unit/relations/project_spec.rb +0 -34
- data/spec/algebra/unit/relations/relation_spec.rb +0 -241
- data/spec/algebra/unit/relations/skip_spec.rb +0 -10
- data/spec/algebra/unit/relations/table_spec.rb +0 -38
- data/spec/algebra/unit/relations/take_spec.rb +0 -10
- data/spec/algebra/unit/relations/update_spec.rb +0 -9
- data/spec/algebra/unit/relations/where_spec.rb +0 -19
- data/spec/algebra/unit/session/session_spec.rb +0 -84
- data/spec/attributes/boolean_spec.rb +0 -57
- data/spec/attributes/float_spec.rb +0 -119
- data/spec/attributes/header_spec.rb +0 -42
- data/spec/attributes/integer_spec.rb +0 -119
- data/spec/attributes/string_spec.rb +0 -43
- data/spec/attributes/time_spec.rb +0 -24
- data/spec/engines/memory/integration/joins/cross_engine_spec.rb +0 -61
- data/spec/engines/memory/unit/relations/array_spec.rb +0 -33
- data/spec/engines/memory/unit/relations/insert_spec.rb +0 -28
- data/spec/engines/memory/unit/relations/join_spec.rb +0 -32
- data/spec/engines/memory/unit/relations/order_spec.rb +0 -28
- data/spec/engines/memory/unit/relations/project_spec.rb +0 -27
- data/spec/engines/memory/unit/relations/skip_spec.rb +0 -31
- data/spec/engines/memory/unit/relations/take_spec.rb +0 -28
- data/spec/engines/memory/unit/relations/where_spec.rb +0 -43
- data/spec/engines/sql/integration/joins/with_adjacency_spec.rb +0 -258
- data/spec/engines/sql/integration/joins/with_aggregations_spec.rb +0 -221
- data/spec/engines/sql/integration/joins/with_compounds_spec.rb +0 -137
- data/spec/engines/sql/unit/engine_spec.rb +0 -65
- data/spec/engines/sql/unit/predicates/binary_spec.rb +0 -140
- data/spec/engines/sql/unit/predicates/equality_spec.rb +0 -75
- data/spec/engines/sql/unit/predicates/in_spec.rb +0 -179
- data/spec/engines/sql/unit/predicates/noteq_spec.rb +0 -75
- data/spec/engines/sql/unit/predicates/predicates_spec.rb +0 -79
- data/spec/engines/sql/unit/primitives/attribute_spec.rb +0 -36
- data/spec/engines/sql/unit/primitives/expression_spec.rb +0 -28
- data/spec/engines/sql/unit/primitives/literal_spec.rb +0 -43
- data/spec/engines/sql/unit/primitives/value_spec.rb +0 -29
- data/spec/engines/sql/unit/relations/alias_spec.rb +0 -53
- data/spec/engines/sql/unit/relations/delete_spec.rb +0 -83
- data/spec/engines/sql/unit/relations/from_spec.rb +0 -64
- data/spec/engines/sql/unit/relations/group_spec.rb +0 -72
- data/spec/engines/sql/unit/relations/having_spec.rb +0 -78
- data/spec/engines/sql/unit/relations/insert_spec.rb +0 -143
- data/spec/engines/sql/unit/relations/join_spec.rb +0 -180
- data/spec/engines/sql/unit/relations/lock_spec.rb +0 -86
- data/spec/engines/sql/unit/relations/order_spec.rb +0 -161
- data/spec/engines/sql/unit/relations/project_spec.rb +0 -143
- data/spec/engines/sql/unit/relations/skip_spec.rb +0 -41
- data/spec/engines/sql/unit/relations/table_spec.rb +0 -122
- data/spec/engines/sql/unit/relations/take_spec.rb +0 -75
- data/spec/engines/sql/unit/relations/update_spec.rb +0 -203
- data/spec/engines/sql/unit/relations/where_spec.rb +0 -72
- data/spec/relations/join_spec.rb +0 -42
- data/spec/relations/relation_spec.rb +0 -31
- data/spec/shared/relation_spec.rb +0 -255
- data/spec/sql/christener_spec.rb +0 -70
- data/spec/support/connections/mysql_connection.rb +0 -14
- data/spec/support/connections/oracle_connection.rb +0 -17
- data/spec/support/connections/postgresql_connection.rb +0 -13
- data/spec/support/connections/sqlite3_connection.rb +0 -24
- data/spec/support/guards.rb +0 -28
- data/spec/support/matchers/disambiguate_attributes.rb +0 -28
- data/spec/support/matchers/hash_the_same_as.rb +0 -26
- data/spec/support/matchers/have_rows.rb +0 -18
- data/spec/support/model.rb +0 -67
- data/spec/support/schemas/mysql_schema.rb +0 -26
- data/spec/support/schemas/oracle_schema.rb +0 -20
- data/spec/support/schemas/postgresql_schema.rb +0 -26
- data/spec/support/schemas/sqlite3_schema.rb +0 -26
@@ -1,24 +0,0 @@
|
|
1
|
-
puts "Using native SQLite3"
|
2
|
-
require "active_record"
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
ENV['ADAPTER'] = 'sqlite3'
|
6
|
-
|
7
|
-
db_file = "spec/support/fixtures/fixture_database.sqlite3"
|
8
|
-
|
9
|
-
ActiveRecord::Base.configurations = {
|
10
|
-
"unit" => {
|
11
|
-
:adapter => 'sqlite3',
|
12
|
-
:database => db_file,
|
13
|
-
:timeout => 5000
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
unless File.exist?(db_file)
|
18
|
-
puts "SQLite3 database not found at #{db_file}. Rebuilding it."
|
19
|
-
require 'fileutils'
|
20
|
-
FileUtils.mkdir_p(File.dirname(db_file))
|
21
|
-
sqlite_command = %Q{sqlite3 "#{db_file}" "create table a (a integer); drop table a;"}
|
22
|
-
puts "Executing '#{sqlite_command}'"
|
23
|
-
raise "Seems that there is no sqlite3 executable available" unless system(sqlite_command)
|
24
|
-
end
|
data/spec/support/guards.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module AdapterGuards
|
2
|
-
def adapter_is(*names)
|
3
|
-
names = names.map(&:to_s)
|
4
|
-
names.each{|name| verify_adapter_name(name)}
|
5
|
-
yield if names.include? adapter_name
|
6
|
-
end
|
7
|
-
|
8
|
-
def adapter_is_not(*names)
|
9
|
-
names = names.map(&:to_s)
|
10
|
-
names.each{|name| verify_adapter_name(name)}
|
11
|
-
yield unless names.include? adapter_name
|
12
|
-
end
|
13
|
-
|
14
|
-
def adapter_name
|
15
|
-
name = ActiveRecord::Base.configurations["unit"][:adapter]
|
16
|
-
name = 'oracle' if name == 'oracle_enhanced'
|
17
|
-
verify_adapter_name(name)
|
18
|
-
name
|
19
|
-
end
|
20
|
-
|
21
|
-
def verify_adapter_name(name)
|
22
|
-
raise "Invalid adapter name: #{name}" unless valid_adapters.include?(name.to_s)
|
23
|
-
end
|
24
|
-
|
25
|
-
def valid_adapters
|
26
|
-
%w[mysql postgresql sqlite3 oracle]
|
27
|
-
end
|
28
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Matchers
|
2
|
-
class DisambiguateAttributes
|
3
|
-
def initialize(attributes)
|
4
|
-
@attributes = attributes
|
5
|
-
end
|
6
|
-
|
7
|
-
def matches?(actual)
|
8
|
-
@actual = actual
|
9
|
-
attribute1, attribute2 = @attributes
|
10
|
-
@actual[attribute1].descends_from?(attribute1) &&
|
11
|
-
!@actual[attribute1].descends_from?(attribute2) &&
|
12
|
-
@actual[attribute2].descends_from?(attribute2)
|
13
|
-
end
|
14
|
-
|
15
|
-
def failure_message
|
16
|
-
""
|
17
|
-
# "expected #{@actual} to disambiguate its attributes"
|
18
|
-
end
|
19
|
-
|
20
|
-
def negative_failure_message
|
21
|
-
"expected #{@actual} to not disambiguate its attributes"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def disambiguate_attributes(*attributes)
|
26
|
-
DisambiguateAttributes.new(attributes)
|
27
|
-
end
|
28
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Matchers
|
2
|
-
class HashTheSameAs
|
3
|
-
def initialize(expected)
|
4
|
-
@expected = expected
|
5
|
-
end
|
6
|
-
|
7
|
-
def matches?(actual)
|
8
|
-
@actual = actual
|
9
|
-
hash = {}
|
10
|
-
hash[@expected] = :some_arbitrary_value
|
11
|
-
hash[@actual] == :some_arbitrary_value
|
12
|
-
end
|
13
|
-
|
14
|
-
def failure_message
|
15
|
-
"expected #{@actual} to hash the same as #{@expected}; they must be `eql?` and have the same `#hash` value"
|
16
|
-
end
|
17
|
-
|
18
|
-
def negative_failure_message
|
19
|
-
"expected #{@actual} to hash differently than #{@expected}; they must not be `eql?` or have a differing `#hash` values"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def hash_the_same_as(expected)
|
24
|
-
HashTheSameAs.new(expected)
|
25
|
-
end
|
26
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Matchers
|
2
|
-
def have_rows(expected)
|
3
|
-
simple_matcher "have rows" do |given, matcher|
|
4
|
-
found, got, expected = [], [], expected.map { |r| r.tuple }
|
5
|
-
given.each do |row|
|
6
|
-
got << row.tuple
|
7
|
-
found << expected.find { |r| row.tuple == r }
|
8
|
-
end
|
9
|
-
|
10
|
-
matcher.failure_message = "Expected to get:\n" \
|
11
|
-
"#{expected.map {|r| " #{r.inspect}" }.join("\n")}\n" \
|
12
|
-
"instead, got:\n" \
|
13
|
-
"#{got.map {|r| " #{r.inspect}" }.join("\n")}"
|
14
|
-
|
15
|
-
found.compact.length == expected.length && got.compact.length == expected.length
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/spec/support/model.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
module Arel
|
2
|
-
module Testing
|
3
|
-
class Engine < Arel::Memory::Engine
|
4
|
-
attr_reader :rows
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@rows = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def supports(operation)
|
11
|
-
false
|
12
|
-
end
|
13
|
-
|
14
|
-
def read(relation)
|
15
|
-
case relation
|
16
|
-
when Arel::Take, Arel::Order, Arel::Skip, Arel::Where
|
17
|
-
relation.eval
|
18
|
-
else
|
19
|
-
@rows.dup.map { |r| Row.new(relation, r) }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def create(insert)
|
24
|
-
@rows << insert.record.tuple
|
25
|
-
insert
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Model
|
31
|
-
include Relation
|
32
|
-
|
33
|
-
attr_reader :engine
|
34
|
-
|
35
|
-
def self.build
|
36
|
-
relation = new
|
37
|
-
yield relation
|
38
|
-
relation
|
39
|
-
end
|
40
|
-
|
41
|
-
def initialize
|
42
|
-
@attributes = []
|
43
|
-
end
|
44
|
-
|
45
|
-
def engine(engine = nil)
|
46
|
-
@engine = engine if engine
|
47
|
-
@engine
|
48
|
-
end
|
49
|
-
|
50
|
-
def attribute(name, type)
|
51
|
-
@attributes << type.new(self, name)
|
52
|
-
end
|
53
|
-
|
54
|
-
def attributes
|
55
|
-
Header.new(@attributes)
|
56
|
-
end
|
57
|
-
|
58
|
-
def format(attribute, value)
|
59
|
-
value
|
60
|
-
end
|
61
|
-
|
62
|
-
def insert(row)
|
63
|
-
insert = super Arel::Row.new(self, row)
|
64
|
-
insert.record
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
sql = <<-SQL
|
2
|
-
DROP TABLE IF EXISTS users;
|
3
|
-
CREATE TABLE users (
|
4
|
-
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
5
|
-
name VARCHAR(255) NOT NULL
|
6
|
-
);
|
7
|
-
|
8
|
-
DROP TABLE IF EXISTS photos;
|
9
|
-
CREATE TABLE photos (
|
10
|
-
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
11
|
-
user_id INTEGER NOT NULL,
|
12
|
-
camera_id INTEGER NOT NULL
|
13
|
-
);
|
14
|
-
DROP TABLE IF EXISTS developers;
|
15
|
-
CREATE TABLE developers (
|
16
|
-
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
17
|
-
name VARCHAR(255) NOT NULL,
|
18
|
-
salary INTEGER NOT NULL,
|
19
|
-
department VARCHAR(255) NOT NULL,
|
20
|
-
created_at TIMESTAMP NOT NULL
|
21
|
-
);
|
22
|
-
SQL
|
23
|
-
|
24
|
-
sql.split(/;/).select(&:present?).each do |sql_statement|
|
25
|
-
ActiveRecord::Base.connection.execute sql_statement
|
26
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
ActiveRecord::Schema.define do
|
2
|
-
suppress_messages do
|
3
|
-
create_table :users, :primary_key_trigger => true, :force => true do |t|
|
4
|
-
t.string :name, :limit => 255, :null => false
|
5
|
-
end
|
6
|
-
|
7
|
-
create_table :photos, :primary_key_trigger => true, :force => true do |t|
|
8
|
-
t.integer :user_id
|
9
|
-
t.integer :camera_id
|
10
|
-
end
|
11
|
-
|
12
|
-
create_table :developers, :primary_key_trigger => true, :force => true do |t|
|
13
|
-
t.string :name, :limit => 255, :null => false
|
14
|
-
t.integer :salary
|
15
|
-
t.string :department, :limit => 255, :null => false
|
16
|
-
t.timestamp :created_at, :null => false
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
sql = <<-SQL
|
2
|
-
DROP TABLE IF EXISTS users;
|
3
|
-
CREATE TABLE users (
|
4
|
-
id SERIAL PRIMARY KEY NOT NULL,
|
5
|
-
name VARCHAR(255) NOT NULL
|
6
|
-
);
|
7
|
-
|
8
|
-
DROP TABLE IF EXISTS photos;
|
9
|
-
CREATE TABLE photos (
|
10
|
-
id SERIAL PRIMARY KEY NOT NULL,
|
11
|
-
user_id INTEGER NOT NULL,
|
12
|
-
camera_id INTEGER NOT NULL
|
13
|
-
);
|
14
|
-
DROP TABLE IF EXISTS developers;
|
15
|
-
CREATE TABLE developers (
|
16
|
-
id SERIAL PRIMARY KEY NOT NULL,
|
17
|
-
name VARCHAR(255) NOT NULL,
|
18
|
-
salary INTEGER NOT NULL,
|
19
|
-
department VARCHAR(255) NOT NULL,
|
20
|
-
created_at TIMESTAMP NOT NULL
|
21
|
-
);
|
22
|
-
SQL
|
23
|
-
|
24
|
-
sql.split(/;/).select(&:present?).each do |sql_statement|
|
25
|
-
ActiveRecord::Base.connection.execute sql_statement
|
26
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
sql = <<-SQL
|
2
|
-
DROP TABLE IF EXISTS users;
|
3
|
-
CREATE TABLE users (
|
4
|
-
id INTEGER NOT NULL PRIMARY KEY,
|
5
|
-
name VARCHAR(255) NOT NULL
|
6
|
-
);
|
7
|
-
|
8
|
-
DROP TABLE IF EXISTS photos;
|
9
|
-
CREATE TABLE photos (
|
10
|
-
id INTEGER NOT NULL PRIMARY KEY,
|
11
|
-
user_id INTEGER NOT NULL,
|
12
|
-
camera_id INTEGER NOT NULL
|
13
|
-
);
|
14
|
-
DROP TABLE IF EXISTS developers;
|
15
|
-
CREATE TABLE developers (
|
16
|
-
id INTEGER NOT NULL PRIMARY KEY,
|
17
|
-
name VARCHAR(255) NOT NULL,
|
18
|
-
salary INTEGER NOT NULL,
|
19
|
-
department VARCHAR(255) NOT NULL,
|
20
|
-
created_at TIMESTAMP NOT NULL
|
21
|
-
);
|
22
|
-
SQL
|
23
|
-
|
24
|
-
sql.split(/;/).select(&:present?).each do |sql_statement|
|
25
|
-
ActiveRecord::Base.connection.execute sql_statement
|
26
|
-
end
|