|
1 | 1 | import { logger, query, task } from "@trigger.dev/sdk"; |
2 | 2 | import type { QueryTable } from "@trigger.dev/sdk"; |
3 | 3 |
|
4 | | -// Simple query example - just the query string, all defaults |
| 4 | +// Simple query example - tests different from/to formats |
5 | 5 | export const simpleQueryTask = task({ |
6 | 6 | id: "simple-query", |
7 | 7 | run: async () => { |
8 | 8 | logger.info("Running simple query example"); |
9 | 9 |
|
10 | | - // Simplest usage - uses environment scope, json format, default period |
11 | | - const result = await query.execute("SELECT * FROM runs LIMIT 10"); |
12 | | - |
13 | | - logger.info("Query results (untyped)", { |
14 | | - format: result.format, |
15 | | - rowCount: result.results.length, |
16 | | - firstRow: result.results[0], |
| 10 | + // 1. Default: no from/to, uses default period |
| 11 | + const defaultResult = await query.execute("SELECT * FROM runs LIMIT 5"); |
| 12 | + logger.info("Default (no from/to)", { |
| 13 | + rowCount: defaultResult.results.length, |
| 14 | + firstRow: defaultResult.results[0], |
17 | 15 | }); |
18 | 16 |
|
19 | | - // Type-safe query using QueryTable with specific columns |
20 | | - const typedResult = await query.execute< |
21 | | - QueryTable<"runs", "run_id" | "status" | "triggered_at" | "total_duration"> |
22 | | - >("SELECT run_id, status, triggered_at, total_duration FROM runs LIMIT 10"); |
| 17 | + // 2. Using Date objects for from/to |
| 18 | + const withDates = await query.execute< |
| 19 | + QueryTable<"runs", "run_id" | "status" | "triggered_at"> |
| 20 | + >("SELECT run_id, status, triggered_at FROM runs LIMIT 5", { |
| 21 | + from: new Date("2025-01-01T00:00:00Z"), |
| 22 | + to: new Date(), |
| 23 | + }); |
| 24 | + logger.info("With Date objects", { |
| 25 | + rowCount: withDates.results.length, |
| 26 | + firstRow: withDates.results[0], |
| 27 | + }); |
23 | 28 |
|
24 | | - logger.info("Query results (typed)", { |
25 | | - format: typedResult.format, |
26 | | - rowCount: typedResult.results.length, |
27 | | - firstRow: typedResult.results[0], |
| 29 | + // 3. Using Unix timestamps in milliseconds (Date.now() returns ms) |
| 30 | + const now = Date.now(); |
| 31 | + const sevenDaysAgo = now - 7 * 24 * 60 * 60 * 1000; |
| 32 | + const withTimestamps = await query.execute< |
| 33 | + QueryTable<"runs", "run_id" | "status" | "triggered_at"> |
| 34 | + >("SELECT run_id, status, triggered_at FROM runs LIMIT 5", { |
| 35 | + from: sevenDaysAgo, |
| 36 | + to: now, |
| 37 | + }); |
| 38 | + logger.info("With Unix timestamps (ms)", { |
| 39 | + rowCount: withTimestamps.results.length, |
| 40 | + firstRow: withTimestamps.results[0], |
28 | 41 | }); |
29 | 42 |
|
30 | | - // Full type safety on the rows - status is narrowly typed! |
31 | | - typedResult.results.forEach((row, index) => { |
32 | | - logger.info(`Run ${index + 1}`, { |
33 | | - run_id: row.run_id, // string |
34 | | - status: row.status, // RunFriendlyStatus ("Completed" | "Failed" | ...) |
35 | | - total_duration: row.total_duration, // number | null |
36 | | - }); |
| 43 | + // 4. Mixing Date and number |
| 44 | + const mixed = await query.execute< |
| 45 | + QueryTable<"runs", "run_id" | "status" | "triggered_at"> |
| 46 | + >("SELECT run_id, status, triggered_at FROM runs LIMIT 5", { |
| 47 | + from: new Date("2025-01-01"), |
| 48 | + to: Date.now(), |
| 49 | + }); |
| 50 | + logger.info("Mixed Date + timestamp", { |
| 51 | + rowCount: mixed.results.length, |
| 52 | + firstRow: mixed.results[0], |
37 | 53 | }); |
38 | 54 |
|
39 | 55 | return { |
40 | | - totalRows: typedResult.results.length, |
41 | | - rows: typedResult.results, |
| 56 | + defaultRows: defaultResult.results.length, |
| 57 | + dateRows: withDates.results.length, |
| 58 | + timestampRows: withTimestamps.results.length, |
| 59 | + mixedRows: mixed.results.length, |
42 | 60 | }; |
43 | 61 | }, |
44 | 62 | }); |
@@ -136,8 +154,8 @@ export const orgQueryTask = task({ |
136 | 154 | LIMIT 50`, |
137 | 155 | { |
138 | 156 | scope: "organization", // Query across all projects |
139 | | - from: "2025-02-01T00:00:00Z", // Custom date range |
140 | | - to: "2025-02-11T23:59:59Z", |
| 157 | + from: new Date("2025-02-01T00:00:00Z"), // Custom date range |
| 158 | + to: new Date("2025-02-11T23:59:59Z"), |
141 | 159 | } |
142 | 160 | ); |
143 | 161 |
|
|
0 commit comments