@fideliosai/db 0.0.39 → 0.0.40

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fideliosai/db",
3
- "version": "0.0.39",
3
+ "version": "0.0.40",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/fideliosai/fidelios",
6
6
  "bugs": {
@@ -30,7 +30,7 @@
30
30
  ],
31
31
  "dependencies": {
32
32
  "@aws-sdk/client-s3": "^3.888.0",
33
- "@fideliosai/shared": "0.0.39",
33
+ "@fideliosai/shared": "0.0.40",
34
34
  "drizzle-orm": "^0.38.4",
35
35
  "embedded-postgres": "^18.1.0-beta.16",
36
36
  "postgres": "^3.4.5"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=analytics.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.test.d.ts","sourceRoot":"","sources":["../src/analytics.test.ts"],"names":[],"mappings":""}
@@ -1,195 +0,0 @@
1
- import { afterEach, describe, expect, it } from "vitest";
2
- import postgres from "postgres";
3
- import { getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase, } from "./test-embedded-postgres.js";
4
- const cleanups = [];
5
- const embeddedPostgresSupport = await getEmbeddedPostgresTestSupport();
6
- const describeEmbeddedPostgres = embeddedPostgresSupport.supported
7
- ? describe
8
- : describe.skip;
9
- async function createTempDatabase() {
10
- const db = await startEmbeddedPostgresTestDatabase("fidelios-db-analytics-");
11
- cleanups.push(db.cleanup);
12
- return db.connectionString;
13
- }
14
- afterEach(async () => {
15
- while (cleanups.length > 0) {
16
- const cleanup = cleanups.pop();
17
- await cleanup?.();
18
- }
19
- });
20
- if (!embeddedPostgresSupport.supported) {
21
- console.warn(`Skipping analytics tests: ${embeddedPostgresSupport.reason ?? "unsupported environment"}`);
22
- }
23
- describeEmbeddedPostgres("analytics schema", () => {
24
- it("creates all 4 analytics tables with correct structure", async () => {
25
- const connectionString = await createTempDatabase();
26
- const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
27
- try {
28
- const tables = await sql `
29
- SELECT tablename FROM pg_tables
30
- WHERE tablename LIKE 'analytics_%'
31
- ORDER BY tablename
32
- `;
33
- expect(tables.map((r) => r.tablename)).toEqual([
34
- "analytics_articles",
35
- "analytics_markets",
36
- "analytics_price_history",
37
- "analytics_signals",
38
- ]);
39
- }
40
- finally {
41
- await sql.end();
42
- }
43
- }, { timeout: 120_000 });
44
- it("pgvector extension is enabled and vector columns work", async () => {
45
- const connectionString = await createTempDatabase();
46
- const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
47
- try {
48
- const extensions = await sql `
49
- SELECT extname FROM pg_extension WHERE extname = 'vector'
50
- `;
51
- expect(extensions).toHaveLength(1);
52
- // Insert article with embedding
53
- const embedding = new Array(768).fill(0).map((_, i) => Math.sin(i / 100));
54
- const embeddingStr = `[${embedding.join(",")}]`;
55
- await sql `
56
- INSERT INTO analytics_articles (title, content, published_at, source, tags, embedding)
57
- VALUES (
58
- 'Test Vector Article',
59
- 'Testing pgvector embeddings for similarity search',
60
- '2026-04-01T00:00:00Z',
61
- 'test',
62
- ${sql.array(["test", "vector"])},
63
- ${embeddingStr}::vector
64
- )
65
- `;
66
- const rows = await sql `SELECT id, embedding FROM analytics_articles LIMIT 1`;
67
- expect(rows).toHaveLength(1);
68
- expect(rows[0].embedding).toBeTruthy();
69
- }
70
- finally {
71
- await sql.end();
72
- }
73
- }, { timeout: 120_000 });
74
- it("tsvector search_vector column is auto-generated", async () => {
75
- const connectionString = await createTempDatabase();
76
- const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
77
- try {
78
- await sql `
79
- INSERT INTO analytics_articles (title, content, published_at)
80
- VALUES ('Prediction Markets Rise', 'Polymarket sees record volume in election markets', '2026-04-01T00:00:00Z')
81
- `;
82
- const rows = await sql `
83
- SELECT search_vector::text FROM analytics_articles
84
- WHERE search_vector @@ to_tsquery('english', 'market')
85
- `;
86
- expect(rows).toHaveLength(1);
87
- const noRows = await sql `
88
- SELECT id FROM analytics_articles
89
- WHERE search_vector @@ to_tsquery('english', 'blockchain')
90
- `;
91
- expect(noRows).toHaveLength(0);
92
- }
93
- finally {
94
- await sql.end();
95
- }
96
- }, { timeout: 120_000 });
97
- it("inserts sample rows into all 4 tables with foreign key relationships", async () => {
98
- const connectionString = await createTempDatabase();
99
- const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
100
- try {
101
- // Insert article
102
- const [article] = await sql `
103
- INSERT INTO analytics_articles (title, content, published_at, source, tags)
104
- VALUES ('Election Coverage', 'Detailed analysis of prediction market movements', '2026-04-01T00:00:00Z', 'reuters', ARRAY['politics', 'markets']::text[])
105
- RETURNING id
106
- `;
107
- // Insert market
108
- const [market] = await sql `
109
- INSERT INTO analytics_markets (external_id, question, description, category, outcome_prices, volume_total)
110
- VALUES ('poly-123', 'Will candidate X win?', 'Presidential election market', 'politics', '{"Yes": 0.65, "No": 0.35}'::jsonb, 1500000)
111
- RETURNING id
112
- `;
113
- // Insert price history
114
- await sql `
115
- INSERT INTO analytics_price_history (market_id, timestamp, price)
116
- VALUES
117
- (${market.id}, '2026-04-01T00:00:00Z', 0.55),
118
- (${market.id}, '2026-04-02T00:00:00Z', 0.60),
119
- (${market.id}, '2026-04-03T00:00:00Z', 0.65)
120
- `;
121
- // Insert signal
122
- await sql `
123
- INSERT INTO analytics_signals (article_id, market_id, similarity_score, time_delta_hours, price_at_publish, signal_quality)
124
- VALUES (${article.id}, ${market.id}, 0.87, 12, 0.55, 'high')
125
- `;
126
- // Verify counts
127
- const articleCount = await sql `SELECT count(*) as c FROM analytics_articles`;
128
- const marketCount = await sql `SELECT count(*) as c FROM analytics_markets`;
129
- const priceCount = await sql `SELECT count(*) as c FROM analytics_price_history`;
130
- const signalCount = await sql `SELECT count(*) as c FROM analytics_signals`;
131
- expect(Number(articleCount[0].c)).toBe(1);
132
- expect(Number(marketCount[0].c)).toBe(1);
133
- expect(Number(priceCount[0].c)).toBe(3);
134
- expect(Number(signalCount[0].c)).toBe(1);
135
- }
136
- finally {
137
- await sql.end();
138
- }
139
- }, { timeout: 120_000 });
140
- it("hybrid search (RRF) query returns ranked results", async () => {
141
- const connectionString = await createTempDatabase();
142
- const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
143
- try {
144
- // Insert multiple articles with embeddings
145
- const baseEmbedding = new Array(768).fill(0).map((_, i) => Math.sin(i / 100));
146
- const similarEmbedding = baseEmbedding.map((v) => v + Math.random() * 0.01);
147
- const differentEmbedding = new Array(768).fill(0).map((_, i) => Math.cos(i / 50));
148
- await sql `
149
- INSERT INTO analytics_articles (title, content, published_at, embedding) VALUES
150
- ('Prediction Markets Surge', 'Polymarket trading volume hits all-time high as election approaches', '2026-04-01T00:00:00Z', ${`[${baseEmbedding.join(",")}]`}::vector),
151
- ('Market Analysis Report', 'Election prediction markets show increased activity and accuracy', '2026-04-02T00:00:00Z', ${`[${similarEmbedding.join(",")}]`}::vector),
152
- ('Weather Forecast Today', 'Sunny skies expected across the region with mild temperatures', '2026-04-03T00:00:00Z', ${`[${differentEmbedding.join(",")}]`}::vector)
153
- `;
154
- // Hybrid search: combine full-text search with vector similarity using RRF
155
- const queryEmbedding = `[${baseEmbedding.join(",")}]`;
156
- const searchQuery = "prediction markets election";
157
- const k = 60; // RRF constant
158
- const results = await sql `
159
- WITH text_ranked AS (
160
- SELECT id, title,
161
- ROW_NUMBER() OVER (ORDER BY ts_rank(search_vector, websearch_to_tsquery('english', ${searchQuery})) DESC) as text_rank
162
- FROM analytics_articles
163
- WHERE search_vector @@ websearch_to_tsquery('english', ${searchQuery})
164
- ),
165
- vector_ranked AS (
166
- SELECT id, title,
167
- ROW_NUMBER() OVER (ORDER BY embedding <=> ${queryEmbedding}::vector) as vec_rank
168
- FROM analytics_articles
169
- WHERE embedding IS NOT NULL
170
- ORDER BY embedding <=> ${queryEmbedding}::vector
171
- LIMIT 10
172
- )
173
- SELECT
174
- COALESCE(t.id, v.id) as id,
175
- COALESCE(t.title, v.title) as title,
176
- COALESCE(1.0 / (${k} + t.text_rank), 0) + COALESCE(1.0 / (${k} + v.vec_rank), 0) as rrf_score
177
- FROM text_ranked t
178
- FULL OUTER JOIN vector_ranked v ON t.id = v.id
179
- ORDER BY rrf_score DESC
180
- `;
181
- // The prediction markets article should rank highest (matches both text and vector)
182
- expect(results.length).toBeGreaterThanOrEqual(2);
183
- expect(results[0].title).toBe("Prediction Markets Surge");
184
- // The weather article should rank lower or not appear in text search
185
- const weatherResult = results.find((r) => r.title === "Weather Forecast Today");
186
- if (weatherResult) {
187
- expect(Number(weatherResult.rrf_score)).toBeLessThan(Number(results[0].rrf_score));
188
- }
189
- }
190
- finally {
191
- await sql.end();
192
- }
193
- }, { timeout: 120_000 });
194
- });
195
- //# sourceMappingURL=analytics.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.test.js","sourceRoot":"","sources":["../src/analytics.test.ts"],"names":[],"mappings":"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"}
@@ -1,603 +0,0 @@
1
- export declare const analyticsArticles: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
- name: "analytics_articles";
3
- schema: undefined;
4
- columns: {
5
- id: import("drizzle-orm/pg-core").PgColumn<{
6
- name: "id";
7
- tableName: "analytics_articles";
8
- dataType: "string";
9
- columnType: "PgUUID";
10
- data: string;
11
- driverParam: string;
12
- notNull: true;
13
- hasDefault: true;
14
- isPrimaryKey: true;
15
- isAutoincrement: false;
16
- hasRuntimeDefault: false;
17
- enumValues: undefined;
18
- baseColumn: never;
19
- identity: undefined;
20
- generated: undefined;
21
- }, {}, {}>;
22
- title: import("drizzle-orm/pg-core").PgColumn<{
23
- name: "title";
24
- tableName: "analytics_articles";
25
- dataType: "string";
26
- columnType: "PgText";
27
- data: string;
28
- driverParam: string;
29
- notNull: true;
30
- hasDefault: false;
31
- isPrimaryKey: false;
32
- isAutoincrement: false;
33
- hasRuntimeDefault: false;
34
- enumValues: [string, ...string[]];
35
- baseColumn: never;
36
- identity: undefined;
37
- generated: undefined;
38
- }, {}, {}>;
39
- content: import("drizzle-orm/pg-core").PgColumn<{
40
- name: "content";
41
- tableName: "analytics_articles";
42
- dataType: "string";
43
- columnType: "PgText";
44
- data: string;
45
- driverParam: string;
46
- notNull: true;
47
- hasDefault: false;
48
- isPrimaryKey: false;
49
- isAutoincrement: false;
50
- hasRuntimeDefault: false;
51
- enumValues: [string, ...string[]];
52
- baseColumn: never;
53
- identity: undefined;
54
- generated: undefined;
55
- }, {}, {}>;
56
- publishedAt: import("drizzle-orm/pg-core").PgColumn<{
57
- name: "published_at";
58
- tableName: "analytics_articles";
59
- dataType: "date";
60
- columnType: "PgTimestamp";
61
- data: Date;
62
- driverParam: string;
63
- notNull: true;
64
- hasDefault: false;
65
- isPrimaryKey: false;
66
- isAutoincrement: false;
67
- hasRuntimeDefault: false;
68
- enumValues: undefined;
69
- baseColumn: never;
70
- identity: undefined;
71
- generated: undefined;
72
- }, {}, {}>;
73
- source: import("drizzle-orm/pg-core").PgColumn<{
74
- name: "source";
75
- tableName: "analytics_articles";
76
- dataType: "string";
77
- columnType: "PgText";
78
- data: string;
79
- driverParam: string;
80
- notNull: false;
81
- hasDefault: false;
82
- isPrimaryKey: false;
83
- isAutoincrement: false;
84
- hasRuntimeDefault: false;
85
- enumValues: [string, ...string[]];
86
- baseColumn: never;
87
- identity: undefined;
88
- generated: undefined;
89
- }, {}, {}>;
90
- sourceUrl: import("drizzle-orm/pg-core").PgColumn<{
91
- name: "source_url";
92
- tableName: "analytics_articles";
93
- dataType: "string";
94
- columnType: "PgText";
95
- data: string;
96
- driverParam: string;
97
- notNull: false;
98
- hasDefault: false;
99
- isPrimaryKey: false;
100
- isAutoincrement: false;
101
- hasRuntimeDefault: false;
102
- enumValues: [string, ...string[]];
103
- baseColumn: never;
104
- identity: undefined;
105
- generated: undefined;
106
- }, {}, {}>;
107
- tags: import("drizzle-orm/pg-core").PgColumn<{
108
- name: "tags";
109
- tableName: "analytics_articles";
110
- dataType: "array";
111
- columnType: "PgArray";
112
- data: string[];
113
- driverParam: string | string[];
114
- notNull: false;
115
- hasDefault: false;
116
- isPrimaryKey: false;
117
- isAutoincrement: false;
118
- hasRuntimeDefault: false;
119
- enumValues: [string, ...string[]];
120
- baseColumn: import("drizzle-orm").Column<{
121
- name: "tags";
122
- tableName: "analytics_articles";
123
- dataType: "string";
124
- columnType: "PgText";
125
- data: string;
126
- driverParam: string;
127
- notNull: false;
128
- hasDefault: false;
129
- isPrimaryKey: false;
130
- isAutoincrement: false;
131
- hasRuntimeDefault: false;
132
- enumValues: [string, ...string[]];
133
- baseColumn: never;
134
- identity: undefined;
135
- generated: undefined;
136
- }, {}, {}>;
137
- identity: undefined;
138
- generated: undefined;
139
- }, {}, {
140
- baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
141
- name: "tags";
142
- dataType: "string";
143
- columnType: "PgText";
144
- data: string;
145
- enumValues: [string, ...string[]];
146
- driverParam: string;
147
- }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
148
- size: undefined;
149
- }>;
150
- embedding: import("drizzle-orm/pg-core").PgColumn<{
151
- name: "embedding";
152
- tableName: "analytics_articles";
153
- dataType: "array";
154
- columnType: "PgVector";
155
- data: number[];
156
- driverParam: string;
157
- notNull: false;
158
- hasDefault: false;
159
- isPrimaryKey: false;
160
- isAutoincrement: false;
161
- hasRuntimeDefault: false;
162
- enumValues: undefined;
163
- baseColumn: never;
164
- identity: undefined;
165
- generated: undefined;
166
- }, {}, {
167
- dimensions: 768;
168
- }>;
169
- };
170
- dialect: "pg";
171
- }>;
172
- export declare const analyticsMarkets: import("drizzle-orm/pg-core").PgTableWithColumns<{
173
- name: "analytics_markets";
174
- schema: undefined;
175
- columns: {
176
- id: import("drizzle-orm/pg-core").PgColumn<{
177
- name: "id";
178
- tableName: "analytics_markets";
179
- dataType: "string";
180
- columnType: "PgUUID";
181
- data: string;
182
- driverParam: string;
183
- notNull: true;
184
- hasDefault: true;
185
- isPrimaryKey: true;
186
- isAutoincrement: false;
187
- hasRuntimeDefault: false;
188
- enumValues: undefined;
189
- baseColumn: never;
190
- identity: undefined;
191
- generated: undefined;
192
- }, {}, {}>;
193
- externalId: import("drizzle-orm/pg-core").PgColumn<{
194
- name: "external_id";
195
- tableName: "analytics_markets";
196
- dataType: "string";
197
- columnType: "PgText";
198
- data: string;
199
- driverParam: string;
200
- notNull: false;
201
- hasDefault: false;
202
- isPrimaryKey: false;
203
- isAutoincrement: false;
204
- hasRuntimeDefault: false;
205
- enumValues: [string, ...string[]];
206
- baseColumn: never;
207
- identity: undefined;
208
- generated: undefined;
209
- }, {}, {}>;
210
- question: import("drizzle-orm/pg-core").PgColumn<{
211
- name: "question";
212
- tableName: "analytics_markets";
213
- dataType: "string";
214
- columnType: "PgText";
215
- data: string;
216
- driverParam: string;
217
- notNull: true;
218
- hasDefault: false;
219
- isPrimaryKey: false;
220
- isAutoincrement: false;
221
- hasRuntimeDefault: false;
222
- enumValues: [string, ...string[]];
223
- baseColumn: never;
224
- identity: undefined;
225
- generated: undefined;
226
- }, {}, {}>;
227
- description: import("drizzle-orm/pg-core").PgColumn<{
228
- name: "description";
229
- tableName: "analytics_markets";
230
- dataType: "string";
231
- columnType: "PgText";
232
- data: string;
233
- driverParam: string;
234
- notNull: false;
235
- hasDefault: false;
236
- isPrimaryKey: false;
237
- isAutoincrement: false;
238
- hasRuntimeDefault: false;
239
- enumValues: [string, ...string[]];
240
- baseColumn: never;
241
- identity: undefined;
242
- generated: undefined;
243
- }, {}, {}>;
244
- category: import("drizzle-orm/pg-core").PgColumn<{
245
- name: "category";
246
- tableName: "analytics_markets";
247
- dataType: "string";
248
- columnType: "PgText";
249
- data: string;
250
- driverParam: string;
251
- notNull: false;
252
- hasDefault: false;
253
- isPrimaryKey: false;
254
- isAutoincrement: false;
255
- hasRuntimeDefault: false;
256
- enumValues: [string, ...string[]];
257
- baseColumn: never;
258
- identity: undefined;
259
- generated: undefined;
260
- }, {}, {}>;
261
- outcome: import("drizzle-orm/pg-core").PgColumn<{
262
- name: "outcome";
263
- tableName: "analytics_markets";
264
- dataType: "string";
265
- columnType: "PgText";
266
- data: string;
267
- driverParam: string;
268
- notNull: false;
269
- hasDefault: false;
270
- isPrimaryKey: false;
271
- isAutoincrement: false;
272
- hasRuntimeDefault: false;
273
- enumValues: [string, ...string[]];
274
- baseColumn: never;
275
- identity: undefined;
276
- generated: undefined;
277
- }, {}, {}>;
278
- outcomePrices: import("drizzle-orm/pg-core").PgColumn<{
279
- name: "outcome_prices";
280
- tableName: "analytics_markets";
281
- dataType: "json";
282
- columnType: "PgJsonb";
283
- data: unknown;
284
- driverParam: unknown;
285
- notNull: false;
286
- hasDefault: false;
287
- isPrimaryKey: false;
288
- isAutoincrement: false;
289
- hasRuntimeDefault: false;
290
- enumValues: undefined;
291
- baseColumn: never;
292
- identity: undefined;
293
- generated: undefined;
294
- }, {}, {}>;
295
- closedAt: import("drizzle-orm/pg-core").PgColumn<{
296
- name: "closed_at";
297
- tableName: "analytics_markets";
298
- dataType: "date";
299
- columnType: "PgTimestamp";
300
- data: Date;
301
- driverParam: string;
302
- notNull: false;
303
- hasDefault: false;
304
- isPrimaryKey: false;
305
- isAutoincrement: false;
306
- hasRuntimeDefault: false;
307
- enumValues: undefined;
308
- baseColumn: never;
309
- identity: undefined;
310
- generated: undefined;
311
- }, {}, {}>;
312
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
313
- name: "created_at";
314
- tableName: "analytics_markets";
315
- dataType: "date";
316
- columnType: "PgTimestamp";
317
- data: Date;
318
- driverParam: string;
319
- notNull: false;
320
- hasDefault: false;
321
- isPrimaryKey: false;
322
- isAutoincrement: false;
323
- hasRuntimeDefault: false;
324
- enumValues: undefined;
325
- baseColumn: never;
326
- identity: undefined;
327
- generated: undefined;
328
- }, {}, {}>;
329
- volumeTotal: import("drizzle-orm/pg-core").PgColumn<{
330
- name: "volume_total";
331
- tableName: "analytics_markets";
332
- dataType: "string";
333
- columnType: "PgNumeric";
334
- data: string;
335
- driverParam: string;
336
- notNull: false;
337
- hasDefault: false;
338
- isPrimaryKey: false;
339
- isAutoincrement: false;
340
- hasRuntimeDefault: false;
341
- enumValues: undefined;
342
- baseColumn: never;
343
- identity: undefined;
344
- generated: undefined;
345
- }, {}, {}>;
346
- clobTokenId: import("drizzle-orm/pg-core").PgColumn<{
347
- name: "clob_token_id";
348
- tableName: "analytics_markets";
349
- dataType: "string";
350
- columnType: "PgText";
351
- data: string;
352
- driverParam: string;
353
- notNull: false;
354
- hasDefault: false;
355
- isPrimaryKey: false;
356
- isAutoincrement: false;
357
- hasRuntimeDefault: false;
358
- enumValues: [string, ...string[]];
359
- baseColumn: never;
360
- identity: undefined;
361
- generated: undefined;
362
- }, {}, {}>;
363
- embedding: import("drizzle-orm/pg-core").PgColumn<{
364
- name: "embedding";
365
- tableName: "analytics_markets";
366
- dataType: "array";
367
- columnType: "PgVector";
368
- data: number[];
369
- driverParam: string;
370
- notNull: false;
371
- hasDefault: false;
372
- isPrimaryKey: false;
373
- isAutoincrement: false;
374
- hasRuntimeDefault: false;
375
- enumValues: undefined;
376
- baseColumn: never;
377
- identity: undefined;
378
- generated: undefined;
379
- }, {}, {
380
- dimensions: 768;
381
- }>;
382
- };
383
- dialect: "pg";
384
- }>;
385
- export declare const analyticsPriceHistory: import("drizzle-orm/pg-core").PgTableWithColumns<{
386
- name: "analytics_price_history";
387
- schema: undefined;
388
- columns: {
389
- marketId: import("drizzle-orm/pg-core").PgColumn<{
390
- name: "market_id";
391
- tableName: "analytics_price_history";
392
- dataType: "string";
393
- columnType: "PgUUID";
394
- data: string;
395
- driverParam: string;
396
- notNull: true;
397
- hasDefault: false;
398
- isPrimaryKey: false;
399
- isAutoincrement: false;
400
- hasRuntimeDefault: false;
401
- enumValues: undefined;
402
- baseColumn: never;
403
- identity: undefined;
404
- generated: undefined;
405
- }, {}, {}>;
406
- timestamp: import("drizzle-orm/pg-core").PgColumn<{
407
- name: "timestamp";
408
- tableName: "analytics_price_history";
409
- dataType: "date";
410
- columnType: "PgTimestamp";
411
- data: Date;
412
- driverParam: string;
413
- notNull: true;
414
- hasDefault: false;
415
- isPrimaryKey: false;
416
- isAutoincrement: false;
417
- hasRuntimeDefault: false;
418
- enumValues: undefined;
419
- baseColumn: never;
420
- identity: undefined;
421
- generated: undefined;
422
- }, {}, {}>;
423
- price: import("drizzle-orm/pg-core").PgColumn<{
424
- name: "price";
425
- tableName: "analytics_price_history";
426
- dataType: "string";
427
- columnType: "PgNumeric";
428
- data: string;
429
- driverParam: string;
430
- notNull: true;
431
- hasDefault: false;
432
- isPrimaryKey: false;
433
- isAutoincrement: false;
434
- hasRuntimeDefault: false;
435
- enumValues: undefined;
436
- baseColumn: never;
437
- identity: undefined;
438
- generated: undefined;
439
- }, {}, {}>;
440
- };
441
- dialect: "pg";
442
- }>;
443
- export declare const analyticsSignals: import("drizzle-orm/pg-core").PgTableWithColumns<{
444
- name: "analytics_signals";
445
- schema: undefined;
446
- columns: {
447
- id: import("drizzle-orm/pg-core").PgColumn<{
448
- name: "id";
449
- tableName: "analytics_signals";
450
- dataType: "string";
451
- columnType: "PgUUID";
452
- data: string;
453
- driverParam: string;
454
- notNull: true;
455
- hasDefault: true;
456
- isPrimaryKey: true;
457
- isAutoincrement: false;
458
- hasRuntimeDefault: false;
459
- enumValues: undefined;
460
- baseColumn: never;
461
- identity: undefined;
462
- generated: undefined;
463
- }, {}, {}>;
464
- articleId: import("drizzle-orm/pg-core").PgColumn<{
465
- name: "article_id";
466
- tableName: "analytics_signals";
467
- dataType: "string";
468
- columnType: "PgUUID";
469
- data: string;
470
- driverParam: string;
471
- notNull: false;
472
- hasDefault: false;
473
- isPrimaryKey: false;
474
- isAutoincrement: false;
475
- hasRuntimeDefault: false;
476
- enumValues: undefined;
477
- baseColumn: never;
478
- identity: undefined;
479
- generated: undefined;
480
- }, {}, {}>;
481
- marketId: import("drizzle-orm/pg-core").PgColumn<{
482
- name: "market_id";
483
- tableName: "analytics_signals";
484
- dataType: "string";
485
- columnType: "PgUUID";
486
- data: string;
487
- driverParam: string;
488
- notNull: false;
489
- hasDefault: false;
490
- isPrimaryKey: false;
491
- isAutoincrement: false;
492
- hasRuntimeDefault: false;
493
- enumValues: undefined;
494
- baseColumn: never;
495
- identity: undefined;
496
- generated: undefined;
497
- }, {}, {}>;
498
- similarityScore: import("drizzle-orm/pg-core").PgColumn<{
499
- name: "similarity_score";
500
- tableName: "analytics_signals";
501
- dataType: "string";
502
- columnType: "PgNumeric";
503
- data: string;
504
- driverParam: string;
505
- notNull: false;
506
- hasDefault: false;
507
- isPrimaryKey: false;
508
- isAutoincrement: false;
509
- hasRuntimeDefault: false;
510
- enumValues: undefined;
511
- baseColumn: never;
512
- identity: undefined;
513
- generated: undefined;
514
- }, {}, {}>;
515
- timeDeltaHours: import("drizzle-orm/pg-core").PgColumn<{
516
- name: "time_delta_hours";
517
- tableName: "analytics_signals";
518
- dataType: "number";
519
- columnType: "PgInteger";
520
- data: number;
521
- driverParam: string | number;
522
- notNull: false;
523
- hasDefault: false;
524
- isPrimaryKey: false;
525
- isAutoincrement: false;
526
- hasRuntimeDefault: false;
527
- enumValues: undefined;
528
- baseColumn: never;
529
- identity: undefined;
530
- generated: undefined;
531
- }, {}, {}>;
532
- priceAtPublish: import("drizzle-orm/pg-core").PgColumn<{
533
- name: "price_at_publish";
534
- tableName: "analytics_signals";
535
- dataType: "string";
536
- columnType: "PgNumeric";
537
- data: string;
538
- driverParam: string;
539
- notNull: false;
540
- hasDefault: false;
541
- isPrimaryKey: false;
542
- isAutoincrement: false;
543
- hasRuntimeDefault: false;
544
- enumValues: undefined;
545
- baseColumn: never;
546
- identity: undefined;
547
- generated: undefined;
548
- }, {}, {}>;
549
- priceAtResolution: import("drizzle-orm/pg-core").PgColumn<{
550
- name: "price_at_resolution";
551
- tableName: "analytics_signals";
552
- dataType: "string";
553
- columnType: "PgNumeric";
554
- data: string;
555
- driverParam: string;
556
- notNull: false;
557
- hasDefault: false;
558
- isPrimaryKey: false;
559
- isAutoincrement: false;
560
- hasRuntimeDefault: false;
561
- enumValues: undefined;
562
- baseColumn: never;
563
- identity: undefined;
564
- generated: undefined;
565
- }, {}, {}>;
566
- signalQuality: import("drizzle-orm/pg-core").PgColumn<{
567
- name: "signal_quality";
568
- tableName: "analytics_signals";
569
- dataType: "string";
570
- columnType: "PgText";
571
- data: string;
572
- driverParam: string;
573
- notNull: false;
574
- hasDefault: false;
575
- isPrimaryKey: false;
576
- isAutoincrement: false;
577
- hasRuntimeDefault: false;
578
- enumValues: [string, ...string[]];
579
- baseColumn: never;
580
- identity: undefined;
581
- generated: undefined;
582
- }, {}, {}>;
583
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
584
- name: "created_at";
585
- tableName: "analytics_signals";
586
- dataType: "date";
587
- columnType: "PgTimestamp";
588
- data: Date;
589
- driverParam: string;
590
- notNull: false;
591
- hasDefault: true;
592
- isPrimaryKey: false;
593
- isAutoincrement: false;
594
- hasRuntimeDefault: false;
595
- enumValues: undefined;
596
- baseColumn: never;
597
- identity: undefined;
598
- generated: undefined;
599
- }, {}, {}>;
600
- };
601
- dialect: "pg";
602
- }>;
603
- //# sourceMappingURL=analytics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/schema/analytics.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB7B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYjC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC"}
@@ -1,55 +0,0 @@
1
- import { pgTable, uuid, text, timestamp, numeric, integer, jsonb, index, primaryKey, } from "drizzle-orm/pg-core";
2
- import { vector } from "drizzle-orm/pg-core";
3
- // Note: search_vector (tsvector GENERATED ALWAYS AS) is added via raw SQL in the migration
4
- // because Drizzle does not support generated tsvector columns natively.
5
- export const analyticsArticles = pgTable("analytics_articles", {
6
- id: uuid("id").primaryKey().defaultRandom(),
7
- title: text("title").notNull(),
8
- content: text("content").notNull(),
9
- publishedAt: timestamp("published_at", { withTimezone: true }).notNull(),
10
- source: text("source"),
11
- sourceUrl: text("source_url"),
12
- tags: text("tags").array(),
13
- embedding: vector("embedding", { dimensions: 768 }),
14
- }, (table) => ({
15
- embeddingIdx: index("analytics_articles_embedding_idx").using("hnsw", table.embedding.op("vector_cosine_ops")),
16
- publishedAtIdx: index("analytics_articles_published_at_idx").on(table.publishedAt),
17
- }));
18
- export const analyticsMarkets = pgTable("analytics_markets", {
19
- id: uuid("id").primaryKey().defaultRandom(),
20
- externalId: text("external_id").unique(),
21
- question: text("question").notNull(),
22
- description: text("description"),
23
- category: text("category"),
24
- outcome: text("outcome"),
25
- outcomePrices: jsonb("outcome_prices"),
26
- closedAt: timestamp("closed_at", { withTimezone: true }),
27
- createdAt: timestamp("created_at", { withTimezone: true }),
28
- volumeTotal: numeric("volume_total"),
29
- clobTokenId: text("clob_token_id"),
30
- embedding: vector("embedding", { dimensions: 768 }),
31
- }, (table) => ({
32
- embeddingIdx: index("analytics_markets_embedding_idx").using("hnsw", table.embedding.op("vector_cosine_ops")),
33
- closedAtIdx: index("analytics_markets_closed_at_idx").on(table.closedAt),
34
- }));
35
- export const analyticsPriceHistory = pgTable("analytics_price_history", {
36
- marketId: uuid("market_id")
37
- .notNull()
38
- .references(() => analyticsMarkets.id),
39
- timestamp: timestamp("timestamp", { withTimezone: true }).notNull(),
40
- price: numeric("price").notNull(),
41
- }, (table) => ({
42
- pk: primaryKey({ columns: [table.marketId, table.timestamp] }),
43
- }));
44
- export const analyticsSignals = pgTable("analytics_signals", {
45
- id: uuid("id").primaryKey().defaultRandom(),
46
- articleId: uuid("article_id").references(() => analyticsArticles.id),
47
- marketId: uuid("market_id").references(() => analyticsMarkets.id),
48
- similarityScore: numeric("similarity_score"),
49
- timeDeltaHours: integer("time_delta_hours"),
50
- priceAtPublish: numeric("price_at_publish"),
51
- priceAtResolution: numeric("price_at_resolution"),
52
- signalQuality: text("signal_quality"),
53
- createdAt: timestamp("created_at", { withTimezone: true }).defaultNow(),
54
- });
55
- //# sourceMappingURL=analytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/schema/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,KAAK,EAEL,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,2FAA2F;AAC3F,wEAAwE;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CACtC,oBAAoB,EACpB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IAC3C,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACxE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;IAC1B,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;CACpD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC,KAAK,CAC3D,MAAM,EACN,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,mBAAmB,CAAC,CACxC;IACD,cAAc,EAAE,KAAK,CAAC,qCAAqC,CAAC,CAAC,EAAE,CAC7D,KAAK,CAAC,WAAW,CAClB;CACF,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CACrC,mBAAmB,EACnB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IAC3C,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;IAC1B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;IACtC,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxD,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1D,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC;IACpC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;CACpD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC,KAAK,CAC1D,MAAM,EACN,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,mBAAmB,CAAC,CACxC;IACD,WAAW,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;CACzE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAC1C,yBAAyB,EACzB;IACE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;SACxB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACnE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;CAClC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;CAC/D,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE;IAC3D,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IAC3C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACpE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACjE,eAAe,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAC5C,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAC3C,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAC3C,iBAAiB,EAAE,OAAO,CAAC,qBAAqB,CAAC;IACjD,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE;CACxE,CAAC,CAAC"}