1 module dbal.builder;
2 
3 import dbal;
4 
5 interface SqlBuilder
6 {
7     SqlBuilder from(string tableName,string tableNameAlias = null);
8     SqlBuilder select(T...)(T args)
9 	{
10 		string[] arr;
11 		foreach(arg;args){
12 			arr ~= arg;
13 		}
14 		return selectImpl(arr);
15 	}
16     SqlBuilder selectImpl(string[] args);
17     SqlBuilder insert(string tableName);
18     SqlBuilder update(string tableName);
19     SqlBuilder remove(string tableName);
20     SqlBuilder where(string expression);
21     SqlBuilder having(string expression);
22     SqlBuilder eq(T)(string key,T value)
23 	{
24 		return whereImpl(key,CompareType.eq,value.to!string);
25 	}
26     SqlBuilder ne(T)(string key,T value)
27 	{
28 		return whereImpl(key,CompareType.ne,value.to!string);
29 	}
30     SqlBuilder gt(T)(string key,T value)
31 	{
32 		return whereImpl(key,CompareType.gt,value.to!string);
33 	}
34     SqlBuilder lt(T)(string key,T value)
35 	{
36 		return whereImpl(key,CompareType.lt,value.to!string);
37 	}
38     SqlBuilder ge(T)(string key,T value)
39 	{
40 		return whereImpl(key,CompareType.ge,value.to!string);
41 	}
42     SqlBuilder le(T)(string key,T value)
43 	{
44 		return whereImpl(key,CompareType.le,value.to!string);
45 	}
46     SqlBuilder like(T)(string key,T value)
47 	{
48 		return whereImpl(key,CompareType.like,value.to!string);
49 	}
50     SqlBuilder where(T)(string key,CompareType type,T value)
51 	{
52 		return whereImpl(key,type,value.to!string);
53 	}
54 	SqlBuilder whereImpl(string key,CompareType type,string value);
55     SqlBuilder where(MultiWhereExpression expr);
56     MultiWhereExpression expr();
57     SqlBuilder join(JoinMethod joinMethod,string table,string tablealias,string joinWhere);
58     SqlBuilder join(JoinMethod joinMethod,string table,string joinWhere);
59     SqlBuilder innerJoin(string table,string tablealias,string joinWhere);
60     SqlBuilder innerJoin(string table,string joinWhere);
61     SqlBuilder leftJoin(string table,string tableAlias,string joinWhere);
62     SqlBuilder leftJoin(string table,string joinWhere);
63     SqlBuilder rightJoin(string table,string tableAlias,string joinWhere);
64     SqlBuilder rightJoin(string table,string joinWhere);
65     SqlBuilder fullJoin(string table,string tableAlias,string joinWhere);
66     SqlBuilder fullJoin(string table,string joinWhere);
67     SqlBuilder crossJoin(string table,string tableAlias);
68     SqlBuilder crossJoin(string table);
69     SqlBuilder groupBy(string expression);
70     SqlBuilder orderBy (string key,string order = "DESC");
71     SqlBuilder offset(int offset);
72     SqlBuilder limit(int limit);
73     SqlBuilder values(string[string] arr);
74     SqlBuilder set(string key,string value);
75     SqlBuilder setParameter(int index,string value);
76     
77 	SqlBuilder setAutoIncrease(string key);
78     
79     string tableName();
80     string tableNameAlias();
81     Method method();
82     string[] selectKeys();
83     string having();
84     string groupBy();
85     string orderBy();
86     string order();
87     int limit();
88     int offset();
89     string multiWhereStr();
90     WhereExpression[] whereKeys();
91     ValueExpression[string] values();
92     JoinExpression[] joins();
93 	string getAutoIncrease();
94     
95     SqlSyntax build();
96 }
97