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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05a501d34064aaf8ede92cbc04d332811c0dcb7217de086087e33d5762173f0c
4
- data.tar.gz: 632a76814a1022a65ba08bcab9420e8c0ac60e1b263fbe87736d68dcb865c461
3
+ metadata.gz: 77e765c5a3fed036596b75bce927a3ed1b815abdbdab5e90fc3cb16488f5e789
4
+ data.tar.gz: d438ac018101fe443603fec30cfc4e22b20a18bf9ce9a447fb1557fdd7f9dfac
5
5
  SHA512:
6
- metadata.gz: 390b18056ac67fe0a44b3f8cccb7358f34855751cdec7671b22700a01085c05f22a00bae05a66f26dcb06374b188b09454f26223e55391ead2ba51e8649f2a3b
7
- data.tar.gz: a5563b6d56ca50a2e0e974b6106c798feb55afc0b7d52fc2b46851aec46ff01c9f008ccb3485151d7741fe391db090d5f640a3f19a769577d26566cf4b86d6b7
6
+ metadata.gz: 8e806d0c261790219380ee0ac6be34eef31f3178c2e7354bb2ceb3d19cddaeb048aff3ed870bf74374768ca77b78b7df99317455d2e0804c5d3933ddf8fe9e09
7
+ data.tar.gz: 7444b3942f02cc76e9afe440967e4d9b4fcd08ae2325175e112004a7d70be434086abfe2af71da7f9bf51e8abe937719d68942e5fb040093b71fd280f6517dc6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- liquigen (0.1.2)
4
+ liquigen (0.1.3)
5
5
  activesupport (>= 4.1.11)
6
6
  gli (= 2.18.0)
7
7
 
data/README.md CHANGED
@@ -174,6 +174,7 @@ Please specify your custom name and path:
174
174
  * controller_package_name=
175
175
  * entity_package_name=
176
176
  * repository_package_name=
177
+ * repository_suffix= # If you want UserRepository, set Repository here.
177
178
 
178
179
  ## scaffold
179
180
  ```bash
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 false
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
 
@@ -19,6 +19,7 @@ module Liquigen::Scaffold
19
19
  contents << '# controller_package_name='
20
20
  contents << '# entity_package_name='
21
21
  contents << '# repository_package_name='
22
+ contents << '# repository_suffix=Repository'
22
23
  contents << ''
23
24
  end
24
25
  end
@@ -16,15 +16,14 @@ module Liquigen::Scaffold
16
16
  [
17
17
  "package #{current_package};",
18
18
  '',
19
- 'import com.dyg.lib.rest.controller.Create;',
20
- 'import com.dyg.lib.rest.controller.Delete;',
21
- 'import com.dyg.lib.rest.controller.Read;',
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
- "public class #{name.pluralize.camelize}#{file_append} implements Create, Read.Index, Read.Show, Update, Delete {"
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 #{name.singularize.camelize}Repo entityRepository;",
56
+ "private final Object[] updatePermit = {#{permit_params.join(', ')}};",
47
57
  '',
48
- '@Override',
49
- 'public Object[] createPermit() { return PERMIT_PARAMS; }',
50
- '',
51
- '@Override',
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.Data;',
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
- '@Data',
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 created_time updated_time]
32
- props.map do |property|
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 += ["private #{Liquigen::TypeMap.new(value).java_type} #{key.camelize(:lower)};",
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
@@ -5,7 +5,7 @@ module Liquigen::Scaffold
5
5
  end
6
6
 
7
7
  def file_append
8
- 'Repo'
8
+ Liquigen.repository_suffix
9
9
  end
10
10
 
11
11
  def import_lines
@@ -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
@@ -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: 'Date',
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
@@ -1,3 +1,3 @@
1
1
  module Liquigen
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
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.3
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-08 00:00:00.000000000 Z
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