Skip to content

Commit 19db09b

Browse files
committed
Extract func parseColumnDefinition
1 parent a1d2a76 commit 19db09b

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

cmd/sqlcup/main.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ type column struct {
7878
Name string
7979
Type string
8080
Constraint string
81+
ID bool
8182
}
8283

8384
type outputMode uint8
@@ -104,6 +105,22 @@ type scaffoldCommandArgs struct {
104105
Output outputMode
105106
}
106107

108+
func parseColumnDefinition(s string) (column, error) {
109+
parts := strings.Split(s, ":")
110+
if len(parts) < 2 || len(parts) > 3 {
111+
return column{}, fmt.Errorf("%w: invalid <column>: '%s', expected '<name>:<type>' or '<name>:<type>:<constraint>'", errBadArgument, s)
112+
}
113+
col := column{
114+
ID: strings.ToLower(parts[0]) == *idColumnFlag,
115+
Name: parts[0],
116+
Type: parts[1],
117+
}
118+
if len(parts) == 3 {
119+
col.Constraint = parts[2]
120+
}
121+
return col, nil
122+
}
123+
107124
func parseScaffoldCommandArgs(args []string) (*scaffoldCommandArgs, error) {
108125
if len(args) == 0 {
109126
return nil, fmt.Errorf("%w: missing <name> and <column>", errBadArgument)
@@ -134,26 +151,18 @@ func parseScaffoldCommandArgs(args []string) (*scaffoldCommandArgs, error) {
134151
}
135152

136153
for _, arg := range args[1:] {
137-
parts := strings.Split(arg, ":")
138-
if len(parts) < 2 || len(parts) > 3 {
139-
return nil, fmt.Errorf("%w: invalid <column>: '%s', expected '<name>:<type>' or '<name>:<type>:<constraint>'", errBadArgument, arg)
140-
}
141-
col := column{
142-
Name: parts[0],
143-
Type: parts[1],
154+
col, err := parseColumnDefinition(arg)
155+
if err != nil {
156+
return nil, err
144157
}
145158
if len(col.Name) > sca.LongestName {
146159
sca.LongestName = len(col.Name)
147160
}
148161
if len(col.Type) > sca.LongestType {
149162
sca.LongestType = len(col.Type)
150163
}
151-
if len(parts) == 3 {
152-
col.Constraint = parts[2]
153-
}
154-
155164
sca.Columns = append(sca.Columns, col)
156-
if strings.ToLower(parts[0]) == *idColumnFlag {
165+
if col.ID {
157166
sca.IDColumn = &col
158167
} else {
159168
sca.NonIDColumns = append(sca.NonIDColumns, col)

0 commit comments

Comments
 (0)