sql_migrations 2.1.1 → 2.2.1
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.
- checksums.yaml +4 -4
- data/lib/sql_migrations/fixture.rb +3 -3
- data/lib/sql_migrations/migration.rb +3 -3
- data/lib/sql_migrations/script_file.rb +59 -0
- data/lib/sql_migrations/seed.rb +3 -3
- data/lib/sql_migrations/sql_script.rb +11 -20
- data/lib/sql_migrations/version.rb +1 -1
- data/lib/sql_migrations.rb +1 -1
- metadata +3 -3
- data/lib/sql_migrations/find_scripts.rb +0 -66
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7eefab432a38d45308f4a3e59cc8516151a6ff7
|
4
|
+
data.tar.gz: acb7edb97f69f2b6d7447306bb024cacb024765f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c83d6b1ee4783fd09d935be49c812323d331b0023a148a42eda184b9d85afc714aee7f047075c70a51c806e4c1af202df393addf96c7a5da7c4b269ab69b826
|
7
|
+
data.tar.gz: c134ae9d84e65f66d8bbe07273a63531bb2c94c3a8bab4def1ca678325a4461e28a77e4d6d2df8afe24c0fd1f37c9ef9b2b2a4241a3c71f204afcd9c491e7841
|
@@ -2,12 +2,12 @@ module SqlMigrations
|
|
2
2
|
# Fixture class
|
3
3
|
#
|
4
4
|
class Fixture < SqlScript
|
5
|
-
def self.find(
|
6
|
-
super(
|
5
|
+
def self.find(database_name)
|
6
|
+
super(database_name, :fixture)
|
7
7
|
end
|
8
8
|
|
9
9
|
def to_s
|
10
|
-
"Fixture #{@name} for `#{@
|
10
|
+
"Fixture #{@name} for `#{@database_name}` database, datetime: #{@date + @time}"
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -2,12 +2,12 @@ module SqlMigrations
|
|
2
2
|
# Migration class
|
3
3
|
#
|
4
4
|
class Migration < SqlScript
|
5
|
-
def self.find(
|
6
|
-
super(
|
5
|
+
def self.find(database_name)
|
6
|
+
super(database_name, :migration)
|
7
7
|
end
|
8
8
|
|
9
9
|
def to_s
|
10
|
-
"Migration #{@name} for `#{@
|
10
|
+
"Migration #{@name} for `#{@database_name}` database, datetime: #{@date + @time}"
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module SqlMigrations
|
2
|
+
# Class representing script file
|
3
|
+
#
|
4
|
+
class ScriptFile
|
5
|
+
attr_reader :name, :time, :date, :database_name, :path
|
6
|
+
|
7
|
+
def initialize(path, database_name, type)
|
8
|
+
@filename,
|
9
|
+
@base_directory,
|
10
|
+
@parent_directory = path_elements(path)
|
11
|
+
@path = path
|
12
|
+
@type = type.to_s
|
13
|
+
@database_name = database_name
|
14
|
+
@date, @time, @name = match_regexp(@filename) if @filename
|
15
|
+
end
|
16
|
+
|
17
|
+
def content
|
18
|
+
File.read(@path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def valid?
|
22
|
+
(@name && @time && @date && @database_name && matches_directories?) ? true : false
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def path_elements(path)
|
28
|
+
_filename, _base_directory, _parent_directory =
|
29
|
+
path.split(File::SEPARATOR).last(3).reverse
|
30
|
+
end
|
31
|
+
|
32
|
+
def match_regexp(filename)
|
33
|
+
_, date, time, name =
|
34
|
+
filename.match(/(\d{8})_(\d{6})_(.*)?\.sql/).to_a
|
35
|
+
[date, time, name]
|
36
|
+
end
|
37
|
+
|
38
|
+
def matches_directories?
|
39
|
+
if @database_name == :default
|
40
|
+
file_in_type_base_directory? || file_in_database_directory?
|
41
|
+
else
|
42
|
+
file_in_database_directory?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def file_in_type_base_directory?
|
47
|
+
@base_directory == "#{@type}s"
|
48
|
+
end
|
49
|
+
|
50
|
+
def file_in_type_parent_directory?
|
51
|
+
@parent_directory == "#{@type}s"
|
52
|
+
end
|
53
|
+
|
54
|
+
def file_in_database_directory?
|
55
|
+
file_in_type_parent_directory? &&
|
56
|
+
(@base_directory == @database_name.to_s)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/sql_migrations/seed.rb
CHANGED
@@ -2,12 +2,12 @@ module SqlMigrations
|
|
2
2
|
# Seed class
|
3
3
|
#
|
4
4
|
class Seed < SqlScript
|
5
|
-
def self.find(
|
6
|
-
super(
|
5
|
+
def self.find(database_name)
|
6
|
+
super(database_name, :seed)
|
7
7
|
end
|
8
8
|
|
9
9
|
def to_s
|
10
|
-
"Seed data #{@name} for `#{@
|
10
|
+
"Seed data #{@name} for `#{@database_name}` database, datetime: #{@date + @time}"
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -1,17 +1,10 @@
|
|
1
1
|
module SqlMigrations
|
2
2
|
# SqlScript class
|
3
3
|
#
|
4
|
-
class SqlScript
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@content = content
|
9
|
-
@date = opts[:date]
|
10
|
-
@time = opts[:time]
|
11
|
-
@name = opts[:name]
|
12
|
-
@db_name = opts[:db_name]
|
13
|
-
@type = self.class.name.downcase.split('::').last
|
14
|
-
@datetime = (@date + @time).to_i
|
4
|
+
class SqlScript < ScriptFile
|
5
|
+
def initialize(path, database_name, type)
|
6
|
+
super
|
7
|
+
@datetime = (@date.to_s + @time.to_s).to_i
|
15
8
|
end
|
16
9
|
|
17
10
|
def execute(db)
|
@@ -35,22 +28,20 @@ module SqlMigrations
|
|
35
28
|
def statements
|
36
29
|
separator = Config.options[:separator]
|
37
30
|
if separator
|
38
|
-
statements =
|
31
|
+
statements = content.split(separator)
|
39
32
|
statements.collect!(&:strip)
|
40
33
|
statements.reject(&:empty?)
|
41
34
|
else
|
42
|
-
[
|
35
|
+
[content]
|
43
36
|
end
|
44
37
|
end
|
45
38
|
|
46
|
-
def self.find(
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
new(content, parameters)
|
39
|
+
def self.find(database_name, type)
|
40
|
+
scripts = []
|
41
|
+
Find.find(Dir.pwd) do |path|
|
42
|
+
candidate = new(path, database_name, type)
|
43
|
+
scripts << candidate if candidate.valid?
|
52
44
|
end
|
53
|
-
|
54
45
|
scripts.sort_by { |file| (file.date + file.time).to_i }
|
55
46
|
end
|
56
47
|
|
data/lib/sql_migrations.rb
CHANGED
@@ -8,7 +8,7 @@ require 'erb'
|
|
8
8
|
require 'sql_migrations/version'
|
9
9
|
require 'sql_migrations/database'
|
10
10
|
require 'sql_migrations/config'
|
11
|
-
require 'sql_migrations/
|
11
|
+
require 'sql_migrations/script_file'
|
12
12
|
require 'sql_migrations/sql_script'
|
13
13
|
require 'sql_migrations/migration'
|
14
14
|
require 'sql_migrations/seed'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sql_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Bizon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -140,9 +140,9 @@ files:
|
|
140
140
|
- lib/sql_migrations.rb
|
141
141
|
- lib/sql_migrations/config.rb
|
142
142
|
- lib/sql_migrations/database.rb
|
143
|
-
- lib/sql_migrations/find_scripts.rb
|
144
143
|
- lib/sql_migrations/fixture.rb
|
145
144
|
- lib/sql_migrations/migration.rb
|
145
|
+
- lib/sql_migrations/script_file.rb
|
146
146
|
- lib/sql_migrations/seed.rb
|
147
147
|
- lib/sql_migrations/sql_script.rb
|
148
148
|
- lib/sql_migrations/tasks/list.rake
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module SqlMigrations
|
2
|
-
# Class for finding sql scripts
|
3
|
-
#
|
4
|
-
class FindScripts
|
5
|
-
class << self
|
6
|
-
def find(db_name, type)
|
7
|
-
files = []
|
8
|
-
Find.find(Dir.pwd) do |path|
|
9
|
-
file_parameters = match_file(db_name, type, path)
|
10
|
-
next unless file_parameters
|
11
|
-
file_parameters.merge!(path: path)
|
12
|
-
files << file_parameters
|
13
|
-
end
|
14
|
-
files
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def match_file(db_dir, type, path)
|
20
|
-
# parent_dir/base_dir/filename_that_matches_regexp.sql
|
21
|
-
_filename, base_dir, parent_dir = path.split(File::SEPARATOR).last(3).reverse
|
22
|
-
|
23
|
-
# Only files that match agains regexp will do
|
24
|
-
file_parameters = file_match_regexp(File.basename(path))
|
25
|
-
return nil unless file_parameters
|
26
|
-
|
27
|
-
# Only files that lay in specific directory structure will do
|
28
|
-
file_database = file_match_directories(parent_dir, base_dir, db_dir, "#{type}s")
|
29
|
-
return nil unless file_database
|
30
|
-
|
31
|
-
{ date: file_parameters[1], time: file_parameters[2],
|
32
|
-
name: file_parameters[3], db_name: file_database }
|
33
|
-
end
|
34
|
-
|
35
|
-
def file_match_regexp(file_name)
|
36
|
-
file_name.match(/(\d{8})_(\d{6})_(.*)?\.sql/)
|
37
|
-
end
|
38
|
-
|
39
|
-
def file_match_directories(parent_dir, base_dir, db_dir, type)
|
40
|
-
# example: migrations/migration_file.sql
|
41
|
-
file_in_type_base_dir = (base_dir == type.to_s)
|
42
|
-
# example: migrations/some_database/migration_file.sql
|
43
|
-
file_in_type_parent_dir = (parent_dir == type.to_s)
|
44
|
-
# example migrations/some_database/migration_file.sql
|
45
|
-
file_in_db_dir = (base_dir == db_dir.to_s)
|
46
|
-
|
47
|
-
file_in_valid_db_dir = (file_in_type_parent_dir && file_in_db_dir)
|
48
|
-
|
49
|
-
# If we are matching script assigned to :default database
|
50
|
-
# scripts can be placed in base_dir or in parent dir indicating type
|
51
|
-
# and in :default base_dir
|
52
|
-
if db_dir == :default
|
53
|
-
matches = file_in_type_base_dir || file_in_valid_db_dir
|
54
|
-
file_database = :default
|
55
|
-
else
|
56
|
-
# Otherwise only files for specific type dir (migration/fixture/seed)
|
57
|
-
# and specific database dir apply
|
58
|
-
matches = file_in_valid_db_dir
|
59
|
-
file_database = base_dir.to_sym
|
60
|
-
end
|
61
|
-
|
62
|
-
matches ? file_database : nil
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|