LoadTableDef load Postgres table definition
(db Queryer, schema string)
| 211 | |
| 212 | // LoadTableDef load Postgres table definition |
| 213 | func LoadTableDef(db Queryer, schema string) ([]*Table, error) { |
| 214 | tbDefs, err := db.Query(tableDefSQL, schema) |
| 215 | if err != nil { |
| 216 | return nil, errors.Wrap(err, "failed to load table def") |
| 217 | } |
| 218 | var tbls []*Table |
| 219 | for tbDefs.Next() { |
| 220 | t := &Table{Schema: schema} |
| 221 | err := tbDefs.Scan( |
| 222 | &t.Name, |
| 223 | &t.Comment, |
| 224 | ) |
| 225 | if err != nil { |
| 226 | return nil, errors.Wrap(err, "failed to scan") |
| 227 | } |
| 228 | cols, err := LoadColumnDef(db, schema, t.Name) |
| 229 | if err != nil { |
| 230 | return nil, errors.Wrap(err, fmt.Sprintf("failed to get columns of %s", t.Name)) |
| 231 | } |
| 232 | t.Columns = cols |
| 233 | tbls = append(tbls, t) |
| 234 | } |
| 235 | for _, tbl := range tbls { |
| 236 | fks, err := LoadForeignKeyDef(db, schema, tbls, tbl) |
| 237 | if err != nil { |
| 238 | return nil, errors.Wrap(err, fmt.Sprintf("failed to get fks of %s", tbl.Name)) |
| 239 | } |
| 240 | tbl.ForeingKeys = fks |
| 241 | } |
| 242 | return tbls, nil |
| 243 | } |
| 244 | |
| 245 | // TableToUMLEntry table entry |
| 246 | func TableToUMLEntry(tbls []*Table) ([]byte, error) { |