MCPcopy
hub / github.com/sqldef/sqldef / generateIndexOptionDefinition

Method generateIndexOptionDefinition

schema/generator.go:3352–3414  ·  view source on GitHub ↗
(indexOptions []IndexOption)

Source from the content-addressed store, hash-verified

3350}
3351
3352func (g *Generator) generateIndexOptionDefinition(indexOptions []IndexOption) string {
3353 var optionDefinition string
3354 if len(indexOptions) > 0 {
3355 switch g.mode {
3356 case GeneratorModeMysql:
3357 // Handle multiple vector index options (M and DISTANCE)
3358 if len(indexOptions) > 1 {
3359 var mOption, distanceOption string
3360 for _, indexOption := range indexOptions {
3361 if strings.ToUpper(indexOption.optionName) == "M" {
3362 mOption = fmt.Sprintf("M=%s", indexOption.value.raw)
3363 } else if strings.ToUpper(indexOption.optionName) == "DISTANCE" {
3364 distanceOption = fmt.Sprintf("DISTANCE=%s", indexOption.value.raw)
3365 }
3366 }
3367 if mOption != "" && distanceOption != "" {
3368 optionDefinition = fmt.Sprintf(" %s %s", mOption, distanceOption)
3369 } else if mOption != "" {
3370 optionDefinition = fmt.Sprintf(" %s", mOption)
3371 } else if distanceOption != "" {
3372 optionDefinition = fmt.Sprintf(" %s", distanceOption)
3373 }
3374 } else {
3375 indexOption := indexOptions[0]
3376 if indexOption.optionName == "parser" {
3377 indexOption.optionName = "WITH " + indexOption.optionName
3378 }
3379 if strings.EqualFold(indexOption.optionName, "M") {
3380 optionDefinition = fmt.Sprintf(" M=%s", indexOption.value.raw)
3381 } else if strings.EqualFold(indexOption.optionName, "DISTANCE") {
3382 optionDefinition = fmt.Sprintf(" DISTANCE=%s", indexOption.value.raw)
3383 } else if indexOption.optionName == "comment" {
3384 indexOption.optionName = "COMMENT"
3385 optionDefinition = fmt.Sprintf(" %s '%s'", indexOption.optionName, indexOption.value.raw)
3386 } else {
3387 optionDefinition = fmt.Sprintf(" %s %s", indexOption.optionName, indexOption.value.raw)
3388 }
3389 }
3390 case GeneratorModeMssql:
3391 options := util.TransformSlice(indexOptions, func(indexOption IndexOption) string {
3392 var optionValue string
3393 switch indexOption.value.valueType {
3394 case ValueTypeBool:
3395 if indexOption.value.bitVal {
3396 optionValue = "ON"
3397 } else {
3398 optionValue = "OFF"
3399 }
3400 default:
3401 optionValue = indexOption.value.raw
3402 }
3403 return fmt.Sprintf("%s = %s", indexOption.optionName, optionValue)
3404 })
3405 optionDefinition = fmt.Sprintf(" WITH (%s)", strings.Join(options, ", "))
3406 case GeneratorModePostgres:
3407 options := util.TransformSlice(indexOptions, func(indexOption IndexOption) string {
3408 return fmt.Sprintf("%s = %s", indexOption.optionName, indexOption.value.raw)
3409 })

Callers 2

generateAddIndexMethod · 0.95

Calls 1

TransformSliceFunction · 0.92

Tested by

no test coverage detected