Skip to content

Commit

Permalink
fix #16 and support postgresql's boolean type.
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangyuchun committed Sep 10, 2018
1 parent a6c2843 commit e02f4c8
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 6 deletions.
2 changes: 1 addition & 1 deletion dub.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "hunt-entity",
"authors": ["HuntLabs.cn"],
"dependencies": {
"hunt-database": "~>0.2.1"
"hunt-database": "~>0.2.2"
},
"description": "Entity is an object-relational mapping tool for the D programming language. Referring to the design idea of JPA. support PostgreSQL / MySQL / SQLite.",
"copyright": "Copyright (C) 2015-2018 Shanghai Putao Technology Co., Ltd",
Expand Down
14 changes: 12 additions & 2 deletions source/hunt/entity/EntityFieldNormal.d
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,14 @@ class EntityFieldNormal(T) : EntityFieldInfo {
_columnFieldData.value = "%s".format(value);
}
else static if (is(T == bool)) {
_columnFieldData.value = value ? "1" : "0";
if(manager.getDatabase().getOption().isPgsql())
{
_columnFieldData.value = value ? "'1'":"'0'";
}
else
{
_columnFieldData.value = value ? "1" : "0";
}
}
else {
_columnFieldData.value = "%s".format(value);
Expand All @@ -51,7 +58,10 @@ class EntityFieldNormal(T) : EntityFieldInfo {
return;
}
static if (is(R==bool)) {
r = cast(byte)(value[0]) == 1;
if( value[0] == 1 || value[0] == 't')
r = true;
else
r = false;
}
else {
r = to!R(value);
Expand Down
5 changes: 4 additions & 1 deletion source/hunt/entity/EntityInfo.d
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,10 @@ class EntityInfo(T : Object, F : Object = T) {
foreach(info; _fields) {
if (info.getFileldName() != _autoIncrementKey) {
if (info.getColumnName() != "") {
str[info.getFullColumn()] = info.getColumnFieldData().value;
if(!_manager.getDatabase().getOption().isPgsql())
str[info.getFullColumn()] = info.getColumnFieldData().value;
else
str[info.getColumnName()] = info.getColumnFieldData().value;
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions source/hunt/entity/criteria/CriteriaUpdate.d
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,18 @@ class CriteriaUpdate(T : Object, F : Object = T) : CriteriaBase!(T,F)
}
public CriteriaUpdate!(T,F) set(P)(EntityFieldInfo field, P p) {
_criteriaBuilder.assertType!(P)(field);
_sqlBuidler.set(field.getFullColumn(), _criteriaBuilder.getDialect().toSqlValue(p));
if(!_criteriaBuilder.getDatabase().getOption().isPgsql())
_sqlBuidler.set(field.getFullColumn(), _criteriaBuilder.getDialect().toSqlValue(p));
else
_sqlBuidler.set(field.getColumnName(), _criteriaBuilder.getDialect().toSqlValue(p));
return this;
}

public CriteriaUpdate!(T,F) set(EntityFieldInfo field) {
_sqlBuidler.set(field.getFullColumn(), field.getColumnFieldData().value);
if(!_criteriaBuilder.getDatabase().getOption().isPgsql())
_sqlBuidler.set(field.getFullColumn(), field.getColumnFieldData().value);
else
_sqlBuidler.set(field.getColumnName() , field.getColumnFieldData().value);
return this;
}
}

0 comments on commit e02f4c8

Please sign in to comment.