meta-record 1.0.2 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/metarecord-make +1 -0
- data/lib/metarecord/generator_base.rb +4 -0
- data/lib/metarecord/generators/comet/archive_generator.rb +5 -2
- data/lib/metarecord/generators/comet/archive_renderer_generator.rb +61 -0
- data/lib/metarecord/generators/comet/data_generator.rb +4 -2
- data/lib/metarecord/generators/comet/edit_generator.rb +1 -1
- data/lib/metarecord/generators/crails/data_generator.rb +1 -0
- data/lib/metarecord/generators/crails/destroy_generator.rb +1 -1
- data/lib/metarecord/generators/crails/edit_generator.rb +10 -4
- data/lib/metarecord/generators/crails/helpers/validations.rb +2 -2
- data/lib/metarecord/generators/crails/view_generator.rb +3 -3
- data/lib/metarecord/runner.rb +1 -1
- 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: 1b69f5ecbbd9f965b58eb3e7e24afc9eb1984b9731dacacb27c6b9ca9b330e0a
|
4
|
+
data.tar.gz: 27801886a4b4faec633e3126610aafe74a527e4ca01ed196f0cf686fff2e99bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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 <
|
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
|
@@ -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 "
|
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
|
-
|
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 "
|
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 "
|
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 "
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
51
|
+
return if should_skip_on_client? options
|
52
52
|
_append "{"
|
53
53
|
@indent += 1
|
54
54
|
id_attr = (get_singular_name name) + "_ids"
|
data/lib/metarecord/runner.rb
CHANGED
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.
|
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
|
-
-
|
48
|
+
- 0BSD
|
48
49
|
metadata: {}
|
49
50
|
post_install_message:
|
50
51
|
rdoc_options: []
|