46 lines
		
	
	
		
			849 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			849 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package clause
 | |
| 
 | |
| type Values struct {
 | |
| 	Columns []Column
 | |
| 	Values  [][]interface{}
 | |
| }
 | |
| 
 | |
| // Name from clause name
 | |
| func (Values) Name() string {
 | |
| 	return "VALUES"
 | |
| }
 | |
| 
 | |
| // Build build from clause
 | |
| func (values Values) Build(builder Builder) {
 | |
| 	if len(values.Columns) > 0 {
 | |
| 		builder.WriteByte('(')
 | |
| 		for idx, column := range values.Columns {
 | |
| 			if idx > 0 {
 | |
| 				builder.WriteByte(',')
 | |
| 			}
 | |
| 			builder.WriteQuoted(column)
 | |
| 		}
 | |
| 		builder.WriteByte(')')
 | |
| 
 | |
| 		builder.WriteString(" VALUES ")
 | |
| 
 | |
| 		for idx, value := range values.Values {
 | |
| 			if idx > 0 {
 | |
| 				builder.WriteByte(',')
 | |
| 			}
 | |
| 
 | |
| 			builder.WriteByte('(')
 | |
| 			builder.AddVar(builder, value...)
 | |
| 			builder.WriteByte(')')
 | |
| 		}
 | |
| 	} else {
 | |
| 		builder.WriteString("DEFAULT VALUES")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // MergeClause merge values clauses
 | |
| func (values Values) MergeClause(clause *Clause) {
 | |
| 	clause.Name = ""
 | |
| 	clause.Expression = values
 | |
| }
 |