cmd.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package cmd
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "os"
  6. "strings"
  7. "xg_once_query/dbBase"
  8. "xg_once_query/setting"
  9. )
  10. func CmdInit(db *sql.DB) {
  11. args := os.Args[1:]
  12. if len(args) == 0 {
  13. fmt.Println("没有参数")
  14. //view(db)
  15. return
  16. }
  17. first := args[0]
  18. switch first {
  19. case "--":
  20. var sql string
  21. if len(args[1:]) == 0 {
  22. fmt.Println("“-”缺少映射指令")
  23. return
  24. }
  25. //setting.PrintSqlMap()
  26. //println("args[1]", args[1])
  27. if setting.SqlMaps[args[1]] == nil {
  28. fmt.Println("不存在的映射指令")
  29. return
  30. } else {
  31. sql = setting.SqlMaps[args[1]].(string)
  32. }
  33. sql = strings.TrimSpace(sql)
  34. //%s替换
  35. countArguments(&sql, args)
  36. //Limit添加
  37. if setting.SInfo.Limit != "0" {
  38. if sql[len(sql)-1] == ';' {
  39. index := len(sql) - 2
  40. sql := sql[:index+1] + " limit " + setting.SInfo.Limit
  41. fmt.Println("sql: ", sql)
  42. dbBase.DbQuery(db, sql)
  43. break
  44. }
  45. sql = fmt.Sprintf(sql+" limit %s", setting.SInfo.Limit)
  46. fmt.Println("sql: ", sql)
  47. }
  48. fmt.Println("sql: ", sql)
  49. dbBase.DbQuery(db, sql)
  50. case "-":
  51. sql := args[1]
  52. if sql == "" {
  53. fmt.Println("指令为空")
  54. break
  55. }
  56. fmt.Println("sql: ", sql)
  57. dbBase.DbQuery(db, sql)
  58. default:
  59. //fmt.Println("cmd = default")
  60. sql := args[0]
  61. if sql == "" {
  62. fmt.Println("指令为空")
  63. break
  64. }
  65. }
  66. }
  67. func countArguments(sql *string, args []string) {
  68. // 计算 %s 的出现次数
  69. count := strings.Count(*sql, "%s")
  70. switch count {
  71. case 0:
  72. break
  73. case 1:
  74. if len(args) < 3 {
  75. fmt.Println("缺少参数")
  76. return
  77. }
  78. *sql = strings.Replace(*sql, "%s", args[2], 1)
  79. case 2:
  80. if len(args) < 4 {
  81. fmt.Println("缺少参数")
  82. return
  83. } else {
  84. *sql = strings.Replace(*sql, "%s", args[2], 1)
  85. *sql = strings.Replace(*sql, "%s", args[3], 1)
  86. }
  87. case 3:
  88. if len(args) < 5 {
  89. fmt.Println("缺少参数")
  90. return
  91. } else {
  92. *sql = strings.Replace(*sql, "%s", args[2], 1)
  93. *sql = strings.Replace(*sql, "%s", args[3], 1)
  94. *sql = strings.Replace(*sql, "%s", args[4], 1)
  95. }
  96. case 4:
  97. if len(args) < 6 {
  98. fmt.Println("缺少参数")
  99. return
  100. } else {
  101. *sql = strings.Replace(*sql, "%s", args[2], 1)
  102. *sql = strings.Replace(*sql, "%s", args[3], 1)
  103. *sql = strings.Replace(*sql, "%s", args[4], 1)
  104. *sql = strings.Replace(*sql, "%s", args[5], 1)
  105. }
  106. default:
  107. fmt.Println("缺少参数")
  108. return
  109. }
  110. }