sequel-more-validations 1.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 +7 -0
- data/lib/sequel/plugins/more_validations.rb +57 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9932378edb17d7ed7908c89cf477edd399d568d4ace1c8c483ea7535f2c304ab
|
4
|
+
data.tar.gz: 60d11202a965923a0597c49b62daa38c74d2e1a65d46ba15f562439b81934405
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3e77b24de709a095ad9a5fb096d5423ef1aaf36d3a7ecb6feec978fc9f8bcc99e98b507e0df2de8d9e793b87f4d0602abcd95404ae02abbb8f1bff6cdafd03f0
|
7
|
+
data.tar.gz: 2d4b41f0875bacf03a395aaa2ce119dd5a1d910e5530b2711c6e863b90798f15038a47b62a591186cf8254f8519fa528b46120561f89c69fe8e1d0163ad19196
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sequel"
|
4
|
+
require "sequel/model"
|
5
|
+
|
6
|
+
# Additional validations for Sequel models.
|
7
|
+
# See README or InstanceMethods for more info.
|
8
|
+
module Sequel::Plugins::MoreValidations
|
9
|
+
VERSION = "1.0.0"
|
10
|
+
|
11
|
+
module InstanceMethods
|
12
|
+
# Ensures that only one of the passed columns is not null
|
13
|
+
def validates_mutually_exclusive(*cols)
|
14
|
+
set_cols = cols.find_all { |col| !self[col].nil? }
|
15
|
+
|
16
|
+
self.errors.add(set_cols.first, "is mutually exclusive with other set columns #{set_cols[1..].join(', ')}") if
|
17
|
+
set_cols.length > 1
|
18
|
+
end
|
19
|
+
|
20
|
+
# Ensures that at least one of the passed columns is not null
|
21
|
+
def validates_at_least_one_of(*cols)
|
22
|
+
self.errors.add(cols.first, "must be set if all of #{cols[1..].join(', ')} are null") unless
|
23
|
+
cols.any? { |col| !self[col].nil? }
|
24
|
+
end
|
25
|
+
|
26
|
+
# Ensures that one and only one of the passed columns is not null
|
27
|
+
def validates_exactly_one_of(*cols)
|
28
|
+
self.validates_at_least_one_of(*cols)
|
29
|
+
self.validates_mutually_exclusive(*cols)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Ensures the value in the column is an IPAddr or can be parsed as one.
|
33
|
+
def validates_ip_address(col)
|
34
|
+
return if self[col].respond_to?(:ipv4?)
|
35
|
+
begin
|
36
|
+
IPAddr.new(self[col])
|
37
|
+
rescue IPAddr::Error
|
38
|
+
self.errors.add(col, "is not a valid INET address")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Ensure the value in the column is non-nil, non-empty, and the start is before the end.
|
43
|
+
def validates_pgrange(col)
|
44
|
+
val = self[col]
|
45
|
+
if val.nil?
|
46
|
+
self.errors.add(col, "cannot be nil")
|
47
|
+
return
|
48
|
+
end
|
49
|
+
return if val.end > val.begin
|
50
|
+
if val.end == val.begin
|
51
|
+
self.errors.add(col, "cannot be empty")
|
52
|
+
return
|
53
|
+
end
|
54
|
+
self.errors.add(col, "lower bound must be less than upper bound")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sequel-more-validations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lithic Tech
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-core
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.10'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.11'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.11'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop-performance
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop-sequel
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sequel
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '5.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '5.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1'
|
111
|
+
description: 'sequel-more-validations is a Sequel model plugin that provides common
|
112
|
+
helplful validations.
|
113
|
+
|
114
|
+
'
|
115
|
+
email: hello@lithic.tech
|
116
|
+
executables: []
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- lib/sequel/plugins/more_validations.rb
|
121
|
+
homepage: https://github.com/lithictech/sequel-more-validations
|
122
|
+
licenses:
|
123
|
+
- MIT
|
124
|
+
metadata:
|
125
|
+
rubygems_mfa_required: 'true'
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 2.7.0
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubygems_version: 3.1.6
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: Extra validations for Ruby Sequel models.
|
145
|
+
test_files: []
|