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 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