dm-metamapper 0.0.2 → 0.0.3

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.
data/Gemfile CHANGED
@@ -1,12 +1,15 @@
1
1
  source :rubygems
2
2
 
3
- gem "dm-core"
3
+ dm_gems_version = "~> 0.10"
4
+ do_gems_version = "~> 0.10"
5
+
6
+ gem "dm-core", dm_gems_version
4
7
 
5
8
  group :test do
6
9
  gem "rspec"
7
10
  gem "data_objects"
8
- gem "do_sqlite3"
9
- gem "do_mysql"
11
+ gem "do_sqlite3", do_gems_version
12
+ gem "do_mysql", do_gems_version
10
13
  end
11
14
 
12
15
  group :deploy do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dm-metamapper}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jonah Honeyman", "Omer Tamuz"]
12
- s.date = %q{2010-06-08}
12
+ s.date = %q{2010-06-09}
13
13
  s.description = %q{C++ API for databases created with DM. Hard typing, compile time checked queries.}
14
14
  s.email = %q{jonah@honeyman.org}
15
15
  s.extra_rdoc_files = [
@@ -82,13 +82,13 @@ class CPPGenerator < DataMapper::MetaMapper::Generator
82
82
  puts "Generating files for model " + self.name.to_s
83
83
  key_to_parent = {}
84
84
  relationships.select{|r,m| m.class.name == 'DataMapper::Associations::ManyToOne::Relationship'}.each do |r|
85
- key_to_parent[r[1].child_key.first.name.to_s] = r[0].to_const_string
86
- puts "#{r[1].child_key.first.name.to_s} -> #{r[0].to_const_string}"
85
+ key_to_parent[r[1].child_key.first.name.to_s] = r[1].parent_model_name.to_const_string.sub(/::/,'_')
86
+ puts "#{r[1].child_key.first.name.to_s} -> #{key_to_parent[r[1].child_key.first.name.to_s]}"
87
87
  end
88
88
 
89
89
  properties.each do |e|
90
90
  cpp_name = if e.serial?
91
- "Field<I_#{e.model.name}>"
91
+ "Field<I_#{e.model.name.sub(/::/,'_')}>"
92
92
  elsif !key_to_parent[e.name.to_s].nil?
93
93
  "Field<I_#{key_to_parent[e.name.to_s]}>"
94
94
  else
@@ -26,7 +26,7 @@ module DataMapper
26
26
  generated_file.template
27
27
  ].join('/')
28
28
 
29
- result_base_name = context ? context.name.to_s : generated_file.template.sub(/\.erb$/,'')
29
+ result_base_name = context ? context.name.to_s.sub(/::/,'_') : generated_file.template.sub(/\.erb$/,'')
30
30
 
31
31
  result_filename = File.join(
32
32
  File.dirname(__FILE__), "../../output", [
@@ -1,4 +1,4 @@
1
- <% class_name = self.name %>
1
+ <% class_name = self.name.sub(/::/,'_') %>
2
2
  <% all_caps_name = class_name.upcase %>
3
3
  #ifndef T_<%= all_caps_name %>
4
4
  #define T_<%= all_caps_name %>
@@ -23,7 +23,7 @@ public:
23
23
  _tables.push_back("<%= storage_name %>");
24
24
  }
25
25
  <% self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::ManyToOne::Relationship'}.each do |r| %>
26
- <% parent = r[0].to_const_string %>
26
+ <% parent = r[1].parent_model_name.sub(/::/,'_') %>
27
27
  T_<%= class_name %>(const T_<%= parent %>& parent)
28
28
  {
29
29
  _tables.push_back("<%= storage_name %>");
@@ -76,7 +76,7 @@ public:
76
76
  for(size_t i = 0; i < res.size(); ++i){
77
77
  <% generated_properties.each do |property| %>
78
78
  r[i]._f_<%= property.name %>._base =
79
- fromString<<%= property.instance_variable_get(:@cpp_name) %>::Base>(res[i]["<%= property.name %>"]);
79
+ UTILS::fromString<<%= property.instance_variable_get(:@cpp_name) %>::Base>(res[i]["<%= property.name %>"]);
80
80
  <% end %>
81
81
  }
82
82
  }
@@ -8,49 +8,49 @@ namespace DMMM {
8
8
  template<class E>
9
9
  typename E::ConditionType operator== (E e, const typename E::ComparerType& x){
10
10
  typename E::ConditionType c;
11
- c._cond = e._field + " = '" + toString(x) + "'";
11
+ c._cond = e._field + " = '" + UTILS::toString(x) + "'";
12
12
  return c;
13
13
  }
14
14
 
15
15
  template<class E>
16
16
  typename E::ConditionType operator< (E e, const typename E::ComparerType& x){
17
17
  typename E::ConditionType c;
18
- c._cond = e._field + " < '" + toString(x) + "'";
18
+ c._cond = e._field + " < '" + UTILS::toString(x) + "'";
19
19
  return c;
20
20
  }
21
21
 
22
22
  template<class E>
23
23
  typename E::ConditionType operator<= (E e, const typename E::ComparerType& x){
24
24
  typename E::ConditionType c;
25
- c._cond = e._field + " <= '" + toString(x) + "'";
25
+ c._cond = e._field + " <= '" + UTILS::toString(x) + "'";
26
26
  return c;
27
27
  }
28
28
 
29
29
  template<class E>
30
30
  typename E::ConditionType operator> (E e, const typename E::ComparerType& x){
31
31
  typename E::ConditionType c;
32
- c._cond = e._field + " > '" + toString(x) + "'";
32
+ c._cond = e._field + " > '" + UTILS::toString(x) + "'";
33
33
  return c;
34
34
  }
35
35
 
36
36
  template<class E>
37
37
  typename E::ConditionType operator>= (E e, const typename E::ComparerType& x){
38
38
  typename E::ConditionType c;
39
- c._cond = e._field + " >= '" + toString(x) + "'";
39
+ c._cond = e._field + " >= '" + UTILS::toString(x) + "'";
40
40
  return c;
41
41
  }
42
42
 
43
43
  template<class E>
44
44
  typename E::ConditionType operator!= (E e, const typename E::ComparerType& x){
45
45
  typename E::ConditionType c;
46
- c._cond = e._field + " != '" + toString(x) + "'";
46
+ c._cond = e._field + " != '" + UTILS::toString(x) + "'";
47
47
  return c;
48
48
  }
49
49
 
50
50
  template<class E>
51
51
  typename E::ConditionType operator%= (E e, const typename E::ComparerType& x){
52
52
  typename E::ConditionType c;
53
- c._cond = e._field + " LIKE '" + toString(x) + "'";
53
+ c._cond = e._field + " LIKE '" + UTILS::toString(x) + "'";
54
54
  return c;
55
55
  }
56
56
 
@@ -54,7 +54,7 @@ DBFace::select(const std::vector<std::string>& tables,
54
54
  for (size_t i = 0; i < mysqlRes.num_rows(); ++i){
55
55
  rRes.resize(rRes.size() + 1);
56
56
  for (size_t j = 0; j < columns.size(); ++j)
57
- rRes.back()[columns[j]] = toString(mysqlRes[i][columns[j].c_str()]);
57
+ rRes.back()[columns[j]] = UTILS::toString(mysqlRes[i][columns[j].c_str()]);
58
58
  }
59
59
  return true;
60
60
  }
@@ -172,5 +172,5 @@ DBFace::now()
172
172
  cerr << "Query failed: " << q << endl << er.what();
173
173
  return string();
174
174
  }
175
- return toString(mysqlRes[0]["now()"]);
175
+ return UTILS::toString(mysqlRes[0]["now()"]);
176
176
  }
@@ -6,6 +6,8 @@
6
6
  #include <sstream>
7
7
 
8
8
  namespace DMMM{
9
+ namespace UTILS{
10
+
9
11
  template<class T>
10
12
  class Id {
11
13
 
@@ -57,11 +59,12 @@ private:
57
59
  };
58
60
 
59
61
 
62
+ } //namespace UTILS
60
63
  } //namespace DMMM
61
64
 
62
65
  template<class T>
63
66
  std::ostream&
64
- operator<< (std::ostream& os, const DMMM::Id<T>& id)
67
+ operator<< (std::ostream& os, const DMMM::UTILS::Id<T>& id)
65
68
  {
66
69
  os << id.to_s();
67
70
  return os;
@@ -69,7 +72,7 @@ operator<< (std::ostream& os, const DMMM::Id<T>& id)
69
72
 
70
73
  template<class T>
71
74
  std::istream&
72
- operator>> (std::istream& is, DMMM::Id<T>& id)
75
+ operator>> (std::istream& is, DMMM::UTILS::Id<T>& id)
73
76
  {
74
77
  is >> id.serialization();
75
78
  return is;
@@ -6,8 +6,9 @@
6
6
  namespace DMMM {
7
7
 
8
8
  <% models.each do |model| %>
9
- class DummyO_<%= model.name %>;
10
- typedef Id<DummyO_<%= model.name %>> I_<%= model.name %>;
9
+ <% model_name = model.name.sub(/::/,'_') %>
10
+ class DummyO_<%= model_name %>;
11
+ typedef UTILS::Id<DummyO_<%= model_name %>> I_<%= model_name %>;
11
12
  <% end %>
12
13
 
13
14
 
@@ -1,6 +1,8 @@
1
1
  #include "dmmm_utils.hpp"
2
2
 
3
3
  namespace DMMM {
4
+ namespace UTILS {
5
+
4
6
  template<>
5
7
  std::string
6
8
  fromString<std::string>(const std::string& s)
@@ -8,4 +10,5 @@ fromString<std::string>(const std::string& s)
8
10
  return s;
9
11
  }
10
12
 
13
+ } //namespace UTILS
11
14
  } //namespace DMMM
@@ -7,6 +7,7 @@
7
7
  #include <dmmm_id.hpp>
8
8
 
9
9
  namespace DMMM {
10
+ namespace UTILS {
10
11
 
11
12
  template<class T>
12
13
  std::string
@@ -35,6 +36,7 @@ template<>
35
36
  std::string
36
37
  fromString<std::string>(const std::string& s);
37
38
 
39
+ } //namespace UTILS
38
40
  } //namespace DMMM
39
41
 
40
42
  #endif //DMMM_UTILS_HPP
@@ -1,4 +1,4 @@
1
- <% class_name = self.name %>
1
+ <% class_name = self.name.sub(/::/,'_') %>
2
2
  <% all_caps_name = class_name.upcase %>
3
3
  #ifndef O_<%= all_caps_name %>
4
4
  #define O_<%= all_caps_name %>
@@ -11,7 +11,7 @@
11
11
  #include "dmmm_fields.hpp"
12
12
  #include "dmmm_comparators.hpp"
13
13
  <% self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::ManyToOne::Relationship'}.each do |relative| %>
14
- #include "T_<%= relative[1].parent_model.to_s %>.hpp"
14
+ #include "T_<%= relative[1].parent_model.to_s.sub(/::/,'_') %>.hpp"
15
15
  <% end %>
16
16
 
17
17
  <%# self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::OneToMany::Relationship'}.each do |relative| %>
@@ -23,7 +23,7 @@ public:
23
23
 
24
24
  O_<%= class_name %>() {}
25
25
  <% self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::ManyToOne::Relationship'}.each do |r| %>
26
- <% parent = r[0].to_const_string %>
26
+ <% parent = r[1].parent_model_name.sub(/::/,'_') %>
27
27
  O_<%= class_name %>(const O_<%= parent %>& parent)
28
28
  : _f_<%= r[1].child_key.first.name.to_s %>(parent._<%= r[1].parent_key.first.name.to_s %>())
29
29
  {}
@@ -49,10 +49,10 @@ public:
49
49
  <% generated_properties.each do |property| %>
50
50
  if (_f_<%= property.name %>._dirty)
51
51
  field2Val["<%= property.name %>"] =
52
- toString(_f_<%= property.name %>._base);
52
+ UTILS::toString(_f_<%= property.name %>._base);
53
53
  <% end %>
54
54
  std::string where =
55
- "<%= serial.name %>=" + toString(_f_<%= serial.name %>._base);
55
+ "<%= serial.name %>=" + UTILS::toString(_f_<%= serial.name %>._base);
56
56
  return DBFace::instance()->update("<%= storage_name %>",
57
57
  field2Val, where);
58
58
  }
@@ -65,23 +65,31 @@ public:
65
65
  <% generated_properties.each do |property| %>
66
66
  if (_f_<%= property.name %>._dirty)
67
67
  field2Val["<%= property.name %>"] =
68
- toString(_f_<%= property.name %>._base);
68
+ UTILS::toString(_f_<%= property.name %>._base);
69
69
  <% end %>
70
70
  <% if serial %>
71
- return DBFace::instance()->
72
- insert("<%= storage_name %>", field2Val,
73
- _f_<%= serial.name %>._base.serialization());
71
+ if (DBFace::instance()->
72
+ insert("<%= storage_name %>", field2Val,
73
+ _f_<%= serial.name %>._base.serialization()))
74
74
  <% else %>
75
75
  size_t id;
76
- return DBFace::instance()->
77
- insert("<%= storage_name %>", field2Val,
78
- id);
76
+ if (DBFace::instance()->
77
+ insert("<%= storage_name %>", field2Val,
78
+ id))
79
79
  <% end %>
80
+ {
81
+ <% generated_properties.each do |property| %>
82
+ _f_<%= property.name %>._dirty = false;
83
+ <% end %>
84
+ return true;
85
+ }
86
+ else
87
+ return false;
80
88
 
81
89
  }
82
90
 
83
91
  <% self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::ManyToOne::Relationship'}.each do |r| %>
84
- <% parent = r[0].to_const_string %>
92
+ <% parent = r[1].parent_model_name.sub(/::/,'_') %>
85
93
  std::pair<O_<%= parent %>, bool> <%= r[0] %>(){
86
94
  T_<%= parent %> T(T_<%= parent %>::E_<%= r[1].parent_key.first.name.to_s %>() == _<%= r[1].child_key.first.name.to_s %>());
87
95
  return T.first();
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jonah Honeyman
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-08 00:00:00 +03:00
18
+ date: 2010-06-09 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies: []
21
21