1package squirrel 2 3import "github.com/lann/builder" 4 5// StatementBuilderType is the type of StatementBuilder. 6type StatementBuilderType builder.Builder 7 8// Select returns a SelectBuilder for this StatementBuilderType. 9func (b StatementBuilderType) Select(columns ...string) SelectBuilder { 10 return SelectBuilder(b).Columns(columns...) 11} 12 13// Insert returns a InsertBuilder for this StatementBuilderType. 14func (b StatementBuilderType) Insert(into string) InsertBuilder { 15 return InsertBuilder(b).Into(into) 16} 17 18// Update returns a UpdateBuilder for this StatementBuilderType. 19func (b StatementBuilderType) Update(table string) UpdateBuilder { 20 return UpdateBuilder(b).Table(table) 21} 22 23// Delete returns a DeleteBuilder for this StatementBuilderType. 24func (b StatementBuilderType) Delete(from string) DeleteBuilder { 25 return DeleteBuilder(b).From(from) 26} 27 28// PlaceholderFormat sets the PlaceholderFormat field for any child builders. 29func (b StatementBuilderType) PlaceholderFormat(f PlaceholderFormat) StatementBuilderType { 30 return builder.Set(b, "PlaceholderFormat", f).(StatementBuilderType) 31} 32 33// RunWith sets the RunWith field for any child builders. 34func (b StatementBuilderType) RunWith(runner BaseRunner) StatementBuilderType { 35 return setRunWith(b, runner).(StatementBuilderType) 36} 37 38// StatementBuilder is a parent builder for other builders, e.g. SelectBuilder. 39var StatementBuilder = StatementBuilderType(builder.EmptyBuilder).PlaceholderFormat(Question) 40 41// Select returns a new SelectBuilder, optionally setting some result columns. 42// 43// See SelectBuilder.Columns. 44func Select(columns ...string) SelectBuilder { 45 return StatementBuilder.Select(columns...) 46} 47 48// Insert returns a new InsertBuilder with the given table name. 49// 50// See InsertBuilder.Into. 51func Insert(into string) InsertBuilder { 52 return StatementBuilder.Insert(into) 53} 54 55// Update returns a new UpdateBuilder with the given table name. 56// 57// See UpdateBuilder.Table. 58func Update(table string) UpdateBuilder { 59 return StatementBuilder.Update(table) 60} 61 62// Delete returns a new DeleteBuilder with the given table name. 63// 64// See DeleteBuilder.Table. 65func Delete(from string) DeleteBuilder { 66 return StatementBuilder.Delete(from) 67} 68 69// Case returns a new CaseBuilder 70// "what" represents case value 71func Case(what ...interface{}) CaseBuilder { 72 b := CaseBuilder(builder.EmptyBuilder) 73 74 switch len(what) { 75 case 0: 76 case 1: 77 b = b.what(what[0]) 78 default: 79 b = b.what(newPart(what[0], what[1:]...)) 80 81 } 82 return b 83} 84