Skip to content

Commit 2cab4d7

Browse files
committed
Serializer. Serialize Floats.
1 parent 12cdc83 commit 2cab4d7

File tree

3 files changed

+46
-7
lines changed

3 files changed

+46
-7
lines changed

src/oatpp-postgresql/mapping/Serializer.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ Serializer::Serializer() {
5151
setSerializerMethod(data::mapping::type::__class::Int64::CLASS_ID, &Serializer::serializeInt64);
5252
setSerializerMethod(data::mapping::type::__class::UInt64::CLASS_ID, &Serializer::serializeUInt64);
5353

54-
setSerializerMethod(data::mapping::type::__class::Float32::CLASS_ID, nullptr);
55-
setSerializerMethod(data::mapping::type::__class::Float64::CLASS_ID, nullptr);
54+
setSerializerMethod(data::mapping::type::__class::Float32::CLASS_ID, &Serializer::serializeFloat32);
55+
setSerializerMethod(data::mapping::type::__class::Float64::CLASS_ID, &Serializer::serializeFloat64);
5656
setSerializerMethod(data::mapping::type::__class::Boolean::CLASS_ID, nullptr);
5757

5858
setSerializerMethod(data::mapping::type::__class::AbstractObject::CLASS_ID, nullptr);
@@ -200,7 +200,25 @@ void Serializer::serializeInt64(OutputData& outData, const oatpp::Void& polymorp
200200
}
201201

202202
void Serializer::serializeUInt64(OutputData& outData, const oatpp::Void& polymorph) {
203+
serNull(outData);
204+
}
203205

206+
void Serializer::serializeFloat32(OutputData& outData, const oatpp::Void& polymorph) {
207+
if(polymorph) {
208+
auto v = polymorph.staticCast<oatpp::Float32>();
209+
serInt4(outData, *((p_int32) v.get()));
210+
} else{
211+
serNull(outData);
212+
}
213+
}
214+
215+
void Serializer::serializeFloat64(OutputData& outData, const oatpp::Void& polymorph) {
216+
if(polymorph) {
217+
auto v = polymorph.staticCast<oatpp::Float64>();
218+
serInt8(outData, *((p_int64) v.get()));
219+
} else{
220+
serNull(outData);
221+
}
204222
}
205223

206224
}}}

src/oatpp-postgresql/mapping/Serializer.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,20 @@ class Serializer {
123123
*/
124124
static void serializeUInt64(OutputData& outData, const oatpp::Void& polymorph);
125125

126+
/**
127+
* OID used - FLOAT4OID
128+
* @param outData
129+
* @param polymorph
130+
*/
131+
static void serializeFloat32(OutputData& outData, const oatpp::Void& polymorph);
132+
133+
/**
134+
* OID used - FLOAT8OID
135+
* @param outData
136+
* @param polymorph
137+
*/
138+
static void serializeFloat64(OutputData& outData, const oatpp::Void& polymorph);
139+
126140
};
127141

128142
}}}

test/oatpp-postgresql/tests.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,20 @@ class MyClient : public oatpp::database::DbClient {
3737
PARAM(oatpp::String, email))
3838

3939
QUERY(insertInts,
40-
"INSERT INTO test_t "
41-
"(f_int8, f_uint8, f_int16, f_uint16, f_int32, f_uint32, f_int64) VALUES"
40+
"INSERT INTO test_ints "
41+
"(f_int8, f_uint8, f_int16, f_uint16, f_int32, f_uint32, f_int64) VALUES "
4242
"(:f_int8, :f_uint8, :f_int16, :f_uint16, :f_int32, :f_uint32, :f_int64);",
4343
PARAM(oatpp::Int8, f_int8), PARAM(oatpp::UInt8, f_uint8),
4444
PARAM(oatpp::Int16, f_int16), PARAM(oatpp::UInt16, f_uint16),
4545
PARAM(oatpp::Int32, f_int32), PARAM(oatpp::UInt32, f_uint32),
4646
PARAM(oatpp::Int64, f_int64))
4747

48+
QUERY(insertFloats,
49+
"INSERT INTO test_floats "
50+
"(f_float32, f_float64) VALUES "
51+
"(:f_float32, :f_float64);",
52+
PARAM(oatpp::Float32, f_float32), PARAM(oatpp::Float64, f_float64))
53+
4854
};
4955

5056
#include OATPP_CODEGEN_END(DbClient)
@@ -63,10 +69,11 @@ class Test : public oatpp::test::UnitTest {
6369
//client.createUser("my-login1", "pass1", "email@email.com1", connection);
6470
//client.createUser("my-login2", "pass2", "email@email.com2", connection);
6571

66-
client.insertInts(8, 8, 16, 16, 32, 32, 64, connection);
67-
client.insertInts(-1, -1, -1, -1, -1, -1, -1, connection);
68-
72+
//client.insertInts(8, 8, 16, 16, 32, 32, 64, connection);
73+
//client.insertInts(-1, -1, -1, -1, -1, -1, -1, connection);
6974

75+
client.insertFloats(0.32, 0.64, connection);
76+
client.insertFloats(-0.32, -0.64, connection);
7077

7178
}
7279
};

0 commit comments

Comments
 (0)