package kbuilder import ( "github.com/vingarcia/ksql" ) // Builder is the basic container for injecting // query builder configurations. // // All the Query structs can also be called // directly without this builder, but we kept it // here for convenience. type Builder struct { dialect ksql.Dialect } type queryBuilder interface { BuildQuery(dialect ksql.Dialect) (sqlQuery string, params []interface{}, _ error) } // New creates a new Builder container. func New(driver string) (Builder, error) { dialect, err := ksql.GetDriverDialect(driver) return Builder{ dialect: dialect, }, err } // Build receives a query builder struct, injects it with the configurations // build the query according to its arguments. func (builder *Builder) Build(query queryBuilder) (sqlQuery string, params []interface{}, _ error) { return query.BuildQuery(builder.dialect) }