|
4 | 4 | Alert,
|
5 | 5 | Button,
|
6 | 6 | ButtonGroup,
|
7 |
| - Heading, |
8 | 7 | Input,
|
9 | 8 | Label,
|
10 |
| - P, |
| 9 | + Span, |
11 | 10 | Spinner,
|
12 | 11 | } from "flowbite-svelte";
|
13 | 12 | import { onMount } from "svelte";
|
|
62 | 61 |
|
63 | 62 | let ptInstructs = [];
|
64 | 63 |
|
| 64 | + function parseQuery(query = sqlQuery) { |
| 65 | + const fromMatch = query.match(/from\s+\"?([\w-.]+)\"?/i); |
| 66 | + if (fromMatch) { |
| 67 | + activeTable = fromMatch[1]; |
| 68 | + } |
| 69 | + const whereMatch = query.match( |
| 70 | + /where\s+\"?([^\"\s]+)\"?\s*(?:=|like)\s*['"]?([^'";]*)/i |
| 71 | + ); |
| 72 | + if (whereMatch) { |
| 73 | + selectedColumn = whereMatch[1]; |
| 74 | + searchValue = whereMatch[2]; |
| 75 | + } else { |
| 76 | + selectedColumn = ""; |
| 77 | + searchValue = ""; |
| 78 | + } |
| 79 | + } |
| 80 | +
|
| 81 | + $: parseQuery(sqlQuery); |
| 82 | +
|
65 | 83 | function inferColValsType(value) {
|
66 | 84 | if (!isNaN(value) && value !== "") return "number";
|
67 | 85 | return "string";
|
|
211 | 229 | error = false;
|
212 | 230 | try {
|
213 | 231 | let queryData = pTime(() => queryDb(url, query));
|
214 |
| - const data = await queryData(); |
| 232 | + let queryPromise = queryData(); |
| 233 | +
|
| 234 | + const data = await queryPromise; |
| 235 | + console.log("Query executed: ", query); |
| 236 | + console.log("Query data: ", data); |
| 237 | + console.log("Query result: ", data); |
215 | 238 |
|
216 | 239 | result = data.result;
|
217 | 240 | await updateInstructs(result, activeTable);
|
218 |
| - timeTaken = queryData.time; |
| 241 | + timeTaken = queryPromise.time; |
219 | 242 | bytesRead = data.bytesRead;
|
220 | 243 | totalRequests = data.stats.totalRequests;
|
221 | 244 | totalBytes = data.stats.totalBytes;
|
|
262 | 285 | <div class="p-6 space-y-4">
|
263 | 286 | <div class="space-y-2">
|
264 | 287 | <Label class="space-y-2">
|
265 |
| - <span>Column</span> |
| 288 | + <Span>Column</Span> |
266 | 289 | <input
|
267 | 290 | list="columns"
|
268 | 291 | class="border rounded w-full p-2"
|
|
275 | 298 | </datalist>
|
276 | 299 | </Label>
|
277 | 300 | <Label class="space-y-2">
|
278 |
| - <span>Search value</span> |
| 301 | + <Span>Search value</Span> |
279 | 302 | <Input type="text" bind:value={searchValue} />
|
280 | 303 | </Label>
|
281 | 304 | <Button size="sm" on:click={runBuilderQuery}>Search</Button>
|
|
286 | 309 | >
|
287 | 310 | <div class="mt-4">
|
288 | 311 | <Label class="space-y-2">
|
289 |
| - <span>Edit SQL Query</span> |
290 | 312 | <CodeJar bind:value={sqlQuery} syntax="sql" {highlight} />
|
291 | 313 | </Label>
|
292 | 314 | <div class="mt-2">
|
|
0 commit comments