MCPcopy
hub / github.com/mathaou/termdbms / handleSQLMode

Function handleSQLMode

viewer/lineedit.go:232–296  ·  view source on GitHub ↗
(m *TuiModel, input string)

Source from the content-addressed store, hash-verified

230}
231
232func 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)

Callers 1

EditEnterFunction · 0.85

Calls 9

populateUndoFunction · 0.85
ExitToDefaultViewFunction · 0.85
TableMethod · 0.80
DisplayMessageMethod · 0.80
SetModelMethod · 0.80
PopulateDataForResultMethod · 0.80
DataMethod · 0.80
SetValueMethod · 0.80
GetDatabaseReferenceMethod · 0.65

Tested by

no test coverage detected