SetModel creates a model to be used by bubbletea using some golang wizardry
(c *sql.Rows, db *sql.DB)
| 120 | |
| 121 | // SetModel creates a model to be used by bubbletea using some golang wizardry |
| 122 | func (m *TuiModel) SetModel(c *sql.Rows, db *sql.DB) error { |
| 123 | var err error |
| 124 | |
| 125 | indexMap := 0 |
| 126 | |
| 127 | // gets all the schema names of the database |
| 128 | tableNamesQuery := m.Table().Database.GetTableNamesQuery() |
| 129 | rows, err := db.Query(tableNamesQuery) |
| 130 | if err != nil { |
| 131 | return err |
| 132 | } |
| 133 | |
| 134 | defer rows.Close() |
| 135 | |
| 136 | // for each schema |
| 137 | for rows.Next() { |
| 138 | var schemaName string |
| 139 | rows.Scan(&schemaName) |
| 140 | |
| 141 | // couldn't get prepared statements working and gave up because it was very simple |
| 142 | var statement strings.Builder |
| 143 | statement.WriteString("select * from ") |
| 144 | statement.WriteString(schemaName) |
| 145 | getAll := statement.String() |
| 146 | |
| 147 | if c != nil { |
| 148 | c.Close() |
| 149 | c = nil |
| 150 | } |
| 151 | c, err = db.Query(getAll) |
| 152 | if err != nil { |
| 153 | panic(err) |
| 154 | } |
| 155 | |
| 156 | m.PopulateDataForResult(c, &indexMap, schemaName) |
| 157 | } |
| 158 | |
| 159 | // set the first table to be initial view |
| 160 | m.UI.CurrentTable = 1 |
| 161 | |
| 162 | return nil |
| 163 | } |
| 164 | |
| 165 | func (m *TuiModel) PopulateDataForResult(c *sql.Rows, indexMap *int, schemaName string) { |
| 166 | columnNames, _ := c.Columns() |
no test coverage detected