(args *Args)
| 71 | } |
| 72 | |
| 73 | func getSQL(args *Args) (string, map[string]string, error) { |
| 74 | if args.SQL != "" { |
| 75 | return args.SQL, nil, nil |
| 76 | } |
| 77 | |
| 78 | sql := "" |
| 79 | dbDriverName := strings.ToLower(args.DBDriver) |
| 80 | if args.DDLFile != "" { |
| 81 | if dbDriverName != parser.DBDriverMysql { |
| 82 | return sql, nil, fmt.Errorf("not support driver %s for parsing the sql file, only mysql is supported", args.DBDriver) |
| 83 | } |
| 84 | b, err := os.ReadFile(args.DDLFile) |
| 85 | if err != nil { |
| 86 | return sql, nil, fmt.Errorf("read %s failed, %s", args.DDLFile, err) |
| 87 | } |
| 88 | return string(b), nil, nil |
| 89 | } else if args.DBDsn != "" { |
| 90 | if args.DBTable == "" { |
| 91 | return sql, nil, errors.New("miss database table") |
| 92 | } |
| 93 | |
| 94 | switch dbDriverName { |
| 95 | case parser.DBDriverMysql, parser.DBDriverTidb: |
| 96 | dsn := utils.AdaptiveMysqlDsn(args.DBDsn) |
| 97 | sqlStr, err := parser.GetMysqlTableInfo(dsn, args.DBTable) |
| 98 | return sqlStr, nil, err |
| 99 | case parser.DBDriverPostgresql: |
| 100 | dsn := utils.AdaptivePostgresqlDsn(args.DBDsn) |
| 101 | fields, err := parser.GetPostgresqlTableInfo(dsn, args.DBTable) |
| 102 | if err != nil { |
| 103 | return "", nil, err |
| 104 | } |
| 105 | sqlStr, pgTypeMap := parser.ConvertToSQLByPgFields(args.DBTable, fields) |
| 106 | return sqlStr, pgTypeMap, nil |
| 107 | case parser.DBDriverSqlite: |
| 108 | sqlStr, err := parser.GetSqliteTableInfo(args.DBDsn, args.DBTable) |
| 109 | return sqlStr, nil, err |
| 110 | case parser.DBDriverMongodb: |
| 111 | dsn := utils.AdaptiveMongodbDsn(args.DBDsn) |
| 112 | fields, err := parser.GetMongodbTableInfo(dsn, args.DBTable) |
| 113 | if err != nil { |
| 114 | return "", nil, err |
| 115 | } |
| 116 | sqlStr, mongoTypeMap := parser.ConvertToSQLByMgoFields(args.DBTable, fields) |
| 117 | return sqlStr, mongoTypeMap, nil |
| 118 | default: |
| 119 | return "", nil, errors.New("get sql error, unsupported database driver: " + dbDriverName) |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | return sql, nil, errors.New("no SQL input(-sql|-f|-db-dsn)") |
| 124 | } |
| 125 | |
| 126 | func setOptions(args *Args) []parser.Option { |
| 127 | var opts []parser.Option |
no test coverage detected