-
Notifications
You must be signed in to change notification settings - Fork 0
/
field.go
46 lines (36 loc) · 887 Bytes
/
field.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package sqlbuilder
import "fmt"
type FieldModifier interface {
fmt.Stringer
Count() Field
As(Field) Field
Of(Table) Field
Named() Field
Assign() Field
}
type Field string
// Assign implements FieldModifier.
func (f Field) Assign() Field {
return Field(fmt.Sprintf("%s = %s", f, f.Named()))
}
// Named implements FieldModifier.
func (f Field) Named() Field {
return Field(fmt.Sprintf(":%s", f))
}
// Of implements FieldModifier.
func (f Field) Of(alias Table) Field {
return Field(fmt.Sprintf("%s.%s", alias, f))
}
// As implements FieldModifier.
func (f Field) As(alias Field) Field {
return Field(fmt.Sprintf("%s AS %s", f, alias))
}
// Count implements FieldModifier.
func (f Field) Count() Field {
return Field(fmt.Sprintf("COUNT(%s)", f))
}
// String implements FieldModifier.
func (f Field) String() string {
return string(f)
}
var _ FieldModifier = Field("")