ConvertToSQLByPgFields convert to mysql table ddl
(tableName string, fields PGFields)
| 21 | |
| 22 | // ConvertToSQLByPgFields convert to mysql table ddl |
| 23 | func ConvertToSQLByPgFields(tableName string, fields PGFields) (string, map[string]string) { |
| 24 | fieldStr := "" |
| 25 | pgTypeMap := make(map[string]string) // name:type |
| 26 | if len(fields) == 0 { |
| 27 | return "", pgTypeMap |
| 28 | } |
| 29 | |
| 30 | for _, field := range fields { |
| 31 | pgTypeMap[field.Name] = getType(field) |
| 32 | sqlType := field.getMysqlType() |
| 33 | notnullStr := "not null" |
| 34 | if !field.Notnull { |
| 35 | notnullStr = "null" |
| 36 | } |
| 37 | comment := strings.ReplaceAll(field.Comment, "'", "\\'") |
| 38 | fieldStr += fmt.Sprintf(" `%s` %s %s comment '%s',\n", field.Name, sqlType, notnullStr, comment) |
| 39 | } |
| 40 | |
| 41 | primaryField := fields.getPrimaryField() |
| 42 | if primaryField != nil { |
| 43 | fieldStr += fmt.Sprintf(" PRIMARY KEY (`%s`)\n", primaryField.Name) |
| 44 | } else { |
| 45 | fieldStr = strings.TrimSuffix(fieldStr, ",\n") |
| 46 | } |
| 47 | sqlStr := fmt.Sprintf("CREATE TABLE `%s` (\n%s\n);", tableName, fieldStr) |
| 48 | return sqlStr, pgTypeMap |
| 49 | } |
| 50 | |
| 51 | // PGField postgresql field |
| 52 | type PGField struct { |