mv-sqlite 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.
- checksums.yaml +4 -4
- data/{README.rdoc → README.md} +65 -26
- data/lib/mv-sqlite.rb +29 -1
- data/lib/mv/sqlite/active_record/connection_adapters/sqlite3_adapter_decorator.rb +19 -0
- data/lib/mv/sqlite/constraint/builder/trigger.rb +47 -0
- data/lib/mv/sqlite/railtie.rb +11 -0
- data/lib/mv/sqlite/validation/builder/trigger/absence.rb +15 -0
- data/lib/mv/sqlite/validation/builder/trigger/exclusion.rb +17 -0
- data/lib/mv/sqlite/validation/builder/trigger/inclusion.rb +17 -0
- data/lib/mv/sqlite/validation/builder/trigger/length.rb +15 -0
- data/lib/mv/sqlite/validation/builder/trigger/mysql_datetime_values.rb +20 -0
- data/lib/mv/sqlite/validation/builder/trigger/presence.rb +15 -0
- data/lib/mv/sqlite/validation/builder/trigger/trigger_column.rb +17 -0
- data/lib/mv/sqlite/validation/builder/trigger/uniqueness.rb +15 -0
- metadata +74 -8
- data/lib/migration_validators/adapters/sqlite.rb +0 -75
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 314b0696046e0c4425057f118d22c0754383ce87
|
4
|
+
data.tar.gz: 796ee45a44c3f1eeb08e298de607dfe16246b7af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88d5c04c79b375a62e49cda6fdbca0a8c1130f739d717de4122dfb7b7473300dc6b693a4e9419d49299c2c9281e6bb4476df8c2ec8c959f396529db7ed8d14e9
|
7
|
+
data.tar.gz: 949f2606844f304ecd98824888f1c600e20833fa28b34b579947dbeadf60472aa0a2223932eb24535e95c1c2cc649b2f79c0f9d3b41f75fa26a7ca5d6720baa0
|
data/{README.rdoc → README.md}
RENAMED
@@ -1,3 +1,8 @@
|
|
1
|
+
[](https://bitdeli.com/free "Bitdeli Badge")
|
2
|
+
[](https://travis-ci.org/vprokopchuk256/mv-sqlite)
|
3
|
+
[](https://coveralls.io/r/vprokopchuk256/mv-sqlite?branch=master)
|
4
|
+
[](http://badge.fury.io/rb/mv-sqlite)
|
5
|
+
|
1
6
|
# Introduction
|
2
7
|
|
3
8
|
mv-sqlite is the SQLite driver for Migration Validators project (details here: https://github.com/vprokopchuk256/mv-core)
|
@@ -11,20 +16,20 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
11
16
|
validate uniqueness of the column 'column_name':
|
12
17
|
|
13
18
|
```ruby
|
14
|
-
|
19
|
+
validates :table_name, :column_name, uniqueness: true
|
15
20
|
```
|
16
21
|
|
17
22
|
define validation as trigger with spefified failure message:
|
18
23
|
|
19
24
|
```ruby
|
20
|
-
|
21
|
-
|
25
|
+
validates :table_name, :column_name,
|
26
|
+
uniqueness: { message: 'Error message', as: :trigger }
|
22
27
|
```
|
23
28
|
|
24
29
|
define validation as unique index:
|
25
30
|
|
26
31
|
```ruby
|
27
|
-
|
32
|
+
validates :table_name, :column_name, uniqueness: { as: :index }
|
28
33
|
```
|
29
34
|
|
30
35
|
all above are available in a create and change table blocks:
|
@@ -37,7 +42,7 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
37
42
|
|
38
43
|
```ruby
|
39
44
|
change :table_name do |t|
|
40
|
-
t.change :column_name, :string,
|
45
|
+
t.change :column_name, :string, validates: { uniqueness: false }
|
41
46
|
end
|
42
47
|
```
|
43
48
|
|
@@ -59,22 +64,22 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
59
64
|
column value length should be more than 4 symbols and less than 9. Otherwise 'Wrong length message' error will be raised:
|
60
65
|
|
61
66
|
```ruby
|
62
|
-
|
63
|
-
|
64
|
-
|
67
|
+
validates :table_name, :column_name,
|
68
|
+
length: { in: 5..8,
|
69
|
+
message: 'Wrong length message' }
|
65
70
|
```
|
66
71
|
|
67
72
|
allow `NULL`:
|
68
73
|
|
69
74
|
```ruby
|
70
|
-
|
71
|
-
|
75
|
+
validates :table_name, :column_name,
|
76
|
+
length: { is: 3, allow_nil: true}
|
72
77
|
```
|
73
78
|
|
74
79
|
allow blank values:
|
75
80
|
|
76
81
|
```ruby
|
77
|
-
|
82
|
+
validates :table_name, :column_name,
|
78
83
|
length: { maximum: 3,
|
79
84
|
too_long: 'Value is longer than 3 symbols' }
|
80
85
|
```
|
@@ -103,15 +108,15 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
103
108
|
valid values array:
|
104
109
|
|
105
110
|
```ruby
|
106
|
-
|
111
|
+
validates :table_name, :column_name, inclusion: { in: [1, 2, 3] }
|
107
112
|
```
|
108
113
|
|
109
114
|
with failure message specified:
|
110
115
|
|
111
116
|
```ruby
|
112
|
-
|
113
|
-
|
114
|
-
|
117
|
+
validates :table_name, :column_name,
|
118
|
+
inclusion: { in: [1, 2, 3],
|
119
|
+
message: "Column 'column_name' should be equal to 1 or 2 or 3" }
|
115
120
|
```
|
116
121
|
|
117
122
|
Options:
|
@@ -131,25 +136,24 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
131
136
|
exclude 1, 2, and 3:
|
132
137
|
|
133
138
|
```ruby
|
134
|
-
|
139
|
+
validates :table_name, :column_name, exclusion: { in: [1, 2, 3] }
|
135
140
|
```
|
136
141
|
|
137
142
|
exclude values with specified failure message:
|
138
143
|
|
139
144
|
```ruby
|
140
|
-
|
145
|
+
validates :table_name, :column_name,
|
141
146
|
exclusion: {
|
142
147
|
in: [1, 2, 3],
|
143
|
-
:
|
148
|
+
message: "Column 'column_name' should not be equal to 1 or 2 or 3"
|
144
149
|
}
|
145
150
|
```
|
146
151
|
|
147
152
|
performs verification on update only:
|
148
153
|
|
149
154
|
```ruby
|
150
|
-
|
151
|
-
|
152
|
-
on: :update }
|
155
|
+
validates :table_name, :column_name, exclusion: { in: [1, 2, 3],
|
156
|
+
on: :update }
|
153
157
|
```
|
154
158
|
|
155
159
|
Options:
|
@@ -170,20 +174,20 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
170
174
|
simple presence validator:
|
171
175
|
|
172
176
|
```ruby
|
173
|
-
|
177
|
+
validates :table_name, :column_name, presence: true
|
174
178
|
```
|
175
179
|
|
176
180
|
with failure message:
|
177
181
|
|
178
182
|
```ruby
|
179
|
-
|
180
|
-
|
183
|
+
validates :table_name, :column_name,
|
184
|
+
presence: { message: 'value should not be empty' }
|
181
185
|
```
|
182
186
|
|
183
187
|
performs verification only when new record is inserted:
|
184
188
|
|
185
189
|
```ruby
|
186
|
-
|
190
|
+
validates :table_name, :column_name,
|
187
191
|
presence: { message: 'value should not be empty',
|
188
192
|
on: :create }
|
189
193
|
```
|
@@ -198,6 +202,41 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
198
202
|
* `:allow_blank` - ignore validation for blank values. Default value: `false`
|
199
203
|
* `:as` - defines the way how constraint will be implemented. Possible values: `[:trigger]`
|
200
204
|
|
205
|
+
### absence
|
206
|
+
|
207
|
+
Examples:
|
208
|
+
|
209
|
+
simple absence validator:
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
validates :table_name, :column_name, absence: true
|
213
|
+
```
|
214
|
+
|
215
|
+
with failure message:
|
216
|
+
|
217
|
+
```ruby
|
218
|
+
validates :table_name, :column_name,
|
219
|
+
absence: { message: 'value should be empty' }
|
220
|
+
```
|
221
|
+
|
222
|
+
performs verification only when new record is inserted:
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
validates :table_name, :column_name,
|
226
|
+
absence: { message: 'value should be empty',
|
227
|
+
on: :create }
|
228
|
+
```
|
229
|
+
|
230
|
+
Options:
|
231
|
+
|
232
|
+
* `:message` - message that should be shown if validation failed
|
233
|
+
* `:on` - validation event. Possible values: `[:save, :update, :create]`. Default value: `:save`
|
234
|
+
* `:create_tigger_name` - Name of the 'before insert' trigger
|
235
|
+
* `:update_tigger_name` - Name of the 'before update' trigger
|
236
|
+
* `:allow_nil` - ignore validation for `nil` values. Default value: `false`
|
237
|
+
* `:allow_blank` - ignore validation for blank values. Default value: `false`
|
238
|
+
* `:as` - defines the way how constraint will be implemented. Possible values: `[:trigger]`
|
239
|
+
|
201
240
|
## Contributing to mv-sqlite
|
202
241
|
|
203
242
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
@@ -210,7 +249,7 @@ mv-sqlite is the SQLite driver for Migration Validators project (details here: h
|
|
210
249
|
|
211
250
|
## Copyright
|
212
251
|
|
213
|
-
Copyright (c)
|
252
|
+
Copyright (c) 2015 Valeriy Prokopchuk. See LICENSE.txt for
|
214
253
|
further details.
|
215
254
|
|
216
255
|
|
data/lib/mv-sqlite.rb
CHANGED
@@ -1,4 +1,32 @@
|
|
1
1
|
require 'mv-core'
|
2
|
+
require 'mv/sqlite/railtie'
|
3
|
+
|
4
|
+
require 'mv/sqlite/constraint/builder/trigger'
|
5
|
+
|
6
|
+
require 'mv/sqlite/validation/builder/trigger/exclusion'
|
7
|
+
require 'mv/sqlite/validation/builder/trigger/inclusion'
|
8
|
+
require 'mv/sqlite/validation/builder/trigger/length'
|
9
|
+
require 'mv/sqlite/validation/builder/trigger/presence'
|
10
|
+
require 'mv/sqlite/validation/builder/trigger/absence'
|
11
|
+
require 'mv/sqlite/validation/builder/trigger/uniqueness'
|
12
|
+
|
13
|
+
ActiveSupport.on_load(:mv_core) do
|
14
|
+
|
15
|
+
#constraint builders
|
16
|
+
Mv::Core::Constraint::Builder::Factory.register_builders(
|
17
|
+
Mv::Core::Constraint::Trigger => Mv::Sqlite::Constraint::Builder::Trigger,
|
18
|
+
)
|
19
|
+
|
20
|
+
#validation builders in trigger
|
21
|
+
Mv::Sqlite::Constraint::Builder::Trigger.validation_builders_factory.register_builders(
|
22
|
+
Mv::Core::Validation::Exclusion => Mv::Sqlite::Validation::Builder::Trigger::Exclusion,
|
23
|
+
Mv::Core::Validation::Inclusion => Mv::Sqlite::Validation::Builder::Trigger::Inclusion,
|
24
|
+
Mv::Core::Validation::Length => Mv::Sqlite::Validation::Builder::Trigger::Length,
|
25
|
+
Mv::Core::Validation::Presence => Mv::Sqlite::Validation::Builder::Trigger::Presence,
|
26
|
+
Mv::Core::Validation::Absence => Mv::Sqlite::Validation::Builder::Trigger::Absence,
|
27
|
+
Mv::Core::Validation::Uniqueness => Mv::Sqlite::Validation::Builder::Trigger::Uniqueness
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
2
31
|
|
3
|
-
require File.expand_path(File.dirname(__FILE__)) + '/migration_validators/adapters/sqlite'
|
4
32
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Mv
|
2
|
+
module Sqlite
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
module Sqlite3AdapterDecorator
|
6
|
+
include Mv::Core::ActiveRecord::ConnectionAdapters::AbstractAdapterDecorator
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def alter_table(table_name, options = {})
|
11
|
+
Mv::Core::Migration::Base.with_suppressed_validations do
|
12
|
+
super
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Mv
|
2
|
+
module Sqlite
|
3
|
+
module Constraint
|
4
|
+
module Builder
|
5
|
+
class Trigger < Mv::Core::Constraint::Builder::Trigger
|
6
|
+
def create
|
7
|
+
validation_builders.group_by(&:table_name).each do |table_name, validations|
|
8
|
+
db.execute(drop_trigger_statement(table_name))
|
9
|
+
db.execute(create_trigger_statement(table_name))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def delete
|
14
|
+
validation_builders.group_by(&:table_name).each do |table_name, validations|
|
15
|
+
db.execute(drop_trigger_statement(table_name))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def update new_constraint_builder
|
20
|
+
delete
|
21
|
+
new_constraint_builder.create
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
|
27
|
+
def drop_trigger_statement table_name
|
28
|
+
"DROP TRIGGER IF EXISTS #{name};"
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_trigger_statement table_name
|
32
|
+
"CREATE TRIGGER #{name} BEFORE #{update? ? 'UPDATE' : 'INSERT'} ON #{table_name} FOR EACH ROW
|
33
|
+
BEGIN
|
34
|
+
#{trigger_body(table_name)};
|
35
|
+
END;"
|
36
|
+
end
|
37
|
+
|
38
|
+
def trigger_body(table_name)
|
39
|
+
validation_builders.select{|b| b.table_name == table_name }.collect(&:conditions).flatten.collect do |condition|
|
40
|
+
"SELECT RAISE(ABORT, '#{condition[:message]}') WHERE NOT(#{condition[:statement]})".squish
|
41
|
+
end.join("; \n")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'mv/sqlite/active_record/connection_adapters/sqlite3_adapter_decorator'
|
2
|
+
|
3
|
+
module Mv
|
4
|
+
module Sqlite
|
5
|
+
class Railtie < ::Rails::Railtie
|
6
|
+
initializer 'mv-sqlite.initialization', after: 'active_record.initialize_database' do
|
7
|
+
::ActiveRecord::ConnectionAdapters::SQLite3Adapter.send(:prepend, Mv::Sqlite::ActiveRecord::ConnectionAdapters::Sqlite3AdapterDecorator)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
2
|
+
|
3
|
+
module Mv
|
4
|
+
module Sqlite
|
5
|
+
module Validation
|
6
|
+
module Builder
|
7
|
+
module Trigger
|
8
|
+
class Absence < Mv::Core::Validation::Builder::Absence
|
9
|
+
include TriggerColumn
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/mysql_datetime_values'
|
2
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
3
|
+
|
4
|
+
module Mv
|
5
|
+
module Sqlite
|
6
|
+
module Validation
|
7
|
+
module Builder
|
8
|
+
module Trigger
|
9
|
+
class Exclusion < Mv::Core::Validation::Builder::Exclusion
|
10
|
+
include MysqlDatetimeValues
|
11
|
+
include TriggerColumn
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/mysql_datetime_values'
|
2
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
3
|
+
|
4
|
+
module Mv
|
5
|
+
module Sqlite
|
6
|
+
module Validation
|
7
|
+
module Builder
|
8
|
+
module Trigger
|
9
|
+
class Inclusion < Mv::Core::Validation::Builder::Inclusion
|
10
|
+
include MysqlDatetimeValues
|
11
|
+
include TriggerColumn
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
2
|
+
|
3
|
+
module Mv
|
4
|
+
module Sqlite
|
5
|
+
module Validation
|
6
|
+
module Builder
|
7
|
+
module Trigger
|
8
|
+
class Length < Mv::Core::Validation::Builder::Length
|
9
|
+
include TriggerColumn
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Mv
|
2
|
+
module Sqlite
|
3
|
+
module Validation
|
4
|
+
module Builder
|
5
|
+
module Trigger
|
6
|
+
module MysqlDatetimeValues
|
7
|
+
protected
|
8
|
+
|
9
|
+
def db_value value
|
10
|
+
return "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')" if value.is_a?(DateTime)
|
11
|
+
return "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')" if value.is_a?(Time)
|
12
|
+
return "date('#{value.strftime('%Y-%m-%d')}')" if value.is_a?(Date)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
2
|
+
|
3
|
+
module Mv
|
4
|
+
module Sqlite
|
5
|
+
module Validation
|
6
|
+
module Builder
|
7
|
+
module Trigger
|
8
|
+
class Presence < Mv::Core::Validation::Builder::Presence
|
9
|
+
include TriggerColumn
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mv/sqlite/validation/builder/trigger/trigger_column'
|
2
|
+
|
3
|
+
module Mv
|
4
|
+
module Sqlite
|
5
|
+
module Validation
|
6
|
+
module Builder
|
7
|
+
module Trigger
|
8
|
+
class Uniqueness < Mv::Core::Validation::Builder::Uniqueness
|
9
|
+
include TriggerColumn
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mv-sqlite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valeriy Prokopchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.1'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: sqlite3
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,14 +44,14 @@ dependencies:
|
|
30
44
|
requirements:
|
31
45
|
- - ~>
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '2.0'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - ~>
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '2.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: jeweler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,18 +66,70 @@ dependencies:
|
|
52
66
|
- - ~>
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '2.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-its
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '4.5'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '4.5'
|
55
111
|
description: Migration Validators project sqlite driver
|
56
112
|
email: vprokopchuk@gmail.com
|
57
113
|
executables: []
|
58
114
|
extensions: []
|
59
115
|
extra_rdoc_files:
|
60
116
|
- LICENSE.txt
|
61
|
-
- README.
|
117
|
+
- README.md
|
62
118
|
files:
|
63
119
|
- LICENSE.txt
|
64
|
-
- README.
|
65
|
-
- lib/migration_validators/adapters/sqlite.rb
|
120
|
+
- README.md
|
66
121
|
- lib/mv-sqlite.rb
|
122
|
+
- lib/mv/sqlite/active_record/connection_adapters/sqlite3_adapter_decorator.rb
|
123
|
+
- lib/mv/sqlite/constraint/builder/trigger.rb
|
124
|
+
- lib/mv/sqlite/railtie.rb
|
125
|
+
- lib/mv/sqlite/validation/builder/trigger/absence.rb
|
126
|
+
- lib/mv/sqlite/validation/builder/trigger/exclusion.rb
|
127
|
+
- lib/mv/sqlite/validation/builder/trigger/inclusion.rb
|
128
|
+
- lib/mv/sqlite/validation/builder/trigger/length.rb
|
129
|
+
- lib/mv/sqlite/validation/builder/trigger/mysql_datetime_values.rb
|
130
|
+
- lib/mv/sqlite/validation/builder/trigger/presence.rb
|
131
|
+
- lib/mv/sqlite/validation/builder/trigger/trigger_column.rb
|
132
|
+
- lib/mv/sqlite/validation/builder/trigger/uniqueness.rb
|
67
133
|
homepage: http://github.com/vprokopchuk256/mv-sqlite
|
68
134
|
licenses:
|
69
135
|
- MIT
|
@@ -84,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
150
|
version: '0'
|
85
151
|
requirements: []
|
86
152
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.4.
|
153
|
+
rubygems_version: 2.4.4
|
88
154
|
signing_key:
|
89
155
|
specification_version: 4
|
90
156
|
summary: Migration Validators project. SQLite driver
|
@@ -1,75 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module Adapters
|
3
|
-
class Sqlite < MigrationValidators::Adapters::Base
|
4
|
-
def name
|
5
|
-
"SQLite Migration Validators Adapter"
|
6
|
-
end
|
7
|
-
|
8
|
-
define_base_syntax
|
9
|
-
define_base_validators
|
10
|
-
define_base_containers
|
11
|
-
|
12
|
-
container :insert_trigger do
|
13
|
-
operation :db_value do |value|
|
14
|
-
case value.class.name
|
15
|
-
when "String" then "'#{value}'"
|
16
|
-
when "Date" then "date('#{value.strftime('%Y-%m-%d')}')"
|
17
|
-
when "DateTime" then "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')"
|
18
|
-
when "Time" then "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')"
|
19
|
-
else value.to_s
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
operation :bind_to_error do |stmt, error_message|
|
24
|
-
"SELECT RAISE(ABORT, '#{error_message}')
|
25
|
-
WHERE NOT(#{stmt})"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
container :update_trigger do
|
30
|
-
operation :db_value do |value|
|
31
|
-
case value.class.name
|
32
|
-
when "String" then "'#{value}'"
|
33
|
-
when "Date" then "date('#{value.strftime('%Y-%m-%d')}')"
|
34
|
-
when "DateTime" then "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')"
|
35
|
-
when "Time" then "datetime('#{value.strftime('%Y-%m-%d %H:%M:%S')}')"
|
36
|
-
else value.to_s
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
operation :bind_to_error do |stmt, error_message|
|
41
|
-
"SELECT RAISE(ABORT, '#{error_message}')
|
42
|
-
WHERE NOT(#{stmt})"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
route :presence, :trigger, :default => true do
|
48
|
-
to :insert_trigger, :if => {:on => [:save, :create, nil]}
|
49
|
-
to :update_trigger, :if => {:on => [:save, :update, nil]}
|
50
|
-
end
|
51
|
-
|
52
|
-
route :inclusion, :trigger, :default => true do
|
53
|
-
to :insert_trigger, :if => {:on => [:save, :create, nil]}
|
54
|
-
to :update_trigger, :if => {:on => [:save, :update, nil]}
|
55
|
-
end
|
56
|
-
|
57
|
-
route :exclusion, :trigger, :default => true do
|
58
|
-
to :insert_trigger, :if => {:on => [:save, :create, nil]}
|
59
|
-
to :update_trigger, :if => {:on => [:save, :update, nil]}
|
60
|
-
end
|
61
|
-
|
62
|
-
route :length, :trigger, :default => true do
|
63
|
-
to :insert_trigger, :if => {:on => [:save, :create, nil]}
|
64
|
-
to :update_trigger, :if => {:on => [:save, :update, nil]}
|
65
|
-
end
|
66
|
-
|
67
|
-
route :uniqueness, :trigger do
|
68
|
-
to :insert_trigger, :if => {:on => [:save, :create, nil]}
|
69
|
-
to :update_trigger, :if => {:on => [:save, :update, nil]}
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
MigrationValidators.register_adapter! "sqlite3", Sqlite
|
74
|
-
end
|
75
|
-
end
|