ar2gostruct 0.2.0 → 0.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/CHANGELOG.md +4 -0
- data/lib/ar2gostruct/builder/orm/gorm.rb +2 -2
- data/lib/ar2gostruct/builder/orm/validator.rb +48 -0
- data/lib/ar2gostruct/converter.rb +18 -3
- data/lib/ar2gostruct/version.rb +1 -1
- data/lib/ar2gostruct.rb +1 -0
- data/spec/ar2gostruct/builder/orm/gorm_spec.rb +1 -1
- data/spec/ar2gostruct/builder/orm/validator_spec.rb +38 -0
- data/spec/support/models.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed2f1667ec57d8767c34154cba06b76f9acfcca2
|
4
|
+
data.tar.gz: f065da8c5d60b56de535d5863e5ce4ed4f701287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8aafb9b733b11a883bffb1e17c3208c4e5c9056f13830ac3a673c80c651879044e72854c531eff8a84663144abda7e99055d62551c5010530980acfd565b73d4
|
7
|
+
data.tar.gz: d942cb77850cff9743f3b71c26d463466e41a4cbebb09a4dc1a147c6908a38b66f774122d9cf888107e423b93eeddc2586e5cefd82974252085a3487ffa23dab
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.2.1
|
4
|
+
* Add support for Package validator https://github.com/go-validator/validator
|
5
|
+
* Allow multiple orm
|
6
|
+
|
3
7
|
## 0.2.0
|
4
8
|
* Add support for GORM ORM https://github.com/jinzhu/gorm
|
5
9
|
* Ass support Active Record Associations(has_many, has_one, belongs_to)
|
@@ -16,10 +16,10 @@ module Ar2gostruct
|
|
16
16
|
# set size
|
17
17
|
if col.type == :string
|
18
18
|
# SQL type
|
19
|
-
if col.sql_type
|
19
|
+
if col.sql_type && /\A\w+\(\d+\)/.match(col.sql_type)
|
20
20
|
orm_option << "type:#{col.sql_type}"
|
21
21
|
end
|
22
|
-
orm_option << "size:#{col.limit}"
|
22
|
+
orm_option << "size:#{col.limit}" if col.limit
|
23
23
|
end
|
24
24
|
|
25
25
|
if orm_option.present?
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# validator https://github.com/go-validator/validator
|
2
|
+
require "ar2gostruct/builder/orm/base"
|
3
|
+
module Ar2gostruct
|
4
|
+
module Builder
|
5
|
+
module ORM
|
6
|
+
class Validator < Base
|
7
|
+
|
8
|
+
def get_option(col)
|
9
|
+
orm_option = []
|
10
|
+
|
11
|
+
# not null Constraint
|
12
|
+
orm_option << "nonzero" unless col.null
|
13
|
+
|
14
|
+
validators = self.klass.validators_on col.name
|
15
|
+
|
16
|
+
validators.each do |validator|
|
17
|
+
orm_option.concat get_validation_rules(validator)
|
18
|
+
end
|
19
|
+
|
20
|
+
if orm_option.present?
|
21
|
+
return "validate:\"#{orm_option.join(TAG_SEPARATOR)}\""
|
22
|
+
else
|
23
|
+
return nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_validation_rules(validator)
|
28
|
+
rules = []
|
29
|
+
case validator.class.to_s
|
30
|
+
# when "ActiveModel::Validations::FormatValidator"
|
31
|
+
# if validator.options && validator.options[:with]
|
32
|
+
# rules << "regexp=#{validator.options[:with]}"
|
33
|
+
# end
|
34
|
+
when "ActiveModel::Validations::LengthValidator"
|
35
|
+
if validator.options
|
36
|
+
rules << "min=#{validator.options[:minimum]}" if validator.options[:maximum]
|
37
|
+
rules << "max=#{validator.options[:maximum]}" if validator.options[:maximum]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
return rules
|
41
|
+
rescue => e
|
42
|
+
[]
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -76,13 +76,28 @@ module Ar2gostruct
|
|
76
76
|
|
77
77
|
def get_orm_options(col)
|
78
78
|
tags ||= []
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
self.orm.split(",").each do |orm_name|
|
80
|
+
builder = get_orm_builder orm_name
|
81
|
+
if builder
|
82
|
+
option = builder.get_option col
|
83
|
+
tags << option if option
|
84
|
+
end
|
85
|
+
end
|
86
|
+
return tags
|
82
87
|
rescue => e
|
83
88
|
[]
|
84
89
|
end
|
85
90
|
|
91
|
+
def get_orm_builder(orm_name)
|
92
|
+
prefix = "Ar2gostruct::Builder::ORM::"
|
93
|
+
builder = if Object.const_defined?("#{prefix}#{orm_name.upcase}")
|
94
|
+
"#{prefix}#{orm_name.upcase}"
|
95
|
+
elsif Object.const_defined?("#{prefix}#{orm_name.camelize}")
|
96
|
+
"#{prefix}#{orm_name.camelize}"
|
97
|
+
end
|
98
|
+
return builder.constantize.new(self.klass) if builder
|
99
|
+
end
|
100
|
+
|
86
101
|
def get_struct_name
|
87
102
|
if self.plural
|
88
103
|
self.klass.table_name.camelize
|
data/lib/ar2gostruct/version.rb
CHANGED
data/lib/ar2gostruct.rb
CHANGED
@@ -10,7 +10,7 @@ describe "Ar2gostruct::Builder::ORM::GORM" do
|
|
10
10
|
expect(result).to eq("sql:\"not null\"")
|
11
11
|
# email
|
12
12
|
result = orm_converter.get_option User.columns[1]
|
13
|
-
expect(result).to eq("sql:\"not null
|
13
|
+
expect(result).to eq("sql:\"not null\"")
|
14
14
|
# sign_in_count
|
15
15
|
result = orm_converter.get_option User.columns[2]
|
16
16
|
expect(result).to eq("sql:\"not null\"")
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Ar2gostruct::Builder::ORM::Validator" do
|
4
|
+
|
5
|
+
describe "#get_option" do
|
6
|
+
it "should output Validator format tags" do
|
7
|
+
orm_converter = Ar2gostruct::Builder::ORM::Validator.new User
|
8
|
+
# id
|
9
|
+
result = orm_converter.get_option User.columns[0]
|
10
|
+
expect(result).to eq("validate:\"nonzero\"")
|
11
|
+
# email
|
12
|
+
result = orm_converter.get_option User.columns[1]
|
13
|
+
expect(result).to eq("validate:\"nonzero,min=1,max=120\"")
|
14
|
+
# sign_in_count
|
15
|
+
result = orm_converter.get_option User.columns[2]
|
16
|
+
expect(result).to eq("validate:\"nonzero\"")
|
17
|
+
# current_sign_in_at
|
18
|
+
result = orm_converter.get_option User.columns[3]
|
19
|
+
expect(result).to eq(nil)
|
20
|
+
# last_sign_in_at
|
21
|
+
result = orm_converter.get_option User.columns[4]
|
22
|
+
expect(result).to eq(nil)
|
23
|
+
# current_sign_in_ip
|
24
|
+
result = orm_converter.get_option User.columns[5]
|
25
|
+
expect(result).to eq(nil)
|
26
|
+
# last_sign_in_ip
|
27
|
+
result = orm_converter.get_option User.columns[6]
|
28
|
+
expect(result).to eq(nil)
|
29
|
+
# created_at
|
30
|
+
result = orm_converter.get_option User.columns[7]
|
31
|
+
expect(result).to eq(nil)
|
32
|
+
# updated_at
|
33
|
+
result = orm_converter.get_option User.columns[8]
|
34
|
+
expect(result).to eq(nil)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/spec/support/models.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ar2gostruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tatsuo Kaniwa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- lib/ar2gostruct/builder/orm/base.rb
|
91
91
|
- lib/ar2gostruct/builder/orm/gorm.rb
|
92
92
|
- lib/ar2gostruct/builder/orm/qbs.rb
|
93
|
+
- lib/ar2gostruct/builder/orm/validator.rb
|
93
94
|
- lib/ar2gostruct/const.rb
|
94
95
|
- lib/ar2gostruct/converter.rb
|
95
96
|
- lib/ar2gostruct/gostruct.rb
|
@@ -100,6 +101,7 @@ files:
|
|
100
101
|
- spec/ar2gostruct/builder/association_spec.rb
|
101
102
|
- spec/ar2gostruct/builder/orm/gorm_spec.rb
|
102
103
|
- spec/ar2gostruct/builder/orm/qbs_spec.rb
|
104
|
+
- spec/ar2gostruct/builder/orm/validator_spec.rb
|
103
105
|
- spec/db/database.yml
|
104
106
|
- spec/db/migrate/0001_create_tables.rb
|
105
107
|
- spec/spec_helper.rb
|
@@ -128,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
130
|
version: '0'
|
129
131
|
requirements: []
|
130
132
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.4.6
|
132
134
|
signing_key:
|
133
135
|
specification_version: 4
|
134
136
|
summary: Generate Go Struct from activerecord models
|