private async Task <IList <string> > LoadTablesAsync() { using (var tableQuery = await SqliteFuncEvalQuery.CreateAsync( this.inspectionContext, this.sqliteInstanceName, "SELECT name FROM sqlite_master WHERE type='table'")) { var tables = new List <String>(); foreach (var t in await tableQuery.ExecuteAsync(int.MaxValue, CancellationToken.None)) { Debug.Assert(t.Length != 0, "All rows should have at least 1 column"); tables.Add(t.First()); } return(tables); } }
private async Task <TableDetails> GetTableDetailsAsync(string table) { TableDetails details; if (!this.tableDetails.TryGetValue(table, out details)) { // Escape string for sqlite - http://www.sqlite.org/lang_expr.html var escapedTableName = this.selectedTable.Replace("\"", "\\\""); escapedTableName = escapedTableName.Replace("'", "''"); var query = await SqliteFuncEvalQuery.CreateAsync( this.inspectionContext, this.sqliteInstanceName, $"SELECT * FROM '{escapedTableName}'"); // Move off the main thread since we are about to do some code gen await TaskScheduler.Default; details = new TableDetails(this.selectedTable, query, this.modBuilder); this.tableDetails[table] = details; } return(details); }