2019-04-03 11:03:07 +02:00
|
|
|
package sqlbuilder
|
|
|
|
|
|
|
|
|
|
type Projection interface {
|
2019-04-29 14:39:48 +02:00
|
|
|
SerializeForProjection(out *queryData) error
|
2019-04-03 11:03:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------//
|
|
|
|
|
// Dummy type for select * AllColumns
|
|
|
|
|
type ColumnList []Column
|
|
|
|
|
|
2019-04-29 14:39:48 +02:00
|
|
|
func (cl ColumnList) SerializeForProjection(out *queryData) error {
|
2019-04-03 11:03:07 +02:00
|
|
|
for i, column := range cl {
|
2019-04-29 14:39:48 +02:00
|
|
|
err := column.Serialize(out, FOR_PROJECTION)
|
2019-04-03 11:03:07 +02:00
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if i != len(cl)-1 {
|
|
|
|
|
out.WriteString(", ")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2019-05-03 12:51:57 +02:00
|
|
|
|
|
|
|
|
func (cl ColumnList) DefaultAlias() []Projection {
|
|
|
|
|
newColumnList := []Projection{}
|
|
|
|
|
|
|
|
|
|
for _, column := range cl {
|
|
|
|
|
newColumn := column.DefaultAlias()
|
|
|
|
|
newColumnList = append(newColumnList, newColumn)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return newColumnList
|
|
|
|
|
}
|