code: func (builder *Builder) Insert(collection string, changes map[string]interface{}) (string, []interface{}) {
  	length := len(changes)
  
  	var buffer bytes.Buffer
  	var args = make([]interface{}, 0, length)
  
  	buffer.WriteString("INSERT INTO ")
  	buffer.WriteString(builder.config.EscapeChar)
  	buffer.WriteString(collection)
  	buffer.WriteString(builder.config.EscapeChar)
  
  	if len(changes) == 0 && builder.config.InsertDefaultValues {
  		buffer.WriteString(" DEFAULT VALUES")
  	} else {
  		buffer.WriteString(" (")
  
  		curr := 0
  		for field, value := range changes {
  			buffer.WriteString(builder.config.EscapeChar)
  			buffer.WriteString(field)
  			buffer.WriteString(builder.config.EscapeChar)
  
  			args = append(args, value)
  
  			if curr < length-1 {
  				buffer.WriteString(",")
  			}
  
  			curr++
  		}
  		buffer.WriteString(") VALUES ")
  
  		buffer.WriteString("(")
  		for i := 0; i < length; i++ {
  			buffer.WriteString(builder.ph())
  
  			if i < length-1 {
  				buffer.WriteString(",")
  			}
  		}
  		buffer.WriteString(")")
  	}
  
  	if builder.returnField != "" {
  		buffer.WriteString(" RETURNING ")
  		buffer.WriteString(builder.config.EscapeChar)
  		buffer.WriteString(builder.returnField)
  		buffer.WriteString(builder.config.EscapeChar)
  	}
  
  	buffer.WriteString(";")
  
  	return buffer.String(), args
  }
docs: // Insert generates query for insert.