(m *TuiModel, input string)
| 230 | } |
| 231 | |
| 232 | func handleSQLMode(m *TuiModel, input string) { |
| 233 | if m.QueryResult != nil { |
| 234 | m.QueryResult = nil |
| 235 | } |
| 236 | m.QueryResult = &TableState{ // perform query |
| 237 | Database: m.Table().Database, |
| 238 | Data: make(map[string]interface{}), |
| 239 | } |
| 240 | m.QueryData = &UIData{} |
| 241 | |
| 242 | firstword := strings.ToLower(strings.Split(input, " ")[0]) |
| 243 | if exec := firstword == "update" || |
| 244 | firstword == "delete" || |
| 245 | firstword == "insert"; exec { |
| 246 | m.QueryData = nil |
| 247 | m.QueryResult = nil |
| 248 | populateUndo(m) |
| 249 | _, err := m.DefaultTable.Database.GetDatabaseReference().Exec(input) |
| 250 | if err != nil { |
| 251 | ExitToDefaultView(m) |
| 252 | m.DisplayMessage(fmt.Sprintf("%v", err)) |
| 253 | return |
| 254 | } |
| 255 | var c *sql.Rows |
| 256 | defer func() { |
| 257 | if c != nil { |
| 258 | c.Close() |
| 259 | } |
| 260 | }() |
| 261 | err = m.SetModel(c, m.DefaultTable.Database.GetDatabaseReference()) |
| 262 | if err != nil { |
| 263 | m.DisplayMessage(fmt.Sprintf("%v", err)) |
| 264 | } else { |
| 265 | ExitToDefaultView(m) |
| 266 | } |
| 267 | } else { // query |
| 268 | c, err := m.QueryResult.Database.GetDatabaseReference().Query(input) |
| 269 | defer func() { |
| 270 | if c != nil { |
| 271 | c.Close() |
| 272 | } |
| 273 | }() |
| 274 | if err != nil { |
| 275 | m.QueryResult = nil |
| 276 | m.QueryData = nil |
| 277 | ExitToDefaultView(m) |
| 278 | m.DisplayMessage(fmt.Sprintf("%v", err)) |
| 279 | return |
| 280 | } |
| 281 | |
| 282 | i := 0 |
| 283 | |
| 284 | m.QueryData.TableHeaders = make(map[string][]string) |
| 285 | m.QueryData.TableIndexMap = make(map[int]string) |
| 286 | m.QueryData.TableSlices = make(map[string][]interface{}) |
| 287 | m.QueryData.TableHeadersSlice = []string{} |
| 288 | |
| 289 | m.PopulateDataForResult(c, &i, QueryResultsTableName) |
no test coverage detected