MCPcopy Index your code
hub / github.com/Masterminds/structable / importTable

Function importTable

schema2struct/schema2struct.go:187–221  ·  view source on GitHub ↗

importTable reads a table definition and writes a corresponding struct. SELECT table_name, column_name, data_type, character_maximum_length FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'goose_db_version'

(tbl string, b squirrel.StatementBuilderType)

Source from the content-addressed store, hash-verified

185// SELECT table_name, column_name, data_type, character_maximum_length
186// FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'goose_db_version'
187func importTable(tbl string, b squirrel.StatementBuilderType) (*structDesc, error) {
188
189 pks, err := primaryKeyField(tbl, b)
190 if err != nil {
191 fmt.Fprintf(os.Stderr, "Error getting primary keys: %s", err)
192 }
193
194 q := b.Select("column_name, data_type, character_maximum_length").
195 From("INFORMATION_SCHEMA.COLUMNS").
196 Where("table_name = ?", tbl)
197
198 rows, err := q.Query()
199 if err != nil {
200 return nil, err
201 }
202 defer rows.Close()
203
204 ff := []string{}
205 for rows.Next() {
206 c := &column{}
207 var length sql.NullInt64
208 if err := rows.Scan(&c.Name, &c.DataType, &length); err != nil {
209 return nil, err
210 }
211 c.Max = length.Int64
212 ff = append(ff, structField(c, pks, tbl, b))
213 }
214 sd := &structDesc{
215 StructName: goName(tbl),
216 TableName: tbl,
217 Fields: ff,
218 }
219
220 return sd, nil
221}
222
223func primaryKeyField(tbl string, b squirrel.StatementBuilderType) ([]string, error) {
224 q := b.Select("column_name").

Callers 1

importTablesFunction · 0.85

Calls 5

primaryKeyFieldFunction · 0.85
structFieldFunction · 0.85
goNameFunction · 0.85
QueryMethod · 0.80
ScanMethod · 0.80

Tested by

no test coverage detected