Class: CrailsQueryGenerator

Inherits:
GeneratorBase show all
Defined in:
lib/metarecord/generators/crails/query_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from GeneratorBase

#_append, _use_by_files, _use_by_models, #get_classname, #get_pluralized_name, #get_singular_name, #get_type, #get_value, #id_type, #indent, is_file_based?, #make_block, #null_id, #order_by, prepare, #ptr_type, #should_generate_for, #should_generate_from_manifest, #should_skip_on_client?, sourcefile_to_destfile, #unindent, use, #visibility

Class Method Details

.extensionObject



72
# File 'lib/metarecord/generators/crails/query_generator.rb', line 72

def extension ; ".queries.hpp" ; end

.make_file(filename, data) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/metarecord/generators/crails/query_generator.rb', line 74

def make_file filename, data
  base = "lib/" + filename[0...-3]
  include = base + ".hpp"
  file_define = "_#{filename[0...-3].upcase.gsub "/", "_"}_QUERIES_HPP"
  source = "#ifndef  \#{file_define}\n# define \#{file_define}\n\#{(collect_includes_for filename).join \"\\n\"}\n\#{data[:bodies].join \"\\n\"}\n#endif\n"
end

Instance Method Details

#_join_based_has_many(type, name, options) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/metarecord/generators/crails/query_generator.rb', line 44

def _join_based_has_many type, name, options
  tptr = ptr_type type
  list_type = "std::list<#{tptr} >"
  singular_name = get_singular_name name

  outer_name = (name.split(/-|_|\s/).each do |i| i.capitalize! end).join
  query_object = "#{@finalklass.split("::").join}By#{outer_name}"

  _append "#pragma db view pointer(std::shared_ptr) object(\#{type}) object(\#{@finalklass} inner)\nstruct \#{query_object}\n{\n  std::string get_database_name() const { return \#{type}().get_database_name(); }\n  \#{id_type} get_id() const { return self ? self->get_id() : \#{null_id}; }\n  std::shared_ptr<\#{@finalklass}> self;\n  operator \#{@finalklass}() const { return *self; }\n\n  #pragma db view pointer(std::shared_ptr) object(\#{type}) object(\#{@finalklass} inner)\n  struct Count\n  {\n    #pragma db column(\"count(\" + \#{@finalklass}::id + \")\")\n    size_t value;\n  };\n};\n"
end

#generate_for(object) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/metarecord/generators/crails/query_generator.rb', line 11

def generate_for object
  @headerfile = object[:header]
  unless @headerfile.nil?
    @modelname = object[:name].underscore
    @klassname = get_classname(object)
    @finalklass = object[:classname]
    reset
    self.instance_eval &object[:block]
    "# include \"#{@headerfile}\"\n" + @src
  else
    @src
  end
end

#has_many(type, name, options = {}) ⇒ Object



37
38
39
40
41
42
# File 'lib/metarecord/generators/crails/query_generator.rb', line 37

def has_many type, name, options = {}
  type = get_type type
  if options[:joined] != false
    _join_based_has_many type, name, options
  end
end

#has_one(type, name, options = {}) ⇒ Object



34
35
# File 'lib/metarecord/generators/crails/query_generator.rb', line 34

def has_one type, name, options = {}
end

#property(type, name, options = {}) ⇒ Object



28
29
# File 'lib/metarecord/generators/crails/query_generator.rb', line 28

def property type, name, options = {}
end

#resetObject



6
7
8
9
# File 'lib/metarecord/generators/crails/query_generator.rb', line 6

def reset
  super
  @required_params = []
end

#resource_name(name) ⇒ Object



25
26
# File 'lib/metarecord/generators/crails/query_generator.rb', line 25

def resource_name name
end

#validation(type, name, data) ⇒ Object



31
32
# File 'lib/metarecord/generators/crails/query_generator.rb', line 31

def validation type, name, data
end