meta-record 1.0.2 → 1.0.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: 786c4b11d58a3d7f2deb98548948c2cd0d633e7b9668009238618f64676253b7
4
- data.tar.gz: 58a44c730e52b5a8ab8b6e7b27ccbecb5d281c212d9adfdfcd4ab3c897712648
3
+ metadata.gz: 1b69f5ecbbd9f965b58eb3e7e24afc9eb1984b9731dacacb27c6b9ca9b330e0a
4
+ data.tar.gz: 27801886a4b4faec633e3126610aafe74a527e4ca01ed196f0cf686fff2e99bb
5
5
  SHA512:
6
- metadata.gz: 9fe116030201ba224440f225d60ffebf3c7b948433345dc67745d0d4879a55859d8e4fe4cbde9a6ea1a02e92415356f5218f6d08bdc1a7ba5d2ba3d67d6f6d5e
7
- data.tar.gz: f3eb527ebc8ba619f8e0bdf66237419496b0972c5fa028f9d78800d1635d888c4c56ab0bd64c9025917517484686a076ba841eb34e44c16e79cabfde165a7250
6
+ metadata.gz: 17cdcda84be56c6cadb92d0820de95da5afaa7dd308bedc3a85c50ef435cf4ab319d108a556f6e93487922818d5f90d1d32e0fa08d0317acfb653d83a8c3e222
7
+ data.tar.gz: 2f6e23b9cd576e810ff94418343cd673c8b5a3ac1104a43d2bda67b791abc0d76958f722ad0510161eaa0465ea548a6f220d91db5839897c5e625ee38e55560a
data/bin/metarecord-make CHANGED
@@ -15,6 +15,7 @@ end
15
15
  @tmpdir = ".tmp"
16
16
 
17
17
  OptionParser.new do |opts|
18
+ opts.on "-v", "--verbose" do @verbose == true end
18
19
  opts.on "-o PATH", "--output-path=PATH" do |v| @output = v end
19
20
  opts.on "-b PATH", "--base-path=PATH" do |v| @base_path = v end
20
21
  opts.on "-i PATH", "--source-path=PATH" do |v| @input = v.split(",") end
@@ -194,4 +194,8 @@ class GeneratorBase
194
194
  def property type, name, options = {} ;; end
195
195
  def has_one type, name, options = {} ;; end
196
196
  def has_many type, name, options = {} ;; end
197
+
198
+ def should_skip_on_client? options
199
+ (not options[:client].nil?) && options[:client][:ignore] == true
200
+ end
197
201
  end
@@ -71,21 +71,24 @@ class CometArchiveGenerator < GeneratorBase
71
71
  end
72
72
 
73
73
  def property type, name, options = {}
74
+ return if should_skip_on_client? options
74
75
  @src += " & #{name}"
75
76
  end
76
77
 
77
78
  def has_one type, name, options = {}
79
+ return if should_skip_on_client? options
78
80
  if options[:joined] != false
79
- puts "WARNING: unsupported joined has_one in metarecord/generators/comet/archive_generator"
81
+ @src += " & #{name}"
80
82
  else
81
83
  @src += " & #{name}_id"
82
84
  end
83
85
  end
84
86
 
85
87
  def has_many type, name, options = {}
88
+ return if should_skip_on_client? options
86
89
  singular_name = get_singular_name name
87
90
  if options[:joined] != false
88
- puts "WARNING: unsupported joined has_many in metarecord/generators/comet/archive_generator"
91
+ @src += " & #{name}"
89
92
  else
90
93
  @src += " & #{singular_name}_ids"
91
94
  end
@@ -0,0 +1,61 @@
1
+ require 'metarecord/generator_base'
2
+ require 'metarecord/generators/rails/migrations/table_helpers'
3
+
4
+ class CometArchiveRendererGenerator < GeneratorBase
5
+ def should_generate_for object
6
+ false
7
+ end
8
+
9
+ def should_generate_from_manifest
10
+ true
11
+ end
12
+
13
+ def generate_manifest old_manifest, new_manifest
14
+ reset
15
+ @indent = 2
16
+ @declarations = ""
17
+ new_manifest.keys.each do |model_name|
18
+ add_model model_name
19
+ end
20
+ @indent = 0
21
+ make_renderer
22
+ end
23
+
24
+ private
25
+ def add_model model
26
+ name = model.gsub(/^::/,'').underscore
27
+ funcname_prefix = "render_#{name}"
28
+ funcname = "#{funcname_prefix}_show_archive"
29
+ @declarations += "std::string #{funcname}(const Crails::Renderer* renderer, Crails::SharedVars& vars);\n"
30
+ _append "templates.insert("
31
+ _append " pair<string, Generator>(\"#{name}/show\", #{funcname})"
32
+ _append ");"
33
+ funcname = "#{funcname_prefix}_index_archive"
34
+ @declarations += "std::string #{funcname}(const Crails::Renderer* renderer, Crails::SharedVars& vars);\n"
35
+ _append "templates.insert("
36
+ _append " pair<string, Generator>(\"#{name}/index\", #{funcname})"
37
+ _append ");"
38
+ end
39
+
40
+ def make_renderer
41
+ filepath = "lib/renderers/archive.cpp"
42
+ src = <<CPP
43
+ #include <crails/renderers/archive_renderer.hpp>
44
+ #include <crails/archive.hpp>
45
+
46
+ using namespace Crails;
47
+ using namespace std;
48
+
49
+ #{@declarations}
50
+
51
+ ArchiveRenderer::ArchiveRenderer()
52
+ {
53
+ #{@src}
54
+ }
55
+ CPP
56
+ File.open filepath, 'w' do |f|
57
+ f.write src
58
+ end
59
+ puts "[metarecord][archive/renderer] Generated renderer file #{filepath}"
60
+ end
61
+ end
@@ -27,6 +27,7 @@ class CometDataGenerator < CrailsDataGenerator
27
27
  _append "void from_json(Data data);"
28
28
  _append "virtual std::vector<std::string> find_missing_parameters(Data) const;"
29
29
  _append "virtual void edit(Data);"
30
+ _append "virtual void merge_data(Data) const;"
30
31
  _append "virtual std::string to_json() const;"
31
32
  _append "virtual bool is_valid();"
32
33
  _append_macro "#else"
@@ -65,10 +66,11 @@ class CometDataGenerator < CrailsDataGenerator
65
66
  <<CPP
66
67
  #{super}
67
68
  #ifdef #{client_define}
68
- # include <crails/comet/mvc/model.hpp>
69
+ # include <comet/mvc/model.hpp>
70
+ # include <comet/mvc/archive_model.hpp>
69
71
  # include <comet/promise.hpp>
70
72
  # ifndef #{client_super_class}
71
- # define #{client_super_class} Comet::JsonModel
73
+ # define #{client_super_class} Comet::JsonModel<>
72
74
  # endif
73
75
  #endif
74
76
  CPP
@@ -138,7 +138,7 @@ class CometEditGenerator < CrailsEditGenerator
138
138
  #ifndef #{CometDataGenerator.client_define}
139
139
  #{super}
140
140
  #else
141
- # include <crails/comet/mvc/helpers.hpp>
141
+ # include <crails/odb/helpers.hpp>
142
142
  #endif
143
143
  CPP
144
144
  end
@@ -70,6 +70,7 @@ class CrailsDataGenerator < GeneratorBase
70
70
  def edit_resource_declaration
71
71
  _append "virtual std::vector<std::string> find_missing_parameters(Data) const;"
72
72
  _append "virtual void edit(Data);"
73
+ _append "virtual void merge_data(Data) const;"
73
74
  _append "virtual std::string to_json() const;"
74
75
  _append "virtual bool is_valid();"
75
76
  _append "virtual void on_dependent_destroy(#{id_type});"
@@ -70,7 +70,7 @@ class CrailsDestroyGenerator < GeneratorBase
70
70
  @indent += 1
71
71
  depended_by = CrailsDestroyGenerator.destroy_data[object[:classname]]
72
72
  if depended_by.class == Array
73
- _append "auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;"
73
+ _append "#{GeneratorBase.odb_connection[:object]} database;"
74
74
  depended_by.each do |relation|
75
75
  _append "// #{relation[:class]}"
76
76
  _append "{"
@@ -36,11 +36,17 @@ class CrailsEditGenerator < GeneratorBase
36
36
 
37
37
  def generate_json_methods object
38
38
  @rendering_to_json = true
39
+ _append "void #{@klassname}::merge_data(Data data) const"
40
+ _append "{"
41
+ @indent += 1
42
+ self.instance_eval &object[:block]
43
+ @indent -= 1
44
+ _append "}\n"
39
45
  _append "std::string #{@klassname}::to_json() const"
40
46
  _append "{"
41
47
  @indent += 1
42
48
  _append "DataTree data;\n"
43
- self.instance_eval &object[:block]
49
+ _append "merge_data(data);\n"
44
50
  _append "return data.to_json();"
45
51
  @indent -= 1
46
52
  _append "}\n"
@@ -131,7 +137,7 @@ class CrailsEditGenerator < GeneratorBase
131
137
  tptr = ptr_type type
132
138
  _append "#{tptr} #{@klassname}::get_#{name}() const"
133
139
  _append "{"
134
- _append " auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;"
140
+ _append " #{GeneratorBase.odb_connection[:object]} database;"
135
141
  _append " #{tptr} result;\n"
136
142
  _append " database.find_one(result, #{name}_id);"
137
143
  _append " return result;"
@@ -155,7 +161,7 @@ class CrailsEditGenerator < GeneratorBase
155
161
  _append " set_#{name}(nullptr);"
156
162
  _append " else if (!get_#{name}() || #{data_id} != get_#{name}()->get_id())"
157
163
  _append " {"
158
- _append " auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;"
164
+ _append " #{GeneratorBase.odb_connection[:object]} database;"
159
165
  _append " #{tptr} linked_resource;"
160
166
  _append " database.find_one(linked_resource, data[\"#{name}_id\"].as<#{id_type}>());"
161
167
  _append " set_#{name}(linked_resource);"
@@ -326,7 +332,7 @@ class CrailsEditGenerator < GeneratorBase
326
332
  _append "{"
327
333
  @indent += 1
328
334
  _append "typedef odb::pgsql::query<#{type}> query;"
329
- _append "auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;"
335
+ _append "#{GeneratorBase.odb_connection[:object]} database;"
330
336
  _append "odb::result<#{type}> results;"
331
337
  _append "#{name}.clear();"
332
338
  _append "database.find<#{type}>(results,"
@@ -25,7 +25,7 @@ def validate_uniqueness source_type, name
25
25
  type = source_type[16..-2]
26
26
  <<CPP
27
27
  {
28
- auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;
28
+ #{GeneratorBase.odb_connection[:object]} database;
29
29
  odb::result<#{source_type}> results;
30
30
 
31
31
  database.find(results, odb::query<#{source_type}::#{name}->id == get_#{name}_id());
@@ -36,7 +36,7 @@ CPP
36
36
  else
37
37
  <<CPP
38
38
  {
39
- auto& database = *#{GeneratorBase.odb_connection[:object]}::instance;
39
+ #{GeneratorBase.odb_connection[:object]} database;
40
40
  odb::result<#{source_type}> results;
41
41
 
42
42
  database.find(results, odb::query<#{source_type}::#{name} == #{name});
@@ -28,7 +28,7 @@ class CrailsViewGenerator < GeneratorBase
28
28
  end
29
29
 
30
30
  def property type, name, options = {}
31
- return if (not options[:client].nil?) && options[:client][:ignore] == true
31
+ return if should_skip_on_client? options
32
32
  if type == "DataTree" || type == "LocaleString"
33
33
  _append "json(#{name.inspect}, model.get_#{name}().as_data());"
34
34
  else
@@ -37,7 +37,7 @@ class CrailsViewGenerator < GeneratorBase
37
37
  end
38
38
 
39
39
  def has_one type, name, options = {}
40
- return if (not options[:client].nil?) && options[:client][:ignore] == true
40
+ return if should_skip_on_client? options
41
41
  if options[:joined] == false
42
42
  _append "if (model.get_#{name}_id() != 0)"
43
43
  _append " json(\"#{name}_id\", model.get_#{name}_id());"
@@ -48,7 +48,7 @@ class CrailsViewGenerator < GeneratorBase
48
48
  end
49
49
 
50
50
  def has_many type, name, options = {}
51
- return if (not options[:client].nil?) && options[:client][:ignore] == true
51
+ return if should_skip_on_client? options
52
52
  _append "{"
53
53
  @indent += 1
54
54
  id_attr = (get_singular_name name) + "_ids"
@@ -37,7 +37,7 @@ module MetaRecordRunner
37
37
  puts "[metarecord] generated #{new_path}"
38
38
  `mkdir -p '#{File.dirname new_path}'`
39
39
  `cp '#{tmp_file}' '#{new_path}'`
40
- else
40
+ elsif @verbose == true
41
41
  puts "[metarecord] no updates required for #{new_path}"
42
42
  end
43
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta-record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Martin Moro
@@ -27,6 +27,7 @@ files:
27
27
  - lib/metarecord/generator_base.rb
28
28
  - lib/metarecord/generators/aurelia_generator.rb
29
29
  - lib/metarecord/generators/comet/archive_generator.rb
30
+ - lib/metarecord/generators/comet/archive_renderer_generator.rb
30
31
  - lib/metarecord/generators/comet/data_generator.rb
31
32
  - lib/metarecord/generators/comet/edit_generator.rb
32
33
  - lib/metarecord/generators/crails/data_generator.rb
@@ -44,7 +45,7 @@ files:
44
45
  - lib/metarecord/runner.rb
45
46
  homepage: https://github.com/crails-framework/meta-record
46
47
  licenses:
47
- - BSD
48
+ - 0BSD
48
49
  metadata: {}
49
50
  post_install_message:
50
51
  rdoc_options: []