dm-metamapper 0.0.4 → 0.0.5
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/.gitignore +0 -1
- data/VERSION +1 -1
- data/dm-metamapper.gemspec +74 -0
- data/lib/templates/cpp/dmmm_dbface.cpp.erb +24 -6
- data/lib/templates/cpp/dmmm_dbface.h.erb +5 -0
- data/lib/templates/cpp/dmmm_id.hpp.erb +4 -4
- data/lib/templates/cpp/dmmm_identifiers.hpp.erb +1 -1
- data/lib/templates/cpp/instance.hpp.erb +10 -2
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{dm-metamapper}
|
8
|
+
s.version = "0.0.5"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Jonah Honeyman", "Omer Tamuz"]
|
12
|
+
s.date = %q{2010-06-22}
|
13
|
+
s.description = %q{C++ API for databases created with DM. Hard typing, compile time checked queries.}
|
14
|
+
s.email = %q{jonah@honeyman.org}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".autospec",
|
20
|
+
".gitignore",
|
21
|
+
"Gemfile",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"dm-metamapper.gemspec",
|
26
|
+
"example/.gitignore",
|
27
|
+
"example/Makefile",
|
28
|
+
"example/example.cpp",
|
29
|
+
"example/example.rb",
|
30
|
+
"lib/dm-metamapper.rb",
|
31
|
+
"lib/dm-metamapper/config.rb",
|
32
|
+
"lib/dm-metamapper/extension.rb",
|
33
|
+
"lib/dm-metamapper/generator.rb",
|
34
|
+
"lib/dm-metamapper/generators/cpp.rb",
|
35
|
+
"lib/dm-metamapper/metamapper.rb",
|
36
|
+
"lib/dm-metamapper/property.rb",
|
37
|
+
"lib/dm-metamapper/template.rb",
|
38
|
+
"lib/templates/cpp/class.hpp.erb",
|
39
|
+
"lib/templates/cpp/dmmm_comparators.hpp.erb",
|
40
|
+
"lib/templates/cpp/dmmm_dbface.cpp.erb",
|
41
|
+
"lib/templates/cpp/dmmm_dbface.h.erb",
|
42
|
+
"lib/templates/cpp/dmmm_fields.hpp.erb",
|
43
|
+
"lib/templates/cpp/dmmm_id.hpp.erb",
|
44
|
+
"lib/templates/cpp/dmmm_identifiers.hpp.erb",
|
45
|
+
"lib/templates/cpp/dmmm_utils.cpp.erb",
|
46
|
+
"lib/templates/cpp/dmmm_utils.hpp.erb",
|
47
|
+
"lib/templates/cpp/instance.hpp.erb",
|
48
|
+
"spec/dm-metamapper/generator_spec.rb",
|
49
|
+
"spec/dm-metamapper/template_spec.rb",
|
50
|
+
"spec/spec.opts",
|
51
|
+
"spec/spec_helper.rb"
|
52
|
+
]
|
53
|
+
s.homepage = %q{http://github.com/jonuts/dm-metamapper}
|
54
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
55
|
+
s.require_paths = ["lib"]
|
56
|
+
s.rubygems_version = %q{1.3.6}
|
57
|
+
s.summary = %q{Code generating C++ ORM}
|
58
|
+
s.test_files = [
|
59
|
+
"spec/spec_helper.rb",
|
60
|
+
"spec/dm-metamapper/generator_spec.rb",
|
61
|
+
"spec/dm-metamapper/template_spec.rb"
|
62
|
+
]
|
63
|
+
|
64
|
+
if s.respond_to? :specification_version then
|
65
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
66
|
+
s.specification_version = 3
|
67
|
+
|
68
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
69
|
+
else
|
70
|
+
end
|
71
|
+
else
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
@@ -8,10 +8,28 @@ DBFace* DBFace::_this = NULL;
|
|
8
8
|
|
9
9
|
DBFace::DBFace(const string& database, const string& host,
|
10
10
|
const string& user, const string& password)
|
11
|
+
: _os(cout)
|
11
12
|
{
|
12
13
|
_this = this;
|
13
14
|
if (!_connection.connect(database.c_str(), host.c_str(),
|
14
|
-
user.c_str(), password.c_str()))
|
15
|
+
user.c_str(), password.c_str()))
|
16
|
+
{
|
17
|
+
_os << "Could not connect to DB";
|
18
|
+
cerr << "Could not connect to DB";
|
19
|
+
exit(-1);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
DBFace::DBFace(const string& database, const string& host,
|
24
|
+
const string& user, const string& password,
|
25
|
+
ostream& os)
|
26
|
+
: _os(os)
|
27
|
+
{
|
28
|
+
_this = this;
|
29
|
+
if (!_connection.connect(database.c_str(), host.c_str(),
|
30
|
+
user.c_str(), password.c_str()))
|
31
|
+
{
|
32
|
+
_os << "Could not connect to DB";
|
15
33
|
cerr << "Could not connect to DB";
|
16
34
|
exit(-1);
|
17
35
|
}
|
@@ -41,7 +59,7 @@ DBFace::select(const std::vector<std::string>& tables,
|
|
41
59
|
q << " WHERE " << where;
|
42
60
|
if (additional.size())
|
43
61
|
q << " " << additional;
|
44
|
-
|
62
|
+
_os << q << endl;
|
45
63
|
StoreQueryResult mysqlRes;
|
46
64
|
try{
|
47
65
|
mysqlRes = q.store();
|
@@ -72,7 +90,7 @@ DBFace::erase(const std::vector<std::string>& tables,
|
|
72
90
|
q << " INNER JOIN " + tables[i];
|
73
91
|
if (where.size())
|
74
92
|
q << " WHERE " << where;
|
75
|
-
|
93
|
+
_os << q << endl;
|
76
94
|
return executeQuery(q);
|
77
95
|
|
78
96
|
}
|
@@ -97,7 +115,7 @@ DBFace::getLastInsertId(Query& rQuery, size_t& rId)
|
|
97
115
|
{
|
98
116
|
try{
|
99
117
|
rId = rQuery.insert_id();
|
100
|
-
|
118
|
+
_os << "got last insert ID: " << rId << endl;
|
101
119
|
}
|
102
120
|
catch (const mysqlpp::Exception& er) {
|
103
121
|
return false;
|
@@ -131,7 +149,7 @@ DBFace::insert(const string& table,
|
|
131
149
|
q << quote << it->second;
|
132
150
|
}
|
133
151
|
q << ")";
|
134
|
-
|
152
|
+
_os << q << endl;
|
135
153
|
bool ok = executeQuery(q);
|
136
154
|
ok = ok && getLastInsertId(q, rInsertId);
|
137
155
|
return ok;
|
@@ -154,7 +172,7 @@ DBFace::update(const string& table,
|
|
154
172
|
}
|
155
173
|
if (where.size())
|
156
174
|
q << " WHERE " << where;
|
157
|
-
|
175
|
+
_os << q << endl;
|
158
176
|
return executeQuery(q);
|
159
177
|
}
|
160
178
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
#define DMMM_DBFACE_H
|
3
3
|
|
4
4
|
#include <map>
|
5
|
+
#include <iosfwd>
|
5
6
|
#include <mysql++.h>
|
6
7
|
#include <boost/thread/mutex.hpp>
|
7
8
|
|
@@ -15,6 +16,9 @@ public:
|
|
15
16
|
|
16
17
|
DBFace(const std::string& database, const std::string& host,
|
17
18
|
const std::string& user, const std::string& password);
|
19
|
+
DBFace(const std::string& database, const std::string& host,
|
20
|
+
const std::string& user, const std::string& password,
|
21
|
+
std::ostream& os);
|
18
22
|
|
19
23
|
bool insert(const std::string& table,
|
20
24
|
const std::map<std::string, std::string>& field2Val,
|
@@ -40,6 +44,7 @@ private:
|
|
40
44
|
mysqlpp::Connection _connection;
|
41
45
|
mutable boost::mutex _mutex;
|
42
46
|
static DBFace* _this;
|
47
|
+
std::ostream& _os;
|
43
48
|
};
|
44
49
|
|
45
50
|
} //namespace DMMM
|
@@ -6,7 +6,7 @@
|
|
6
6
|
#include <sstream>
|
7
7
|
|
8
8
|
namespace DMMM{
|
9
|
-
namespace
|
9
|
+
namespace ID{
|
10
10
|
|
11
11
|
template<class T>
|
12
12
|
class Id {
|
@@ -59,12 +59,12 @@ private:
|
|
59
59
|
};
|
60
60
|
|
61
61
|
|
62
|
-
} //namespace
|
62
|
+
} //namespace ID
|
63
63
|
} //namespace DMMM
|
64
64
|
|
65
65
|
template<class T>
|
66
66
|
std::ostream&
|
67
|
-
operator<< (std::ostream& os, const DMMM::
|
67
|
+
operator<< (std::ostream& os, const DMMM::ID::Id<T>& id)
|
68
68
|
{
|
69
69
|
os << id.to_s();
|
70
70
|
return os;
|
@@ -72,7 +72,7 @@ operator<< (std::ostream& os, const DMMM::UTILS::Id<T>& id)
|
|
72
72
|
|
73
73
|
template<class T>
|
74
74
|
std::istream&
|
75
|
-
operator>> (std::istream& is, DMMM::
|
75
|
+
operator>> (std::istream& is, DMMM::ID::Id<T>& id)
|
76
76
|
{
|
77
77
|
is >> id.serialization();
|
78
78
|
return is;
|
@@ -8,7 +8,7 @@ namespace DMMM {
|
|
8
8
|
<% models.each do |model| %>
|
9
9
|
<% model_name = decolonize(model.name) %>
|
10
10
|
class DummyO_<%= model_name %>;
|
11
|
-
typedef
|
11
|
+
typedef ID::Id<DummyO_<%= model_name %>> I_<%= model_name %>;
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
|
@@ -52,8 +52,16 @@ public:
|
|
52
52
|
<% end %>
|
53
53
|
std::string where =
|
54
54
|
"<%= model.serial.name %>=" + UTILS::toString(_f_<%= model.serial.name %>._base);
|
55
|
-
|
56
|
-
|
55
|
+
if (DBFace::instance()->update("<%= model.storage_name %>",
|
56
|
+
field2Val, where))
|
57
|
+
{
|
58
|
+
<% model.generated_properties.each do |property| %>
|
59
|
+
_f_<%= property.name %>._dirty = false;
|
60
|
+
<% end %>
|
61
|
+
return true;
|
62
|
+
}
|
63
|
+
else
|
64
|
+
return false;
|
57
65
|
}
|
58
66
|
<% end %>
|
59
67
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
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-
|
18
|
+
date: 2010-06-22 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- Rakefile
|
36
36
|
- VERSION
|
37
|
+
- dm-metamapper.gemspec
|
37
38
|
- example/.gitignore
|
38
39
|
- example/Makefile
|
39
40
|
- example/example.cpp
|