@opensip-cli/datastore 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +3 -3
  2. package/migrations/0000_tense_karma.sql +73 -0
  3. package/migrations/meta/0000_snapshot.json +289 -100
  4. package/migrations/meta/_journal.json +2 -93
  5. package/package.json +2 -2
  6. package/migrations/0000_sticky_white_tiger.sql +0 -39
  7. package/migrations/0001_easy_harry_osborn.sql +0 -18
  8. package/migrations/0002_plain_amazoness.sql +0 -5
  9. package/migrations/0003_mysterious_khan.sql +0 -6
  10. package/migrations/0004_narrow_bloodscream.sql +0 -3
  11. package/migrations/0005_lying_luke_cage.sql +0 -7
  12. package/migrations/0006_mean_photon.sql +0 -12
  13. package/migrations/0007_parallel_chamber.sql +0 -3
  14. package/migrations/0008_flaky_victor_mancha.sql +0 -7
  15. package/migrations/0009_stable_tool_identity.sql +0 -9
  16. package/migrations/0010_add_timestamp_iso_and_payload_version.sql +0 -11
  17. package/migrations/0011_payload_version_safety_and_notes.sql +0 -21
  18. package/migrations/0012_overrated_talon.sql +0 -21
  19. package/migrations/0013_lovely_zarda.sql +0 -1
  20. package/migrations/meta/0001_snapshot.json +0 -369
  21. package/migrations/meta/0002_snapshot.json +0 -400
  22. package/migrations/meta/0003_snapshot.json +0 -441
  23. package/migrations/meta/0004_snapshot.json +0 -270
  24. package/migrations/meta/0005_snapshot.json +0 -315
  25. package/migrations/meta/0006_snapshot.json +0 -382
  26. package/migrations/meta/0007_snapshot.json +0 -303
  27. package/migrations/meta/0008_snapshot.json +0 -346
  28. package/migrations/meta/0009_snapshot.json +0 -367
  29. package/migrations/meta/0010_snapshot.json +0 -382
  30. package/migrations/meta/0011_snapshot.json +0 -382
  31. package/migrations/meta/0012_snapshot.json +0 -512
  32. package/migrations/meta/0013_snapshot.json +0 -458
@@ -5,99 +5,8 @@
5
5
  {
6
6
  "idx": 0,
7
7
  "version": "6",
8
- "when": 1779408411039,
9
- "tag": "0000_sticky_white_tiger",
10
- "breakpoints": true
11
- },
12
- {
13
- "idx": 1,
14
- "version": "6",
15
- "when": 1779410786534,
16
- "tag": "0001_easy_harry_osborn",
17
- "breakpoints": true
18
- },
19
- {
20
- "idx": 2,
21
- "version": "6",
22
- "when": 1779412753285,
23
- "tag": "0002_plain_amazoness",
24
- "breakpoints": true
25
- },
26
- {
27
- "idx": 3,
28
- "version": "6",
29
- "when": 1780071849200,
30
- "tag": "0003_mysterious_khan",
31
- "breakpoints": true
32
- },
33
- {
34
- "idx": 4,
35
- "version": "6",
36
- "when": 1780086499584,
37
- "tag": "0004_narrow_bloodscream",
38
- "breakpoints": true
39
- },
40
- {
41
- "idx": 5,
42
- "version": "6",
43
- "when": 1780163221374,
44
- "tag": "0005_lying_luke_cage",
45
- "breakpoints": true
46
- },
47
- {
48
- "idx": 6,
49
- "version": "6",
50
- "when": 1781229415303,
51
- "tag": "0006_mean_photon",
52
- "breakpoints": true
53
- },
54
- {
55
- "idx": 7,
56
- "version": "6",
57
- "when": 1781235517090,
58
- "tag": "0007_parallel_chamber",
59
- "breakpoints": true
60
- },
61
- {
62
- "idx": 8,
63
- "version": "6",
64
- "when": 1781289858783,
65
- "tag": "0008_flaky_victor_mancha",
66
- "breakpoints": true
67
- },
68
- {
69
- "idx": 9,
70
- "version": "6",
71
- "when": 1781290000000,
72
- "tag": "0009_stable_tool_identity",
73
- "breakpoints": true
74
- },
75
- {
76
- "idx": 10,
77
- "version": "6",
78
- "when": 1781333902000,
79
- "tag": "0010_add_timestamp_iso_and_payload_version",
80
- "breakpoints": true
81
- },
82
- {
83
- "idx": 11,
84
- "version": "6",
85
- "when": 1781336873000,
86
- "tag": "0011_payload_version_safety_and_notes",
87
- "breakpoints": true
88
- },
89
- {
90
- "idx": 12,
91
- "version": "6",
92
- "when": 1781466317892,
93
- "tag": "0012_overrated_talon",
94
- "breakpoints": true
95
- },
96
- {
97
- "idx": 13,
98
- "version": "6",
99
- "when": 1781488632647,
100
- "tag": "0013_lovely_zarda",
8
+ "when": 1781564695223,
9
+ "tag": "0000_tense_karma",
101
10
  "breakpoints": true
102
11
  }
103
12
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensip-cli/datastore",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "SQLite + Drizzle persistence layer for OpenSIP CLI — DataStore interface, backends, factory, schema migrations",
6
6
  "keywords": [
@@ -36,7 +36,7 @@
36
36
  "@opentelemetry/api": "^1.9.1",
37
37
  "better-sqlite3": "^12.10.0",
38
38
  "drizzle-orm": "^0.45.2",
39
- "@opensip-cli/core": "0.1.0"
39
+ "@opensip-cli/core": "0.1.1"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/better-sqlite3": "^7.6.13",
@@ -1,39 +0,0 @@
1
- CREATE TABLE `session_checks` (
2
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
3
- `session_id` text NOT NULL,
4
- `check_slug` text NOT NULL,
5
- `passed` integer NOT NULL,
6
- `violation_count` integer,
7
- `duration_ms` integer NOT NULL,
8
- FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
9
- );
10
- --> statement-breakpoint
11
- CREATE INDEX `session_checks_session_idx` ON `session_checks` (`session_id`);--> statement-breakpoint
12
- CREATE TABLE `session_findings` (
13
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
14
- `session_check_id` integer NOT NULL,
15
- `rule_id` text NOT NULL,
16
- `severity` text NOT NULL,
17
- `message` text NOT NULL,
18
- `file_path` text,
19
- `line` integer,
20
- `column` integer,
21
- `suggestion` text,
22
- `category` text,
23
- FOREIGN KEY (`session_check_id`) REFERENCES `session_checks`(`id`) ON UPDATE no action ON DELETE cascade
24
- );
25
- --> statement-breakpoint
26
- CREATE INDEX `session_findings_check_idx` ON `session_findings` (`session_check_id`);--> statement-breakpoint
27
- CREATE TABLE `sessions` (
28
- `id` text PRIMARY KEY NOT NULL,
29
- `tool` text NOT NULL,
30
- `timestamp` integer NOT NULL,
31
- `cwd` text NOT NULL,
32
- `recipe` text,
33
- `score` integer NOT NULL,
34
- `passed` integer NOT NULL,
35
- `summary` text NOT NULL,
36
- `duration_ms` integer NOT NULL
37
- );
38
- --> statement-breakpoint
39
- CREATE INDEX `sessions_tool_timestamp_idx` ON `sessions` (`tool`,"timestamp" DESC);
@@ -1,18 +0,0 @@
1
- CREATE TABLE `graph_baseline_meta` (
2
- `id` integer PRIMARY KEY NOT NULL,
3
- `captured_at` integer NOT NULL
4
- );
5
- --> statement-breakpoint
6
- CREATE TABLE `graph_baseline_signals` (
7
- `fingerprint` text PRIMARY KEY NOT NULL,
8
- `captured_at` integer NOT NULL
9
- );
10
- --> statement-breakpoint
11
- CREATE TABLE `graph_catalog` (
12
- `id` integer PRIMARY KEY NOT NULL,
13
- `language` text NOT NULL,
14
- `cache_key` text NOT NULL,
15
- `files_fingerprint` text NOT NULL,
16
- `built_at` text NOT NULL,
17
- `payload` text NOT NULL
18
- );
@@ -1,5 +0,0 @@
1
- CREATE TABLE `fit_baseline` (
2
- `id` integer PRIMARY KEY NOT NULL,
3
- `captured_at` integer NOT NULL,
4
- `payload` text NOT NULL
5
- );
@@ -1,6 +0,0 @@
1
- CREATE TABLE `session_tool_payload` (
2
- `session_id` text PRIMARY KEY NOT NULL,
3
- `tool` text NOT NULL,
4
- `payload` text NOT NULL,
5
- FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
6
- );
@@ -1,3 +0,0 @@
1
- DROP TABLE `session_checks`;--> statement-breakpoint
2
- DROP TABLE `session_findings`;--> statement-breakpoint
3
- ALTER TABLE `sessions` DROP COLUMN `summary`;
@@ -1,7 +0,0 @@
1
- CREATE TABLE `graph_shard_fragment` (
2
- `shard_id` text PRIMARY KEY NOT NULL,
3
- `language` text NOT NULL,
4
- `cache_key` text NOT NULL,
5
- `shard_fingerprint` text NOT NULL,
6
- `payload` text NOT NULL
7
- );
@@ -1,12 +0,0 @@
1
- CREATE TABLE `tool_baseline_entries` (
2
- `tool` text NOT NULL,
3
- `fingerprint` text NOT NULL,
4
- `payload` text,
5
- `captured_at` integer NOT NULL,
6
- PRIMARY KEY(`tool`, `fingerprint`)
7
- );
8
- --> statement-breakpoint
9
- CREATE TABLE `tool_baseline_meta` (
10
- `tool` text PRIMARY KEY NOT NULL,
11
- `captured_at` integer NOT NULL
12
- );
@@ -1,3 +0,0 @@
1
- DROP TABLE `graph_baseline_meta`;--> statement-breakpoint
2
- DROP TABLE `graph_baseline_signals`;--> statement-breakpoint
3
- DROP TABLE `fit_baseline`;
@@ -1,7 +0,0 @@
1
- CREATE TABLE `tool_state` (
2
- `tool` text NOT NULL,
3
- `key` text NOT NULL,
4
- `payload` text,
5
- `updated_at` integer NOT NULL,
6
- PRIMARY KEY(`tool`, `key`)
7
- );
@@ -1,9 +0,0 @@
1
- -- Additive columns for tool stable UUID (ADR-0048). Legacy rows get NULL;
2
- -- new writes from provenance (when stableId present in manifest) or future
3
- -- ratchet paths can populate it. The `tool` column retains the human name
4
- -- for current queries/compat.
5
- ALTER TABLE `tool_state` ADD COLUMN `stable_id` text;
6
- --> statement-breakpoint
7
- ALTER TABLE `tool_baseline_entries` ADD COLUMN `stable_id` text;
8
- --> statement-breakpoint
9
- ALTER TABLE `tool_baseline_meta` ADD COLUMN `stable_id` text;
@@ -1,11 +0,0 @@
1
- -- Add columns for timestamp fidelity (original ISO) and basic payload versioning.
2
- -- Existing rows: timestamp_iso null (hydrate falls back to reconstructed), payload_version defaults to 1.
3
- -- NOTE: statements are split by drizzle's breakpoint marker so each runs as its
4
- -- own prepared statement (better-sqlite3 rejects multi-statement strings).
5
- ALTER TABLE sessions ADD COLUMN timestamp_iso TEXT;
6
- --> statement-breakpoint
7
- ALTER TABLE session_tool_payload ADD COLUMN payload_version INTEGER NOT NULL DEFAULT 1;
8
- --> statement-breakpoint
9
- -- Backfill timestamp_iso for old rows (approximate from ms epoch).
10
- -- Note: for exact original, re-persist sessions after upgrade.
11
- UPDATE sessions SET timestamp_iso = strftime('%Y-%m-%dT%H:%M:%fZ', timestamp / 1000, 'unixepoch') WHERE timestamp_iso IS NULL;
@@ -1,21 +0,0 @@
1
- -- Phase 7: Payload schema evolution — outer column safety + notes.
2
- -- The `payload_version` column is created by migration 0010 (NOT NULL DEFAULT 1).
3
- -- This migration intentionally carries NO further DDL: SQLite has no
4
- -- `ADD COLUMN IF NOT EXISTS`, and drizzle's migrator does not emulate it, so
5
- -- re-adding the column here would fail with "duplicate column name". The
6
- -- migration exists to document the two-level versioning model and to run a
7
- -- harmless, idempotent backfill. No JSON rewrite of historical payloads is
8
- -- performed or required (projection on read is the strategy; see plan + ADR-0050).
9
-
10
- -- Notes for operators / future migrations:
11
- -- * payload_version (created in 0010) = outer storage contract version (bumped
12
- -- only for host-visible changes between session-store and tools).
13
- -- * The tool-owned inner version lives as "__version" (number) at the top level
14
- -- of the JSON blob in the `payload` column.
15
- -- * Legacy rows (column=1 or absent, or no __version in JSON) are treated as v1
16
- -- with `fidelity: 'projection'`.
17
- -- * Migrations on these tables must remain append-only. Backfills only for safe
18
- -- host columns (timestamp_iso precedent); never rewrite tool JSON.
19
-
20
- -- Backfill any rows that somehow missed the DEFAULT (belt-and-suspenders).
21
- UPDATE session_tool_payload SET payload_version = 1 WHERE payload_version IS NULL;
@@ -1,21 +0,0 @@
1
- CREATE TABLE `session_dashboard_contributions` (
2
- `session_id` text NOT NULL,
3
- `tool` text NOT NULL,
4
- `contribution` text NOT NULL,
5
- `version` integer DEFAULT 1 NOT NULL,
6
- PRIMARY KEY(`session_id`, `tool`),
7
- FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
8
- );
9
- --> statement-breakpoint
10
- CREATE TABLE `session_host_metrics` (
11
- `session_id` text PRIMARY KEY NOT NULL,
12
- `tty_busy_ms` integer,
13
- `render_ms` integer,
14
- `persist_ms` integer,
15
- `egress_ms` integer,
16
- `total_command_ms` integer,
17
- FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
18
- );
19
- --> statement-breakpoint
20
- ALTER TABLE `sessions` ADD `completed_at` integer;--> statement-breakpoint
21
- ALTER TABLE `sessions` ADD `completed_at_iso` text;
@@ -1 +0,0 @@
1
- DROP TABLE `session_dashboard_contributions`;
@@ -1,369 +0,0 @@
1
- {
2
- "version": "6",
3
- "dialect": "sqlite",
4
- "id": "a1cc5bfe-5aaa-4d7a-a783-8b0dcbcc8f3b",
5
- "prevId": "79fc9add-aa32-40ce-b157-72b5df13fa7e",
6
- "tables": {
7
- "session_checks": {
8
- "name": "session_checks",
9
- "columns": {
10
- "id": {
11
- "name": "id",
12
- "type": "integer",
13
- "primaryKey": true,
14
- "notNull": true,
15
- "autoincrement": true
16
- },
17
- "session_id": {
18
- "name": "session_id",
19
- "type": "text",
20
- "primaryKey": false,
21
- "notNull": true,
22
- "autoincrement": false
23
- },
24
- "check_slug": {
25
- "name": "check_slug",
26
- "type": "text",
27
- "primaryKey": false,
28
- "notNull": true,
29
- "autoincrement": false
30
- },
31
- "passed": {
32
- "name": "passed",
33
- "type": "integer",
34
- "primaryKey": false,
35
- "notNull": true,
36
- "autoincrement": false
37
- },
38
- "violation_count": {
39
- "name": "violation_count",
40
- "type": "integer",
41
- "primaryKey": false,
42
- "notNull": false,
43
- "autoincrement": false
44
- },
45
- "duration_ms": {
46
- "name": "duration_ms",
47
- "type": "integer",
48
- "primaryKey": false,
49
- "notNull": true,
50
- "autoincrement": false
51
- }
52
- },
53
- "indexes": {
54
- "session_checks_session_idx": {
55
- "name": "session_checks_session_idx",
56
- "columns": ["session_id"],
57
- "isUnique": false
58
- }
59
- },
60
- "foreignKeys": {
61
- "session_checks_session_id_sessions_id_fk": {
62
- "name": "session_checks_session_id_sessions_id_fk",
63
- "tableFrom": "session_checks",
64
- "tableTo": "sessions",
65
- "columnsFrom": ["session_id"],
66
- "columnsTo": ["id"],
67
- "onDelete": "cascade",
68
- "onUpdate": "no action"
69
- }
70
- },
71
- "compositePrimaryKeys": {},
72
- "uniqueConstraints": {},
73
- "checkConstraints": {}
74
- },
75
- "session_findings": {
76
- "name": "session_findings",
77
- "columns": {
78
- "id": {
79
- "name": "id",
80
- "type": "integer",
81
- "primaryKey": true,
82
- "notNull": true,
83
- "autoincrement": true
84
- },
85
- "session_check_id": {
86
- "name": "session_check_id",
87
- "type": "integer",
88
- "primaryKey": false,
89
- "notNull": true,
90
- "autoincrement": false
91
- },
92
- "rule_id": {
93
- "name": "rule_id",
94
- "type": "text",
95
- "primaryKey": false,
96
- "notNull": true,
97
- "autoincrement": false
98
- },
99
- "severity": {
100
- "name": "severity",
101
- "type": "text",
102
- "primaryKey": false,
103
- "notNull": true,
104
- "autoincrement": false
105
- },
106
- "message": {
107
- "name": "message",
108
- "type": "text",
109
- "primaryKey": false,
110
- "notNull": true,
111
- "autoincrement": false
112
- },
113
- "file_path": {
114
- "name": "file_path",
115
- "type": "text",
116
- "primaryKey": false,
117
- "notNull": false,
118
- "autoincrement": false
119
- },
120
- "line": {
121
- "name": "line",
122
- "type": "integer",
123
- "primaryKey": false,
124
- "notNull": false,
125
- "autoincrement": false
126
- },
127
- "column": {
128
- "name": "column",
129
- "type": "integer",
130
- "primaryKey": false,
131
- "notNull": false,
132
- "autoincrement": false
133
- },
134
- "suggestion": {
135
- "name": "suggestion",
136
- "type": "text",
137
- "primaryKey": false,
138
- "notNull": false,
139
- "autoincrement": false
140
- },
141
- "category": {
142
- "name": "category",
143
- "type": "text",
144
- "primaryKey": false,
145
- "notNull": false,
146
- "autoincrement": false
147
- }
148
- },
149
- "indexes": {
150
- "session_findings_check_idx": {
151
- "name": "session_findings_check_idx",
152
- "columns": ["session_check_id"],
153
- "isUnique": false
154
- }
155
- },
156
- "foreignKeys": {
157
- "session_findings_session_check_id_session_checks_id_fk": {
158
- "name": "session_findings_session_check_id_session_checks_id_fk",
159
- "tableFrom": "session_findings",
160
- "tableTo": "session_checks",
161
- "columnsFrom": ["session_check_id"],
162
- "columnsTo": ["id"],
163
- "onDelete": "cascade",
164
- "onUpdate": "no action"
165
- }
166
- },
167
- "compositePrimaryKeys": {},
168
- "uniqueConstraints": {},
169
- "checkConstraints": {}
170
- },
171
- "sessions": {
172
- "name": "sessions",
173
- "columns": {
174
- "id": {
175
- "name": "id",
176
- "type": "text",
177
- "primaryKey": true,
178
- "notNull": true,
179
- "autoincrement": false
180
- },
181
- "tool": {
182
- "name": "tool",
183
- "type": "text",
184
- "primaryKey": false,
185
- "notNull": true,
186
- "autoincrement": false
187
- },
188
- "timestamp": {
189
- "name": "timestamp",
190
- "type": "integer",
191
- "primaryKey": false,
192
- "notNull": true,
193
- "autoincrement": false
194
- },
195
- "cwd": {
196
- "name": "cwd",
197
- "type": "text",
198
- "primaryKey": false,
199
- "notNull": true,
200
- "autoincrement": false
201
- },
202
- "recipe": {
203
- "name": "recipe",
204
- "type": "text",
205
- "primaryKey": false,
206
- "notNull": false,
207
- "autoincrement": false
208
- },
209
- "score": {
210
- "name": "score",
211
- "type": "integer",
212
- "primaryKey": false,
213
- "notNull": true,
214
- "autoincrement": false
215
- },
216
- "passed": {
217
- "name": "passed",
218
- "type": "integer",
219
- "primaryKey": false,
220
- "notNull": true,
221
- "autoincrement": false
222
- },
223
- "summary": {
224
- "name": "summary",
225
- "type": "text",
226
- "primaryKey": false,
227
- "notNull": true,
228
- "autoincrement": false
229
- },
230
- "duration_ms": {
231
- "name": "duration_ms",
232
- "type": "integer",
233
- "primaryKey": false,
234
- "notNull": true,
235
- "autoincrement": false
236
- }
237
- },
238
- "indexes": {
239
- "sessions_tool_timestamp_idx": {
240
- "name": "sessions_tool_timestamp_idx",
241
- "columns": ["tool", "\"timestamp\" DESC"],
242
- "isUnique": false
243
- }
244
- },
245
- "foreignKeys": {},
246
- "compositePrimaryKeys": {},
247
- "uniqueConstraints": {},
248
- "checkConstraints": {}
249
- },
250
- "graph_baseline_meta": {
251
- "name": "graph_baseline_meta",
252
- "columns": {
253
- "id": {
254
- "name": "id",
255
- "type": "integer",
256
- "primaryKey": true,
257
- "notNull": true,
258
- "autoincrement": false
259
- },
260
- "captured_at": {
261
- "name": "captured_at",
262
- "type": "integer",
263
- "primaryKey": false,
264
- "notNull": true,
265
- "autoincrement": false
266
- }
267
- },
268
- "indexes": {},
269
- "foreignKeys": {},
270
- "compositePrimaryKeys": {},
271
- "uniqueConstraints": {},
272
- "checkConstraints": {}
273
- },
274
- "graph_baseline_signals": {
275
- "name": "graph_baseline_signals",
276
- "columns": {
277
- "fingerprint": {
278
- "name": "fingerprint",
279
- "type": "text",
280
- "primaryKey": true,
281
- "notNull": true,
282
- "autoincrement": false
283
- },
284
- "captured_at": {
285
- "name": "captured_at",
286
- "type": "integer",
287
- "primaryKey": false,
288
- "notNull": true,
289
- "autoincrement": false
290
- }
291
- },
292
- "indexes": {},
293
- "foreignKeys": {},
294
- "compositePrimaryKeys": {},
295
- "uniqueConstraints": {},
296
- "checkConstraints": {}
297
- },
298
- "graph_catalog": {
299
- "name": "graph_catalog",
300
- "columns": {
301
- "id": {
302
- "name": "id",
303
- "type": "integer",
304
- "primaryKey": true,
305
- "notNull": true,
306
- "autoincrement": false
307
- },
308
- "language": {
309
- "name": "language",
310
- "type": "text",
311
- "primaryKey": false,
312
- "notNull": true,
313
- "autoincrement": false
314
- },
315
- "cache_key": {
316
- "name": "cache_key",
317
- "type": "text",
318
- "primaryKey": false,
319
- "notNull": true,
320
- "autoincrement": false
321
- },
322
- "files_fingerprint": {
323
- "name": "files_fingerprint",
324
- "type": "text",
325
- "primaryKey": false,
326
- "notNull": true,
327
- "autoincrement": false
328
- },
329
- "built_at": {
330
- "name": "built_at",
331
- "type": "text",
332
- "primaryKey": false,
333
- "notNull": true,
334
- "autoincrement": false
335
- },
336
- "payload": {
337
- "name": "payload",
338
- "type": "text",
339
- "primaryKey": false,
340
- "notNull": true,
341
- "autoincrement": false
342
- }
343
- },
344
- "indexes": {},
345
- "foreignKeys": {},
346
- "compositePrimaryKeys": {},
347
- "uniqueConstraints": {},
348
- "checkConstraints": {}
349
- }
350
- },
351
- "views": {},
352
- "enums": {},
353
- "_meta": {
354
- "schemas": {},
355
- "tables": {},
356
- "columns": {}
357
- },
358
- "internal": {
359
- "indexes": {
360
- "sessions_tool_timestamp_idx": {
361
- "columns": {
362
- "\"timestamp\" DESC": {
363
- "isExpression": true
364
- }
365
- }
366
- }
367
- }
368
- }
369
- }