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.Predicate;
13 
14 class Predicate {
15 
16     string _str;
17 
18     this () {
19 
20     }
21 
22     Predicate addValue(string key,string op,string value) {
23         _str ~= key ~ " " ~ op ~ " " ~ value;
24         return this;
25     }
26     Predicate andValue(T...)(T args) {
27         _str ~= " ( ";
28         foreach(k,v;args) {
29             _str ~= v.toString();
30             if (k != args.length - 1)
31                 _str ~= " AND ";
32         } 
33         _str ~= " ) ";
34         return this;
35     }  
36     Predicate orValue(T...)(T args) {
37         _str ~= " ( ";
38         foreach(k,v;args) {
39             _str ~= v.toString();
40             if (k != args.length - 1)
41                 _str ~= " OR ";
42         } 
43         _str ~= " ) ";
44         return this;
45     }  
46     Predicate betweenValue(string key, string c1, string c2) {
47         _str = " "~key~" BETWEEN "~c1~" AND "~c2;
48         return this;
49     }
50     Predicate In(T...)(T args) {
51         foreach(k,v; args) {
52             if (k == 0) {
53                 _str ~= " " ~ v ~ " IN (";
54             }
55             else {
56                 _str ~= " \"" ~ v~"\"";
57                 if (k == args.length - 1) {
58                     _str ~= ")";
59                 }
60                 else {
61                     _str ~= ",";
62                 }
63             }
64         }
65         return this;
66     }
67 
68     override string toString()
69     {
70         return _str;
71     }
72 }