(indexOptions []IndexOption)
| 3350 | } |
| 3351 | |
| 3352 | func (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 | }) |
no test coverage detected