azkustodata/kql/identifier.go (29 lines of code) (raw):
package kql
import "fmt"
func (b *Builder) AddDatabase(database string) *Builder {
return b.addBase(stringConstant(fmt.Sprintf("%s(%s)", "database", QuoteString(database, false))))
}
func (b *Builder) AddTable(table string) *Builder {
return b.addBase(stringConstant(NormalizeName(table)))
}
func (b *Builder) AddKeyword(keyword string) *Builder {
if RequiresQuoting(keyword) {
panic("Invalid keyword. Cannot add a keyword that requires escaping.")
}
return b.addBase(stringConstant(keyword))
}
func (b *Builder) AddColumn(column string) *Builder {
return b.addBase(stringConstant(NormalizeName(column)))
}
func (b *Builder) AddFunction(function string) *Builder {
return b.addBase(stringConstant(NormalizeName(function)))
}
// NormalizeName normalizes a string in order to be used safely in the engine - given "query" will produce [\"query\"].
func NormalizeName(name string) string {
if name == "" {
return name
}
if !RequiresQuoting(name) {
return name
}
return "[" + QuoteString(name, false) + "]"
}