1+ // Copyright 2016 The Xorm Authors. All rights reserved.
2+ // Use of this source code is governed by a BSD-style
3+ // license that can be found in the LICENSE file.
4+
15package builder
26
37type optype byte
@@ -16,6 +20,7 @@ type join struct {
1620 joinCond Cond
1721}
1822
23+ // Builder describes a SQL statement
1924type Builder struct {
2025 optype
2126 tableName string
@@ -26,41 +31,49 @@ type Builder struct {
2631 updates []Eq
2732}
2833
34+ // Select creates a select Builder
2935func Select (cols ... string ) * Builder {
3036 builder := & Builder {cond : NewCond ()}
3137 return builder .Select (cols ... )
3238}
3339
40+ // Insert creates an insert Builder
3441func Insert (eq Eq ) * Builder {
3542 builder := & Builder {cond : NewCond ()}
3643 return builder .Insert (eq )
3744}
3845
46+ // Update creates an update Builder
3947func Update (updates ... Eq ) * Builder {
4048 builder := & Builder {cond : NewCond ()}
4149 return builder .Update (updates ... )
4250}
4351
52+ // Delete creates a delete Builder
4453func Delete (conds ... Cond ) * Builder {
4554 builder := & Builder {cond : NewCond ()}
4655 return builder .Delete (conds ... )
4756}
4857
58+ // Where sets where SQL
4959func (b * Builder ) Where (cond Cond ) * Builder {
5060 b .cond = b .cond .And (cond )
5161 return b
5262}
5363
64+ // From sets the table name
5465func (b * Builder ) From (tableName string ) * Builder {
5566 b .tableName = tableName
5667 return b
5768}
5869
70+ // Into sets insert table name
5971func (b * Builder ) Into (tableName string ) * Builder {
6072 b .tableName = tableName
6173 return b
6274}
6375
76+ // Join sets join table and contions
6477func (b * Builder ) Join (joinType , joinTable string , joinCond interface {}) * Builder {
6578 switch joinCond .(type ) {
6679 case Cond :
@@ -72,60 +85,72 @@ func (b *Builder) Join(joinType, joinTable string, joinCond interface{}) *Builde
7285 return b
7386}
7487
88+ // InnerJoin sets inner join
7589func (b * Builder ) InnerJoin (joinTable string , joinCond interface {}) * Builder {
7690 return b .Join ("INNER" , joinTable , joinCond )
7791}
7892
93+ // LeftJoin sets left join SQL
7994func (b * Builder ) LeftJoin (joinTable string , joinCond interface {}) * Builder {
8095 return b .Join ("LEFT" , joinTable , joinCond )
8196}
8297
98+ // RightJoin sets right join SQL
8399func (b * Builder ) RightJoin (joinTable string , joinCond interface {}) * Builder {
84100 return b .Join ("RIGHT" , joinTable , joinCond )
85101}
86102
103+ // CrossJoin sets cross join SQL
87104func (b * Builder ) CrossJoin (joinTable string , joinCond interface {}) * Builder {
88105 return b .Join ("CROSS" , joinTable , joinCond )
89106}
90107
108+ // FullJoin sets full join SQL
91109func (b * Builder ) FullJoin (joinTable string , joinCond interface {}) * Builder {
92110 return b .Join ("FULL" , joinTable , joinCond )
93111}
94112
113+ // Select sets select SQL
95114func (b * Builder ) Select (cols ... string ) * Builder {
96115 b .selects = cols
97116 b .optype = selectType
98117 return b
99118}
100119
120+ // And sets AND condition
101121func (b * Builder ) And (cond Cond ) * Builder {
102122 b .cond = And (b .cond , cond )
103123 return b
104124}
105125
126+ // Or sets OR condition
106127func (b * Builder ) Or (cond Cond ) * Builder {
107128 b .cond = Or (b .cond , cond )
108129 return b
109130}
110131
132+ // Insert sets insert SQL
111133func (b * Builder ) Insert (eq Eq ) * Builder {
112134 b .inserts = eq
113135 b .optype = insertType
114136 return b
115137}
116138
139+ // Update sets update SQL
117140func (b * Builder ) Update (updates ... Eq ) * Builder {
118141 b .updates = updates
119142 b .optype = updateType
120143 return b
121144}
122145
146+ // Delete sets delete SQL
123147func (b * Builder ) Delete (conds ... Cond ) * Builder {
124148 b .cond = b .cond .And (conds ... )
125149 b .optype = deleteType
126150 return b
127151}
128152
153+ // WriteTo implements Writer interface
129154func (b * Builder ) WriteTo (w Writer ) error {
130155 switch b .optype {
131156 case condType :
0 commit comments