liquigen 0.1.3 → 0.1.4
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/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
|