liquigen 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/bin/liquigen +7 -1
- data/lib/liquigen/scaffold/config.rb +1 -0
- data/lib/liquigen/scaffold/controller.rb +24 -15
- data/lib/liquigen/scaffold/entity.rb +16 -7
- data/lib/liquigen/scaffold/repository.rb +1 -1
- data/lib/liquigen/scaffold/schema.rb +79 -0
- data/lib/liquigen/type_map.rb +18 -1
- data/lib/liquigen/version.rb +1 -1
- data/lib/liquigen.rb +7 -0
- data/spec/liquigen/scaffold/entity_spec.rb +6 -0
- data/spec/liquigen/scaffold/repository_spec.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77e765c5a3fed036596b75bce927a3ed1b815abdbdab5e90fc3cb16488f5e789
|
4
|
+
data.tar.gz: d438ac018101fe443603fec30cfc4e22b20a18bf9ce9a447fb1557fdd7f9dfac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e806d0c261790219380ee0ac6be34eef31f3178c2e7354bb2ceb3d19cddaeb048aff3ed870bf74374768ca77b78b7df99317455d2e0804c5d3933ddf8fe9e09
|
7
|
+
data.tar.gz: 7444b3942f02cc76e9afe440967e4d9b4fcd08ae2325175e112004a7d70be434086abfe2af71da7f9bf51e8abe937719d68942e5fb040093b71fd280f6517dc6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/bin/liquigen
CHANGED
@@ -167,17 +167,23 @@ class App
|
|
167
167
|
c.switch :entity
|
168
168
|
|
169
169
|
c.desc 'generating the controller'
|
170
|
-
c.default_value
|
170
|
+
c.default_value true
|
171
171
|
c.switch :controller
|
172
172
|
|
173
173
|
c.desc 'generating the repository'
|
174
174
|
c.default_value false
|
175
175
|
c.switch :repository
|
176
176
|
|
177
|
+
c.desc 'generating the schema statement'
|
178
|
+
c.default_value true
|
179
|
+
c.switch :schema
|
180
|
+
|
177
181
|
c.action do |_, options, args|
|
178
182
|
Liquigen::Scaffold::Entity.new(options[:n], args).process if options[:entity]
|
179
183
|
Liquigen::Scaffold::Controller.new(options[:n], args).process if options[:controller]
|
180
184
|
Liquigen::Scaffold::Repository.new(options[:n], args).process if options[:repository]
|
185
|
+
Liquigen::Scaffold::Schema.new(options[:n], args).process if options[:schema]
|
186
|
+
Liquigen::Handlers::CreateTable.new(options[:n], args).process
|
181
187
|
end
|
182
188
|
end
|
183
189
|
|
@@ -16,15 +16,14 @@ module Liquigen::Scaffold
|
|
16
16
|
[
|
17
17
|
"package #{current_package};",
|
18
18
|
'',
|
19
|
-
'import com.dyg.
|
20
|
-
|
21
|
-
'import com.dyg.lib.rest.controller.
|
22
|
-
'import com.dyg.lib.rest.controller.Update;',
|
23
|
-
"import #{Liquigen.repository_package_name}.#{name.singularize.camelize}Repo;",
|
19
|
+
'import com.dyg.backend.controller.auth.HasPermissionOrRoot;',
|
20
|
+
"import com.dyg.backend.entity.#{name.camelize};",
|
21
|
+
'import com.dyg.lib.rest.controller.RestCRUD;',
|
24
22
|
'import lombok.Getter;',
|
25
|
-
'import org.springframework.beans.factory.annotation.Autowired;',
|
26
23
|
'import org.springframework.web.bind.annotation.RequestMapping;',
|
27
24
|
'import org.springframework.web.bind.annotation.RestController;',
|
25
|
+
'',
|
26
|
+
'import static com.dyg.lib.rest.controller.KeySpecCollection.permit;',
|
28
27
|
''
|
29
28
|
]
|
30
29
|
end
|
@@ -33,23 +32,33 @@ module Liquigen::Scaffold
|
|
33
32
|
[
|
34
33
|
'@RestController',
|
35
34
|
"@RequestMapping(\"/#{name.underscore.pluralize}\")",
|
36
|
-
|
35
|
+
'@HasPermissionOrRoot',
|
36
|
+
"public class #{name.pluralize.camelize}#{file_append} implements RestCRUD<#{name.camelize}> {"
|
37
37
|
]
|
38
38
|
end
|
39
39
|
|
40
|
+
def permit_params
|
41
|
+
lines = []
|
42
|
+
skip_ones = %w[id created_at updated_at available]
|
43
|
+
props.each do |property|
|
44
|
+
key, value = property.to_s.split(':')
|
45
|
+
next if skip_ones.include?(key.underscore)
|
46
|
+
|
47
|
+
lines += ["\"#{key}\""]
|
48
|
+
end
|
49
|
+
lines
|
50
|
+
end
|
51
|
+
|
40
52
|
def methods_lines
|
41
53
|
[
|
42
|
-
'private final static Object[] PERMIT_PARAMS = {"name"};',
|
43
54
|
'',
|
44
|
-
'@Autowired',
|
45
55
|
'@Getter',
|
46
|
-
"private #{
|
56
|
+
"private final Object[] updatePermit = {#{permit_params.join(', ')}};",
|
47
57
|
'',
|
48
|
-
|
49
|
-
'
|
50
|
-
'',
|
51
|
-
'
|
52
|
-
'public Object[] updatePermit() { return PERMIT_PARAMS; }'
|
58
|
+
|
59
|
+
'@Getter',
|
60
|
+
'private final Object[] createPermit = permit(updatePermit);',
|
61
|
+
''
|
53
62
|
]
|
54
63
|
end
|
55
64
|
end
|
@@ -9,10 +9,14 @@ module Liquigen::Scaffold
|
|
9
9
|
def import_lines
|
10
10
|
[
|
11
11
|
"package #{current_package};",
|
12
|
-
'import lombok.
|
12
|
+
'import lombok.Getter;',
|
13
|
+
'import lombok.Setter;',
|
13
14
|
'import lombok.experimental.Accessors;',
|
14
15
|
'',
|
15
16
|
'import javax.persistence.Entity;',
|
17
|
+
'import javax.persistence.OneToOne;',
|
18
|
+
'import javax.persistence.OneToMany;',
|
19
|
+
'import javax.persistence.ManyToMany;',
|
16
20
|
''
|
17
21
|
]
|
18
22
|
end
|
@@ -20,7 +24,8 @@ module Liquigen::Scaffold
|
|
20
24
|
def class_lines
|
21
25
|
[
|
22
26
|
"@Entity(name = \"#{name.underscore.pluralize}\")",
|
23
|
-
'@
|
27
|
+
'@Getter',
|
28
|
+
'@Setter',
|
24
29
|
'@Accessors(chain = true)',
|
25
30
|
"public class #{name.singularize.camelize} extends FakeDeleteBaseEntity {"
|
26
31
|
]
|
@@ -28,14 +33,18 @@ module Liquigen::Scaffold
|
|
28
33
|
|
29
34
|
def methods_lines
|
30
35
|
lines = []
|
31
|
-
skip_ones = %w[id
|
32
|
-
props.
|
33
|
-
key, value = property.split(':')
|
36
|
+
skip_ones = %w[id created_at updated_at available]
|
37
|
+
props.each do |property|
|
38
|
+
key, value = property.to_s.split(':')
|
34
39
|
next if skip_ones.include?(key.underscore)
|
35
40
|
|
36
|
-
lines += [
|
37
|
-
|
41
|
+
lines += [
|
42
|
+
'//@OneToOne',
|
43
|
+
"private #{Liquigen::TypeMap.new(value).java_type} #{key.camelize(:lower)};",
|
44
|
+
''
|
45
|
+
]
|
38
46
|
end
|
47
|
+
lines
|
39
48
|
end
|
40
49
|
end
|
41
50
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'liquigen/type_map'
|
2
|
+
|
3
|
+
module Liquigen::Scaffold
|
4
|
+
class Schema < Base
|
5
|
+
def current_package
|
6
|
+
Liquigen.schema_package_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def import_lines
|
10
|
+
[
|
11
|
+
"package #{current_package};",
|
12
|
+
'',
|
13
|
+
'import com.dyg.main.config.Constants;',
|
14
|
+
'import com.dyg.schemas.*;',
|
15
|
+
'import lombok.Getter;',
|
16
|
+
'import lombok.Setter;',
|
17
|
+
'',
|
18
|
+
'import java.util.Date;'
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
def class_lines
|
23
|
+
[
|
24
|
+
"@Getter",
|
25
|
+
'@Setter',
|
26
|
+
"@PresentationSchema(name = \"#{name.singularize}\")",
|
27
|
+
"public class #{name.singularize.camelize} {"
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
def methods_lines
|
32
|
+
lines = []
|
33
|
+
skip_ones = %w[id created_at updated_at]
|
34
|
+
lines += [
|
35
|
+
'@PresentationField(primary = true, i18nKey = Constants.I18nCommon.Property.ID, type = FieldType.Number)',
|
36
|
+
'@PresentationColumn(type = ColumnType.LinkShow, width = "50px")',
|
37
|
+
'@PresentationDetailField',
|
38
|
+
'private Long id;',
|
39
|
+
''
|
40
|
+
]
|
41
|
+
props.each do |property|
|
42
|
+
key, value = property.to_s.split(':')
|
43
|
+
next if skip_ones.include?(key.underscore)
|
44
|
+
next if key.casecmp('available').zero?
|
45
|
+
|
46
|
+
type = Liquigen::TypeMap.new(value).java_type
|
47
|
+
stype = Liquigen::TypeMap.new(value).statement_type
|
48
|
+
|
49
|
+
if (stype && !stype.size.zero?)
|
50
|
+
lines += ["@PresentationField(type = FieldType.#{stype})"]
|
51
|
+
else
|
52
|
+
lines += ["@PresentationField//(i18nKey = Constants.I18nCommon.Property.#{key.upcase})"]
|
53
|
+
end
|
54
|
+
|
55
|
+
lines += [
|
56
|
+
'@PresentationColumn',
|
57
|
+
'@PresentationFormField(rules = { @PresentationRule(required = true) })',
|
58
|
+
'@PresentationDetailField',
|
59
|
+
'//@PresentationSearchField',
|
60
|
+
"private #{type} #{key.camelize(:lower)};",
|
61
|
+
''
|
62
|
+
]
|
63
|
+
end
|
64
|
+
|
65
|
+
lines += [
|
66
|
+
'@PresentationField(type = FieldType.Datetime, i18nKey = Constants.I18nCommon.Property.CREATED_AT)',
|
67
|
+
'@PresentationColumn(width = "140px")',
|
68
|
+
'@PresentationDetailField',
|
69
|
+
'private Date createdAt;',
|
70
|
+
'',
|
71
|
+
'@PresentationField(type = FieldType.Datetime, i18nKey = Constants.I18nCommon.Property.UPDATED_AT)',
|
72
|
+
'@PresentationColumn(width = "140px")',
|
73
|
+
'@PresentationDetailField',
|
74
|
+
'private Date updatedAt;'
|
75
|
+
]
|
76
|
+
lines
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/lib/liquigen/type_map.rb
CHANGED
@@ -3,6 +3,7 @@ module Liquigen
|
|
3
3
|
attr_accessor :rails_type
|
4
4
|
attr_accessor :map
|
5
5
|
attr_accessor :java_map
|
6
|
+
attr_accessor :state_map
|
6
7
|
|
7
8
|
def set_map
|
8
9
|
# Only for mysql
|
@@ -26,10 +27,22 @@ module Liquigen
|
|
26
27
|
text: 'String',
|
27
28
|
float: 'Float',
|
28
29
|
decimal: 'BigDecimal',
|
29
|
-
datetime: '
|
30
|
+
datetime: 'Instant',
|
30
31
|
binary: 'Object',
|
31
32
|
boolean: 'boolean'
|
32
33
|
}
|
34
|
+
|
35
|
+
self.state_map = {
|
36
|
+
integer: 'Number',
|
37
|
+
long: 'Number',
|
38
|
+
string: '',
|
39
|
+
text: '',
|
40
|
+
float: 'Number',
|
41
|
+
decimal: 'Number',
|
42
|
+
datetime: 'Datetime',
|
43
|
+
binary: '',
|
44
|
+
boolean: ''
|
45
|
+
}
|
33
46
|
end
|
34
47
|
|
35
48
|
def initialize(type)
|
@@ -44,5 +57,9 @@ module Liquigen
|
|
44
57
|
def java_type
|
45
58
|
java_map[rails_type.to_sym]
|
46
59
|
end
|
60
|
+
|
61
|
+
def statement_type
|
62
|
+
state_map[rails_type.to_sym]
|
63
|
+
end
|
47
64
|
end
|
48
65
|
end
|
data/lib/liquigen/version.rb
CHANGED
data/lib/liquigen.rb
CHANGED
@@ -32,6 +32,7 @@ require 'liquigen/scaffold/base'
|
|
32
32
|
require 'liquigen/scaffold/controller'
|
33
33
|
require 'liquigen/scaffold/entity'
|
34
34
|
require 'liquigen/scaffold/repository'
|
35
|
+
require 'liquigen/scaffold/schema'
|
35
36
|
|
36
37
|
# Add requires for other files you add to your project here, so
|
37
38
|
# you just need to require this one file in your bin file
|
@@ -45,18 +46,24 @@ module Liquigen
|
|
45
46
|
attr_accessor :entity_package_name
|
46
47
|
# default value: #{package_name}.repository
|
47
48
|
attr_accessor :repository_package_name
|
49
|
+
# default value: #{package_name}.statements
|
50
|
+
attr_accessor :schema_package_name
|
48
51
|
# default value: src/main/java
|
49
52
|
attr_accessor :java_codes_root
|
50
53
|
# default value: src/main/resources/db/migrations
|
51
54
|
attr_accessor :migration_path
|
52
55
|
|
56
|
+
attr_accessor :repository_suffix
|
57
|
+
|
53
58
|
def load_default
|
54
59
|
self.package_name ||= 'com.package'
|
55
60
|
self.controller_package_name ||= "#{package_name}.controller"
|
56
61
|
self.entity_package_name ||= "#{package_name}.model"
|
57
62
|
self.repository_package_name ||= "#{package_name}.repository"
|
63
|
+
self.schema_package_name ||= "#{package_name}.statements"
|
58
64
|
self.java_codes_root ||= 'src/main/java'
|
59
65
|
self.migration_path ||= 'src/main/resources/db/migrations'
|
66
|
+
self.repository_suffix ||= 'Repository'
|
60
67
|
end
|
61
68
|
|
62
69
|
def load
|
@@ -19,4 +19,10 @@ RSpec.describe Liquigen::Scaffold::Entity, type: :model do
|
|
19
19
|
describe '#filename' do
|
20
20
|
specify { expect(entity.file_name).to eq 'User.java' }
|
21
21
|
end
|
22
|
+
|
23
|
+
describe '#method_lines' do
|
24
|
+
let(:props) { ['name:string', 'nickname:string'] }
|
25
|
+
let(:result) { entity.methods_lines.reject { |x| x.length.zero? } }
|
26
|
+
specify { expect(result.size).to eq props.size * 2 }
|
27
|
+
end
|
22
28
|
end
|
@@ -7,6 +7,7 @@ RSpec.describe Liquigen::Scaffold::Repository, type: :model do
|
|
7
7
|
|
8
8
|
before do
|
9
9
|
Liquigen.java_codes_root = 'src/main/java'
|
10
|
+
Liquigen.repository_suffix = 'Repository'
|
10
11
|
allow_any_instance_of(Liquigen::Scaffold::Entity).to receive(:current_package).and_return(package)
|
11
12
|
end
|
12
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liquigen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Cui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- lib/liquigen/scaffold/controller.rb
|
125
125
|
- lib/liquigen/scaffold/entity.rb
|
126
126
|
- lib/liquigen/scaffold/repository.rb
|
127
|
+
- lib/liquigen/scaffold/schema.rb
|
127
128
|
- lib/liquigen/sql.rb
|
128
129
|
- lib/liquigen/type_map.rb
|
129
130
|
- lib/liquigen/version.rb
|