1 /* 2 * Entity - Entity is an object-relational mapping tool for the D programming language. Referring to the design idea of JPA. 3 * 4 * Copyright (C) 2015-2018 Shanghai Putao Technology Co., Ltd 5 * 6 * Developer: HuntLabs.cn 7 * 8 * Licensed under the Apache-2.0 License. 9 * 10 */ 11 12 module hunt.entity.criteria.CriteriaUpdate; 13 14 import hunt.entity; 15 import hunt.logging; 16 import std.variant; 17 18 class CriteriaUpdate(T : Object, F : Object = T) : CriteriaBase!(T,F) 19 { 20 this(CriteriaBuilder criteriaBuilder) { 21 super(criteriaBuilder); 22 } 23 override public Root!(T,F) from(T t = null, F owner = null) { 24 super.from(t, owner); 25 _sqlBuidler.update(_root.getTableName()); 26 return _root; 27 } 28 //Comparison 29 public CriteriaUpdate!(T,F) where(R)(Comparison!R cond) { 30 return cast(CriteriaUpdate!(T,F))super.where(cond); 31 } 32 //P = Predicate 33 public CriteriaUpdate!(T,F) where(P...)(P predicates) { 34 return cast(CriteriaUpdate!(T,F))super.where(predicates); 35 } 36 public CriteriaUpdate!(T,F) set(P)(EntityFieldInfo field, P p) { 37 _criteriaBuilder.assertType!(P)(field); 38 // logDebug("set value : %s".format(_criteriaBuilder.getDialect().toSqlValue(p))); 39 if(!_criteriaBuilder.getDbOption().isPgsql()) 40 _sqlBuidler.set(field.getFullColumn(), p); 41 else 42 _sqlBuidler.set(field.getColumnName(), p); 43 return this; 44 } 45 46 public CriteriaUpdate!(T,F) set(EntityFieldInfo field) { 47 string fieldName = field.getFieldName(); 48 Variant value = field.getColumnFieldData(); 49 50 version(HUNT_ENTITY_DEBUG_MORE) { 51 tracef("EntityFieldInfo: (%s ), ColumnFieldData: (%s, %s)", field.toString(), value, 52 field.getColumnFieldData().type); 53 } 54 55 version(HUNT_ENTITY_DEBUG) { 56 TypeInfo valueTypeInfo = typeid(value.type); 57 tracef("field: %s, isAggregateType: %s, Type: %s", fieldName, field.isAggregateType(), valueTypeInfo); 58 } 59 60 if(field.isAggregateType()) { 61 version(HUNT_DEBUG) warningf("An aggregate field ignored: %s", fieldName); 62 } else { 63 _sqlBuidler.set(fieldName, field.getColumnName(), field.getTableName(), value); 64 65 // if(_criteriaBuilder.getDbOption().isPgsql()) 66 // { 67 // _sqlBuidler.set(field.getColumnName(), value); 68 // } 69 // else 70 // { 71 // _sqlBuidler.set(field.getFullColumn(), value); 72 // } 73 74 } 75 return this; 76 } 77 }