@the-situation/indexer 0.13.0 → 0.14.0
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/README.md +21 -0
- package/dist/__tests__/performance/perf-fixtures.d.ts +26 -0
- package/dist/__tests__/performance/perf-fixtures.d.ts.map +1 -0
- package/dist/__tests__/performance/perf-fixtures.js +172 -0
- package/dist/__tests__/performance/perf-fixtures.js.map +1 -0
- package/dist/__tests__/performance/perf-utils.d.ts +42 -0
- package/dist/__tests__/performance/perf-utils.d.ts.map +1 -0
- package/dist/__tests__/performance/perf-utils.js +91 -0
- package/dist/__tests__/performance/perf-utils.js.map +1 -0
- package/dist/api/app.d.ts +1 -1
- package/dist/api/routes/admin-subscriptions.d.ts +1 -1
- package/dist/api/routes/admin.d.ts.map +1 -1
- package/dist/api/routes/admin.js +4 -0
- package/dist/api/routes/admin.js.map +1 -1
- package/dist/api/routes/market-events.d.ts.map +1 -1
- package/dist/api/routes/market-events.js +8 -0
- package/dist/api/routes/market-events.js.map +1 -1
- package/dist/api/routes/markets.d.ts.map +1 -1
- package/dist/api/routes/markets.js +8 -0
- package/dist/api/routes/markets.js.map +1 -1
- package/dist/api/routes/trader-events.d.ts.map +1 -1
- package/dist/api/routes/trader-events.js +8 -0
- package/dist/api/routes/trader-events.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +4 -0
- package/dist/db/connection.js.map +1 -1
- package/dist/db/repositories/activity-feed.d.ts +3 -0
- package/dist/db/repositories/activity-feed.d.ts.map +1 -1
- package/dist/db/repositories/activity-feed.js +33 -18
- package/dist/db/repositories/activity-feed.js.map +1 -1
- package/dist/db/repositories/event.d.ts +22 -0
- package/dist/db/repositories/event.d.ts.map +1 -1
- package/dist/db/repositories/event.js +139 -75
- package/dist/db/repositories/event.js.map +1 -1
- package/dist/db/repositories/lp-position.d.ts +2 -10
- package/dist/db/repositories/lp-position.d.ts.map +1 -1
- package/dist/db/repositories/lp-position.js +54 -52
- package/dist/db/repositories/lp-position.js.map +1 -1
- package/dist/db/repositories/market-state.d.ts +10 -0
- package/dist/db/repositories/market-state.d.ts.map +1 -1
- package/dist/db/repositories/market-state.js +16 -5
- package/dist/db/repositories/market-state.js.map +1 -1
- package/dist/db/repositories/market.d.ts +7 -0
- package/dist/db/repositories/market.d.ts.map +1 -1
- package/dist/db/repositories/market.js +32 -24
- package/dist/db/repositories/market.js.map +1 -1
- package/dist/db/repositories/multinoulli-snapshots.d.ts +1 -0
- package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -1
- package/dist/db/repositories/multinoulli-snapshots.js +7 -5
- package/dist/db/repositories/multinoulli-snapshots.js.map +1 -1
- package/dist/db/repositories/position.d.ts +1 -0
- package/dist/db/repositories/position.d.ts.map +1 -1
- package/dist/db/repositories/position.js +9 -0
- package/dist/db/repositories/position.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +114 -5
- package/dist/db/schema.js.map +1 -1
- package/dist/etl/decoder.js +16 -0
- package/dist/etl/decoder.js.map +1 -1
- package/dist/etl/event-indexer.d.ts.map +1 -1
- package/dist/etl/event-indexer.js +138 -74
- package/dist/etl/event-indexer.js.map +1 -1
- package/dist/etl/lp-position-refresher.d.ts +9 -3
- package/dist/etl/lp-position-refresher.d.ts.map +1 -1
- package/dist/etl/lp-position-refresher.js +74 -21
- package/dist/etl/lp-position-refresher.js.map +1 -1
- package/dist/etl/position-refresher.d.ts +9 -3
- package/dist/etl/position-refresher.d.ts.map +1 -1
- package/dist/etl/position-refresher.js +44 -36
- package/dist/etl/position-refresher.js.map +1 -1
- package/dist/etl/state-refresher.d.ts +8 -3
- package/dist/etl/state-refresher.d.ts.map +1 -1
- package/dist/etl/state-refresher.js +137 -12
- package/dist/etl/state-refresher.js.map +1 -1
- package/dist/layers/ChainReaderLive.d.ts.map +1 -1
- package/dist/layers/ChainReaderLive.js +69 -22
- package/dist/layers/ChainReaderLive.js.map +1 -1
- package/dist/services/ChainReader.d.ts +21 -0
- package/dist/services/ChainReader.d.ts.map +1 -1
- package/dist/services/ChainReader.js.map +1 -1
- package/dist/types/api.d.ts +28 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/event.d.ts +24 -0
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/market.d.ts +16 -0
- package/dist/types/market.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position.js","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"AAoCA,MAAM,OAAO,oBAAoB;IACF;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,8DAA8D;IAC9D,cAAc,CAAC,aAAqB,EAAE,QAAgB;QACpD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;gEAC4D;IAC5D,mBAAmB,CAAC,aAAqB,EAAE,QAAgB;QACzD,
|
|
1
|
+
{"version":3,"file":"lp-position.js","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,25 @@ export interface UpsertMarketStateInput {
|
|
|
8
8
|
readonly mean: number | null;
|
|
9
9
|
readonly sigma: number | null;
|
|
10
10
|
readonly variance: number | null;
|
|
11
|
+
readonly mean_2?: number | null;
|
|
12
|
+
readonly sigma_2?: number | null;
|
|
13
|
+
readonly variance_2?: number | null;
|
|
14
|
+
readonly rho?: number | null;
|
|
11
15
|
readonly is_initialized: boolean;
|
|
12
16
|
readonly is_paused: boolean;
|
|
13
17
|
readonly is_settled: boolean;
|
|
14
18
|
readonly settlement_value: number | null;
|
|
19
|
+
readonly settlement_x1?: number | null;
|
|
20
|
+
readonly settlement_x2?: number | null;
|
|
15
21
|
readonly total_shares: string | null;
|
|
16
22
|
readonly total_backing: string | null;
|
|
17
23
|
readonly mean_raw: string | null;
|
|
18
24
|
readonly sigma_raw: string | null;
|
|
19
25
|
readonly variance_raw: string | null;
|
|
26
|
+
readonly mean_2_raw?: string | null;
|
|
27
|
+
readonly sigma_2_raw?: string | null;
|
|
28
|
+
readonly variance_2_raw?: string | null;
|
|
29
|
+
readonly rho_raw?: string | null;
|
|
20
30
|
readonly k: number | null;
|
|
21
31
|
readonly effective_k: number | null;
|
|
22
32
|
readonly payout_amplifier: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAmE3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAQ5C"}
|
|
@@ -6,28 +6,39 @@ export class MarketStateRepository {
|
|
|
6
6
|
upsert(input) {
|
|
7
7
|
this.db
|
|
8
8
|
.query(`INSERT INTO market_state
|
|
9
|
-
(market_address, mean, sigma, variance,
|
|
10
|
-
is_settled, settlement_value,
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
(market_address, mean, sigma, variance, mean_2, sigma_2, variance_2, rho,
|
|
10
|
+
is_initialized, is_paused, is_settled, settlement_value, settlement_x1, settlement_x2,
|
|
11
|
+
total_shares, total_backing, mean_raw, sigma_raw, variance_raw, mean_2_raw,
|
|
12
|
+
sigma_2_raw, variance_2_raw, rho_raw, k, effective_k, payout_amplifier, fetched_at)
|
|
13
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
|
|
13
14
|
ON CONFLICT(market_address) DO UPDATE SET
|
|
14
15
|
mean = excluded.mean,
|
|
15
16
|
sigma = excluded.sigma,
|
|
16
17
|
variance = excluded.variance,
|
|
18
|
+
mean_2 = excluded.mean_2,
|
|
19
|
+
sigma_2 = excluded.sigma_2,
|
|
20
|
+
variance_2 = excluded.variance_2,
|
|
21
|
+
rho = excluded.rho,
|
|
17
22
|
is_initialized = excluded.is_initialized,
|
|
18
23
|
is_paused = excluded.is_paused,
|
|
19
24
|
is_settled = excluded.is_settled,
|
|
20
25
|
settlement_value = excluded.settlement_value,
|
|
26
|
+
settlement_x1 = excluded.settlement_x1,
|
|
27
|
+
settlement_x2 = excluded.settlement_x2,
|
|
21
28
|
total_shares = excluded.total_shares,
|
|
22
29
|
total_backing = excluded.total_backing,
|
|
23
30
|
mean_raw = excluded.mean_raw,
|
|
24
31
|
sigma_raw = excluded.sigma_raw,
|
|
25
32
|
variance_raw = excluded.variance_raw,
|
|
33
|
+
mean_2_raw = excluded.mean_2_raw,
|
|
34
|
+
sigma_2_raw = excluded.sigma_2_raw,
|
|
35
|
+
variance_2_raw = excluded.variance_2_raw,
|
|
36
|
+
rho_raw = excluded.rho_raw,
|
|
26
37
|
k = excluded.k,
|
|
27
38
|
effective_k = excluded.effective_k,
|
|
28
39
|
payout_amplifier = excluded.payout_amplifier,
|
|
29
40
|
fetched_at = unixepoch()`)
|
|
30
|
-
.run(input.market_address, input.mean, input.sigma, input.variance, input.is_initialized ? 1 : 0, input.is_paused ? 1 : 0, input.is_settled ? 1 : 0, input.settlement_value, input.total_shares, input.total_backing, input.mean_raw, input.sigma_raw, input.variance_raw, input.k, input.effective_k, input.payout_amplifier);
|
|
41
|
+
.run(input.market_address, input.mean, input.sigma, input.variance, input.mean_2 ?? null, input.sigma_2 ?? null, input.variance_2 ?? null, input.rho ?? null, input.is_initialized ? 1 : 0, input.is_paused ? 1 : 0, input.is_settled ? 1 : 0, input.settlement_value, input.settlement_x1 ?? null, input.settlement_x2 ?? null, input.total_shares, input.total_backing, input.mean_raw, input.sigma_raw, input.variance_raw, input.mean_2_raw ?? null, input.sigma_2_raw ?? null, input.variance_2_raw ?? null, input.rho_raw ?? null, input.k, input.effective_k, input.payout_amplifier);
|
|
31
42
|
}
|
|
32
43
|
findByMarket(marketAddress) {
|
|
33
44
|
return (this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAmCA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAgC4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,GAAG,IAAI,IAAI,EACjB,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,gBAAgB,CACvB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAA2B,IAAI,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAAsB,CAAC;QACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -5,6 +5,13 @@ import type { Database } from 'bun:sqlite';
|
|
|
5
5
|
import type { CreateMarketInput, MarketRow, UpdateMarketInput } from '../../types';
|
|
6
6
|
export declare class MarketRepository {
|
|
7
7
|
private readonly db;
|
|
8
|
+
private readonly findAllStmt;
|
|
9
|
+
private readonly findAllActiveStmt;
|
|
10
|
+
private readonly findByAddressStmt;
|
|
11
|
+
private readonly createStmt;
|
|
12
|
+
private readonly updateStmt;
|
|
13
|
+
private readonly softDeleteStmt;
|
|
14
|
+
private readonly countStmt;
|
|
8
15
|
constructor(db: Database);
|
|
9
16
|
findAll(activeOnly?: boolean): MarketRow[];
|
|
10
17
|
findByAddress(address: string): MarketRow | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,gBAAgB;IASf,OAAO,CAAC,QAAQ,CAAC,EAAE;IAR/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;gBAE7B,EAAE,EAAE,QAAQ;IA0BzC,OAAO,CAAC,UAAU,UAAQ,GAAG,SAAS,EAAE;IAMxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIhD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS;IAyB3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IA8DnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKpC,KAAK,IAAI,MAAM;CAMhB"}
|
|
@@ -1,28 +1,44 @@
|
|
|
1
1
|
export class MarketRepository {
|
|
2
2
|
db;
|
|
3
|
+
findAllStmt;
|
|
4
|
+
findAllActiveStmt;
|
|
5
|
+
findByAddressStmt;
|
|
6
|
+
createStmt;
|
|
7
|
+
updateStmt;
|
|
8
|
+
softDeleteStmt;
|
|
9
|
+
countStmt;
|
|
3
10
|
constructor(db) {
|
|
4
11
|
this.db = db;
|
|
12
|
+
this.findAllStmt = this.db.query('SELECT * FROM markets ORDER BY created_at DESC');
|
|
13
|
+
this.findAllActiveStmt = this.db.query('SELECT * FROM markets WHERE is_active = 1 ORDER BY created_at DESC');
|
|
14
|
+
this.findByAddressStmt = this.db.query('SELECT * FROM markets WHERE address = ?');
|
|
15
|
+
this.createStmt = this.db.query(`INSERT INTO markets (address, title, description, category, topics, market_type,
|
|
16
|
+
x_axis_label, x_axis_unit, y_axis_label, y_axis_unit, outcome_labels, row_labels, col_labels, resolution_source)
|
|
17
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
18
|
+
this.updateStmt = this.db.query(`UPDATE markets
|
|
19
|
+
SET title = ?, description = ?, category = ?, topics = ?,
|
|
20
|
+
is_active = ?, market_type = ?,
|
|
21
|
+
x_axis_label = ?, x_axis_unit = ?, y_axis_label = ?, y_axis_unit = ?, outcome_labels = ?,
|
|
22
|
+
row_labels = ?, col_labels = ?, resolution_source = ?,
|
|
23
|
+
updated_at = unixepoch()
|
|
24
|
+
WHERE address = ?`);
|
|
25
|
+
this.softDeleteStmt = this.db.query('UPDATE markets SET is_active = 0, updated_at = unixepoch() WHERE address = ?');
|
|
26
|
+
this.countStmt = this.db.query('SELECT COUNT(*) as cnt FROM markets');
|
|
5
27
|
}
|
|
6
28
|
findAll(activeOnly = false) {
|
|
7
|
-
|
|
8
|
-
?
|
|
9
|
-
:
|
|
10
|
-
return this.db.query(sql).all();
|
|
29
|
+
return activeOnly
|
|
30
|
+
? this.findAllActiveStmt.all()
|
|
31
|
+
: this.findAllStmt.all();
|
|
11
32
|
}
|
|
12
33
|
findByAddress(address) {
|
|
13
|
-
return
|
|
14
|
-
null);
|
|
34
|
+
return this.findByAddressStmt.get(address) ?? null;
|
|
15
35
|
}
|
|
16
36
|
create(input) {
|
|
17
37
|
const topics = JSON.stringify(input.topics ?? []);
|
|
18
38
|
const outcomeLabels = input.outcome_labels ? JSON.stringify(input.outcome_labels) : null;
|
|
19
39
|
const rowLabels = input.row_labels ? JSON.stringify(input.row_labels) : null;
|
|
20
40
|
const colLabels = input.col_labels ? JSON.stringify(input.col_labels) : null;
|
|
21
|
-
this.
|
|
22
|
-
.query(`INSERT INTO markets (address, title, description, category, topics, market_type,
|
|
23
|
-
x_axis_label, x_axis_unit, outcome_labels, row_labels, col_labels, resolution_source)
|
|
24
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
25
|
-
.run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics, input.market_type ?? 'normal', input.x_axis_label ?? null, input.x_axis_unit ?? null, outcomeLabels, rowLabels, colLabels, input.resolution_source ?? null);
|
|
41
|
+
this.createStmt.run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics, input.market_type ?? 'normal', input.x_axis_label ?? null, input.x_axis_unit ?? null, input.y_axis_label ?? null, input.y_axis_unit ?? null, outcomeLabels, rowLabels, colLabels, input.resolution_source ?? null);
|
|
26
42
|
return this.findByAddress(input.address.toLowerCase());
|
|
27
43
|
}
|
|
28
44
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: explicit merge logic keeps update semantics deterministic.
|
|
@@ -40,6 +56,8 @@ export class MarketRepository {
|
|
|
40
56
|
// New metadata fields: undefined = keep existing, null = clear, value = set
|
|
41
57
|
const xAxisLabel = input.x_axis_label === undefined ? existing.x_axis_label : input.x_axis_label;
|
|
42
58
|
const xAxisUnit = input.x_axis_unit === undefined ? existing.x_axis_unit : input.x_axis_unit;
|
|
59
|
+
const yAxisLabel = input.y_axis_label === undefined ? existing.y_axis_label : input.y_axis_label;
|
|
60
|
+
const yAxisUnit = input.y_axis_unit === undefined ? existing.y_axis_unit : input.y_axis_unit;
|
|
43
61
|
const outcomeLabels = input.outcome_labels === undefined
|
|
44
62
|
? existing.outcome_labels
|
|
45
63
|
: input.outcome_labels === null
|
|
@@ -56,25 +74,15 @@ export class MarketRepository {
|
|
|
56
74
|
? null
|
|
57
75
|
: JSON.stringify(input.col_labels);
|
|
58
76
|
const resolutionSource = input.resolution_source === undefined ? existing.resolution_source : input.resolution_source;
|
|
59
|
-
this.
|
|
60
|
-
.query(`UPDATE markets
|
|
61
|
-
SET title = ?, description = ?, category = ?, topics = ?,
|
|
62
|
-
is_active = ?, market_type = ?,
|
|
63
|
-
x_axis_label = ?, x_axis_unit = ?, outcome_labels = ?,
|
|
64
|
-
row_labels = ?, col_labels = ?, resolution_source = ?,
|
|
65
|
-
updated_at = unixepoch()
|
|
66
|
-
WHERE address = ?`)
|
|
67
|
-
.run(title, description, category, topics, isActive, marketType, xAxisLabel, xAxisUnit, outcomeLabels, rowLabels, colLabels, resolutionSource, address);
|
|
77
|
+
this.updateStmt.run(title, description, category, topics, isActive, marketType, xAxisLabel, xAxisUnit, yAxisLabel, yAxisUnit, outcomeLabels, rowLabels, colLabels, resolutionSource, address);
|
|
68
78
|
return this.findByAddress(address);
|
|
69
79
|
}
|
|
70
80
|
softDelete(address) {
|
|
71
|
-
const result = this.
|
|
72
|
-
.query('UPDATE markets SET is_active = 0, updated_at = unixepoch() WHERE address = ?')
|
|
73
|
-
.run(address);
|
|
81
|
+
const result = this.softDeleteStmt.run(address);
|
|
74
82
|
return result.changes > 0;
|
|
75
83
|
}
|
|
76
84
|
count() {
|
|
77
|
-
const row = this.
|
|
85
|
+
const row = this.countStmt.get();
|
|
78
86
|
return row.cnt;
|
|
79
87
|
}
|
|
80
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IASE;IARZ,WAAW,CAAgC;IAC3C,iBAAiB,CAAgC;IACjD,iBAAiB,CAAgC;IACjD,UAAU,CAAgC;IAC1C,UAAU,CAAgC;IAC1C,cAAc,CAAgC;IAC9C,SAAS,CAAgC;IAE1D,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CACpC,oEAAoE,CACrE,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B;;yDAEmD,CACpD,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B;;;;;;yBAMmB,CACpB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CACjC,8EAA8E,CAC/E,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,UAAU,GAAG,KAAK;QACxB,OAAO,UAAU;YACf,CAAC,CAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAkB;YAC/C,CAAC,CAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAkB,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAsB,IAAI,IAAI,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,KAAwB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAC3B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,IAAI,EAAE,EACvB,KAAK,CAAC,QAAQ,IAAI,EAAE,EACpB,MAAM,EACN,KAAK,CAAC,WAAW,IAAI,QAAQ,EAC7B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAChC,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAE,CAAC;IAC1D,CAAC;IAED,0HAA0H;IAC1H,MAAM,CAAC,OAAe,EAAE,KAAwB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChG,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QAE7D,4EAA4E;QAC5E,MAAM,UAAU,GACd,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAChF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QAC7F,MAAM,UAAU,GACd,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAChF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QAC7F,MAAM,aAAa,GACjB,KAAK,CAAC,cAAc,KAAK,SAAS;YAChC,CAAC,CAAC,QAAQ,CAAC,cAAc;YACzB,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;gBAC7B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,KAAK,SAAS;YAC5B,CAAC,CAAC,QAAQ,CAAC,UAAU;YACrB,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,KAAK,SAAS;YAC5B,CAAC,CAAC,QAAQ,CAAC,UAAU;YACrB,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,gBAAgB,GACpB,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAE/F,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,OAAO,CACR,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAE7B,CAAC;QACF,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multinoulli-snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"multinoulli-snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IAkCpD;;;OAGG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAiB7E,mCAAmC;IACnC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM7C"}
|
|
@@ -9,19 +9,21 @@ export class MultinoulliSnapshotsRepository {
|
|
|
9
9
|
* snapshot for this market, the insert is skipped.
|
|
10
10
|
*/
|
|
11
11
|
insertIfChanged(input) {
|
|
12
|
+
const timestamp = input.timestamp ?? Math.floor(Date.now() / 1000);
|
|
12
13
|
const latest = this.db
|
|
13
14
|
.query(`SELECT probs_hash FROM multinoulli_state_snapshots
|
|
14
15
|
WHERE market_address = ?
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
AND timestamp <= ?
|
|
17
|
+
ORDER BY timestamp DESC, id DESC LIMIT 1`)
|
|
18
|
+
.get(input.market_address, timestamp);
|
|
17
19
|
if (latest?.probs_hash === input.probs_hash) {
|
|
18
20
|
return false; // No change — skip
|
|
19
21
|
}
|
|
20
22
|
this.db
|
|
21
23
|
.query(`INSERT INTO multinoulli_state_snapshots
|
|
22
|
-
(market_address, probs_json, probs_hash, outcome_count, matrix_rows, matrix_cols)
|
|
23
|
-
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
24
|
-
.run(input.market_address, input.probs_json, input.probs_hash, input.outcome_count, input.matrix_rows, input.matrix_cols);
|
|
24
|
+
(market_address, timestamp, probs_json, probs_hash, outcome_count, matrix_rows, matrix_cols)
|
|
25
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`)
|
|
26
|
+
.run(input.market_address, timestamp, input.probs_json, input.probs_hash, input.outcome_count, input.matrix_rows, input.matrix_cols);
|
|
25
27
|
return true;
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multinoulli-snapshots.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"multinoulli-snapshots.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,KAA0B;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CACJ;;;kDAG0C,CAC3C;aACA,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAkC,CAAC;QAEzE,IAAI,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,CAAC,mBAAmB;QACnC,CAAC;QAED,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;sCAE8B,CAC/B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,SAAS,EACT,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAClB,CAAC;QAEJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,aAAqB,EAAE,KAAc;QAChD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC;;;;;sCAK8B;YAChC,CAAC,CAAC;;gCAEwB,CAAC;QAE7B,OAAO,KAAK;YACV,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAA8B;YAC5E,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IAC1E,CAAC;IAED,mCAAmC;IACnC,aAAa,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,KAAK,CAAC,oFAAoF,CAAC;aAC3F,GAAG,CAAC,aAAa,CAAsB,CAAC;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -12,6 +12,7 @@ export declare class PositionRepository {
|
|
|
12
12
|
findByMarket(marketAddress: string): UserPositionRow[];
|
|
13
13
|
findByTrader(trader: string): UserPositionRow[];
|
|
14
14
|
findAll(): UserPositionRow[];
|
|
15
|
+
findByActiveMarkets(): UserPositionRow[];
|
|
15
16
|
deleteByMarket(marketAddress: string): number;
|
|
16
17
|
}
|
|
17
18
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA0DxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQtE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;IAM5B,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM9C"}
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA0DxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQtE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;IAM5B,mBAAmB,IAAI,eAAe,EAAE;IAYxC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM9C"}
|
|
@@ -66,6 +66,15 @@ export class PositionRepository {
|
|
|
66
66
|
.query('SELECT * FROM user_positions ORDER BY market_address, trader')
|
|
67
67
|
.all();
|
|
68
68
|
}
|
|
69
|
+
findByActiveMarkets() {
|
|
70
|
+
return this.db
|
|
71
|
+
.query(`SELECT up.*
|
|
72
|
+
FROM user_positions up
|
|
73
|
+
JOIN markets m ON m.address = up.market_address
|
|
74
|
+
WHERE m.is_active = 1
|
|
75
|
+
ORDER BY up.market_address, up.trader`)
|
|
76
|
+
.all();
|
|
77
|
+
}
|
|
69
78
|
deleteByMarket(marketAddress) {
|
|
70
79
|
const result = this.db
|
|
71
80
|
.query('DELETE FROM user_positions WHERE market_address = ?')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4B4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,eAAe,IAAI,IAAI,EAC7B,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAChC,KAAK,CAAC,oBAAoB,IAAI,IAAI,CACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,aAAqB,EAAE,MAAc;QAC3C,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,sEAAsE,CAAC;aAC7E,GAAG,CAAC,aAAa,EAAE,MAAM,CAA4B,IAAI,IAAI,CACjE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4B4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,eAAe,IAAI,IAAI,EAC7B,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAChC,KAAK,CAAC,oBAAoB,IAAI,IAAI,CACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,aAAqB,EAAE,MAAc;QAC3C,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,sEAAsE,CAAC;aAC7E,GAAG,CAAC,aAAa,EAAE,MAAM,CAA4B,IAAI,IAAI,CACjE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;;;+CAIuC,CACxC;aACA,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAib3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAsGnD"}
|
package/dist/db/schema.js
CHANGED
|
@@ -8,6 +8,8 @@ CREATE TABLE IF NOT EXISTS markets (
|
|
|
8
8
|
market_type TEXT NOT NULL DEFAULT 'normal',
|
|
9
9
|
x_axis_label TEXT DEFAULT NULL,
|
|
10
10
|
x_axis_unit TEXT DEFAULT NULL,
|
|
11
|
+
y_axis_label TEXT DEFAULT NULL,
|
|
12
|
+
y_axis_unit TEXT DEFAULT NULL,
|
|
11
13
|
outcome_labels TEXT DEFAULT NULL,
|
|
12
14
|
row_labels TEXT DEFAULT NULL,
|
|
13
15
|
col_labels TEXT DEFAULT NULL,
|
|
@@ -22,15 +24,25 @@ CREATE TABLE IF NOT EXISTS market_state (
|
|
|
22
24
|
mean REAL,
|
|
23
25
|
sigma REAL,
|
|
24
26
|
variance REAL,
|
|
27
|
+
mean_2 REAL,
|
|
28
|
+
sigma_2 REAL,
|
|
29
|
+
variance_2 REAL,
|
|
30
|
+
rho REAL,
|
|
25
31
|
is_initialized INTEGER NOT NULL DEFAULT 0,
|
|
26
32
|
is_paused INTEGER NOT NULL DEFAULT 0,
|
|
27
33
|
is_settled INTEGER NOT NULL DEFAULT 0,
|
|
28
34
|
settlement_value REAL,
|
|
35
|
+
settlement_x1 REAL,
|
|
36
|
+
settlement_x2 REAL,
|
|
29
37
|
total_shares TEXT,
|
|
30
38
|
total_backing TEXT,
|
|
31
39
|
mean_raw TEXT,
|
|
32
40
|
sigma_raw TEXT,
|
|
33
41
|
variance_raw TEXT,
|
|
42
|
+
mean_2_raw TEXT,
|
|
43
|
+
sigma_2_raw TEXT,
|
|
44
|
+
variance_2_raw TEXT,
|
|
45
|
+
rho_raw TEXT,
|
|
34
46
|
k REAL,
|
|
35
47
|
effective_k REAL,
|
|
36
48
|
payout_amplifier REAL DEFAULT 1.0,
|
|
@@ -73,6 +85,14 @@ CREATE TABLE IF NOT EXISTS market_events (
|
|
|
73
85
|
upper_bound REAL NOT NULL,
|
|
74
86
|
old_mean REAL,
|
|
75
87
|
old_std_dev REAL,
|
|
88
|
+
mean_2 REAL,
|
|
89
|
+
std_dev_2 REAL,
|
|
90
|
+
lower_bound_2 REAL,
|
|
91
|
+
upper_bound_2 REAL,
|
|
92
|
+
old_mean_2 REAL,
|
|
93
|
+
old_std_dev_2 REAL,
|
|
94
|
+
rho REAL,
|
|
95
|
+
old_rho REAL,
|
|
76
96
|
collateral_posted TEXT,
|
|
77
97
|
raw_data TEXT,
|
|
78
98
|
outcome_count INTEGER,
|
|
@@ -87,7 +107,7 @@ CREATE TABLE IF NOT EXISTS market_events (
|
|
|
87
107
|
);
|
|
88
108
|
|
|
89
109
|
CREATE INDEX IF NOT EXISTS idx_events_market_block
|
|
90
|
-
ON market_events(market_address, block_number);
|
|
110
|
+
ON market_events(market_address, block_number, timestamp, id);
|
|
91
111
|
|
|
92
112
|
CREATE INDEX IF NOT EXISTS idx_events_trader
|
|
93
113
|
ON market_events(trader) WHERE trader IS NOT NULL;
|
|
@@ -98,6 +118,13 @@ CREATE INDEX IF NOT EXISTS idx_events_trader_ts
|
|
|
98
118
|
CREATE INDEX IF NOT EXISTS idx_events_market_ts
|
|
99
119
|
ON market_events(market_address, timestamp);
|
|
100
120
|
|
|
121
|
+
CREATE INDEX IF NOT EXISTS idx_events_market_trader
|
|
122
|
+
ON market_events(market_address, trader) WHERE trader IS NOT NULL;
|
|
123
|
+
|
|
124
|
+
CREATE INDEX IF NOT EXISTS idx_events_market_lower_trader_type_ts
|
|
125
|
+
ON market_events(market_address, LOWER(trader), event_type, timestamp DESC, id DESC)
|
|
126
|
+
WHERE trader IS NOT NULL;
|
|
127
|
+
|
|
101
128
|
CREATE TABLE IF NOT EXISTS user_positions (
|
|
102
129
|
market_address TEXT NOT NULL REFERENCES markets(address),
|
|
103
130
|
trader TEXT NOT NULL,
|
|
@@ -128,7 +155,10 @@ CREATE INDEX IF NOT EXISTS idx_positions_trader
|
|
|
128
155
|
ON user_positions(trader);
|
|
129
156
|
|
|
130
157
|
CREATE INDEX IF NOT EXISTS idx_markets_active
|
|
131
|
-
ON markets(
|
|
158
|
+
ON markets(created_at DESC) WHERE is_active = 1;
|
|
159
|
+
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_markets_type_address
|
|
161
|
+
ON markets(market_type, address);
|
|
132
162
|
|
|
133
163
|
CREATE TABLE IF NOT EXISTS multinoulli_state_snapshots (
|
|
134
164
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -160,6 +190,9 @@ CREATE TABLE IF NOT EXISTS subscriptions (
|
|
|
160
190
|
CREATE INDEX IF NOT EXISTS idx_events_timestamp_desc
|
|
161
191
|
ON market_events(timestamp DESC, id DESC);
|
|
162
192
|
|
|
193
|
+
CREATE INDEX IF NOT EXISTS idx_events_type_timestamp_desc
|
|
194
|
+
ON market_events(event_type, timestamp DESC, id DESC);
|
|
195
|
+
|
|
163
196
|
CREATE TABLE IF NOT EXISTS spice_mints (
|
|
164
197
|
recipient TEXT PRIMARY KEY,
|
|
165
198
|
tx_hash TEXT,
|
|
@@ -228,6 +261,20 @@ function hasUniqueSingleColumnIndex(db, table, column) {
|
|
|
228
261
|
}
|
|
229
262
|
return false;
|
|
230
263
|
}
|
|
264
|
+
function indexColumnNames(db, indexName) {
|
|
265
|
+
const rows = db.query(`PRAGMA index_info(${indexName})`).all();
|
|
266
|
+
return rows.map((row) => row.name);
|
|
267
|
+
}
|
|
268
|
+
function ensureIndexColumns(db, indexName, expectedColumns, createSql) {
|
|
269
|
+
const existingColumns = indexColumnNames(db, indexName);
|
|
270
|
+
const matches = existingColumns.length === expectedColumns.length &&
|
|
271
|
+
existingColumns.every((name, idx) => name === expectedColumns[idx]);
|
|
272
|
+
if (matches) {
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
db.exec(`DROP INDEX IF EXISTS ${indexName}`);
|
|
276
|
+
db.exec(createSql);
|
|
277
|
+
}
|
|
231
278
|
function migrateMarketEventsTable(db) {
|
|
232
279
|
const columns = tableColumns(db, 'market_events');
|
|
233
280
|
const hasEventUid = columns.has('event_uid');
|
|
@@ -238,12 +285,28 @@ function migrateMarketEventsTable(db) {
|
|
|
238
285
|
const hasSettlementValue = columns.has('settlement_value');
|
|
239
286
|
const hasSettlementX1 = columns.has('settlement_x1');
|
|
240
287
|
const hasSettlementX2 = columns.has('settlement_x2');
|
|
288
|
+
const hasMean2 = columns.has('mean_2');
|
|
289
|
+
const hasStdDev2 = columns.has('std_dev_2');
|
|
290
|
+
const hasLowerBound2 = columns.has('lower_bound_2');
|
|
291
|
+
const hasUpperBound2 = columns.has('upper_bound_2');
|
|
292
|
+
const hasOldMean2 = columns.has('old_mean_2');
|
|
293
|
+
const hasOldStdDev2 = columns.has('old_std_dev_2');
|
|
294
|
+
const hasRho = columns.has('rho');
|
|
295
|
+
const hasOldRho = columns.has('old_rho');
|
|
241
296
|
const eventUidExpr = hasEventUid
|
|
242
297
|
? "COALESCE(event_uid, tx_hash || ':' || CAST(id AS TEXT))"
|
|
243
298
|
: "tx_hash || ':' || CAST(id AS TEXT)";
|
|
244
299
|
const settlementValueExpr = hasSettlementValue ? 'settlement_value' : 'NULL';
|
|
245
300
|
const settlementX1Expr = hasSettlementX1 ? 'settlement_x1' : 'NULL';
|
|
246
301
|
const settlementX2Expr = hasSettlementX2 ? 'settlement_x2' : 'NULL';
|
|
302
|
+
const mean2Expr = hasMean2 ? 'mean_2' : 'NULL';
|
|
303
|
+
const stdDev2Expr = hasStdDev2 ? 'std_dev_2' : 'NULL';
|
|
304
|
+
const lowerBound2Expr = hasLowerBound2 ? 'lower_bound_2' : 'NULL';
|
|
305
|
+
const upperBound2Expr = hasUpperBound2 ? 'upper_bound_2' : 'NULL';
|
|
306
|
+
const oldMean2Expr = hasOldMean2 ? 'old_mean_2' : 'NULL';
|
|
307
|
+
const oldStdDev2Expr = hasOldStdDev2 ? 'old_std_dev_2' : 'NULL';
|
|
308
|
+
const rhoExpr = hasRho ? 'rho' : 'NULL';
|
|
309
|
+
const oldRhoExpr = hasOldRho ? 'old_rho' : 'NULL';
|
|
247
310
|
db.exec('PRAGMA foreign_keys = OFF');
|
|
248
311
|
db.exec('BEGIN');
|
|
249
312
|
try {
|
|
@@ -263,6 +326,14 @@ function migrateMarketEventsTable(db) {
|
|
|
263
326
|
upper_bound REAL NOT NULL,
|
|
264
327
|
old_mean REAL,
|
|
265
328
|
old_std_dev REAL,
|
|
329
|
+
mean_2 REAL,
|
|
330
|
+
std_dev_2 REAL,
|
|
331
|
+
lower_bound_2 REAL,
|
|
332
|
+
upper_bound_2 REAL,
|
|
333
|
+
old_mean_2 REAL,
|
|
334
|
+
old_std_dev_2 REAL,
|
|
335
|
+
rho REAL,
|
|
336
|
+
old_rho REAL,
|
|
266
337
|
collateral_posted TEXT,
|
|
267
338
|
raw_data TEXT,
|
|
268
339
|
outcome_count INTEGER,
|
|
@@ -280,7 +351,8 @@ function migrateMarketEventsTable(db) {
|
|
|
280
351
|
INSERT INTO market_events_v2 (
|
|
281
352
|
id, market_address, event_uid, tx_hash, block_number, timestamp, event_type,
|
|
282
353
|
trader, mean, std_dev, lower_bound, upper_bound,
|
|
283
|
-
old_mean, old_std_dev,
|
|
354
|
+
old_mean, old_std_dev, mean_2, std_dev_2, lower_bound_2, upper_bound_2,
|
|
355
|
+
old_mean_2, old_std_dev_2, rho, old_rho, collateral_posted, raw_data,
|
|
284
356
|
outcome_count, min_outcome_index, is_position_sell,
|
|
285
357
|
settlement_outcome_index, settlement_outcomes_json,
|
|
286
358
|
settlement_value, settlement_x1, settlement_x2, created_at
|
|
@@ -288,7 +360,8 @@ function migrateMarketEventsTable(db) {
|
|
|
288
360
|
SELECT
|
|
289
361
|
id, market_address, ${eventUidExpr}, tx_hash, block_number, timestamp, event_type,
|
|
290
362
|
trader, mean, std_dev, lower_bound, upper_bound,
|
|
291
|
-
old_mean, old_std_dev,
|
|
363
|
+
old_mean, old_std_dev, ${mean2Expr}, ${stdDev2Expr}, ${lowerBound2Expr}, ${upperBound2Expr},
|
|
364
|
+
${oldMean2Expr}, ${oldStdDev2Expr}, ${rhoExpr}, ${oldRhoExpr}, collateral_posted, raw_data,
|
|
292
365
|
outcome_count, min_outcome_index, is_position_sell,
|
|
293
366
|
settlement_outcome_index, settlement_outcomes_json,
|
|
294
367
|
${settlementValueExpr}, ${settlementX1Expr}, ${settlementX2Expr}, created_at
|
|
@@ -296,10 +369,14 @@ function migrateMarketEventsTable(db) {
|
|
|
296
369
|
`);
|
|
297
370
|
db.exec('DROP TABLE market_events');
|
|
298
371
|
db.exec('ALTER TABLE market_events_v2 RENAME TO market_events');
|
|
299
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_block ON market_events(market_address, block_number)');
|
|
372
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_block ON market_events(market_address, block_number, timestamp, id)');
|
|
300
373
|
db.exec('CREATE INDEX IF NOT EXISTS idx_events_trader ON market_events(trader) WHERE trader IS NOT NULL');
|
|
301
374
|
db.exec('CREATE INDEX IF NOT EXISTS idx_events_trader_ts ON market_events(trader, timestamp DESC) WHERE trader IS NOT NULL');
|
|
302
375
|
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_ts ON market_events(market_address, timestamp)');
|
|
376
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_trader ON market_events(market_address, trader) WHERE trader IS NOT NULL');
|
|
377
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_lower_trader_type_ts ON market_events(market_address, LOWER(trader), event_type, timestamp DESC, id DESC) WHERE trader IS NOT NULL');
|
|
378
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_timestamp_desc ON market_events(timestamp DESC, id DESC)');
|
|
379
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_type_timestamp_desc ON market_events(event_type, timestamp DESC, id DESC)');
|
|
303
380
|
db.exec('COMMIT');
|
|
304
381
|
}
|
|
305
382
|
catch (error) {
|
|
@@ -323,6 +400,14 @@ export function initializeSchema(db) {
|
|
|
323
400
|
safeAddColumn(db, 'market_events', 'settlement_value', 'REAL');
|
|
324
401
|
safeAddColumn(db, 'market_events', 'settlement_x1', 'REAL');
|
|
325
402
|
safeAddColumn(db, 'market_events', 'settlement_x2', 'REAL');
|
|
403
|
+
safeAddColumn(db, 'market_events', 'mean_2', 'REAL');
|
|
404
|
+
safeAddColumn(db, 'market_events', 'std_dev_2', 'REAL');
|
|
405
|
+
safeAddColumn(db, 'market_events', 'lower_bound_2', 'REAL');
|
|
406
|
+
safeAddColumn(db, 'market_events', 'upper_bound_2', 'REAL');
|
|
407
|
+
safeAddColumn(db, 'market_events', 'old_mean_2', 'REAL');
|
|
408
|
+
safeAddColumn(db, 'market_events', 'old_std_dev_2', 'REAL');
|
|
409
|
+
safeAddColumn(db, 'market_events', 'rho', 'REAL');
|
|
410
|
+
safeAddColumn(db, 'market_events', 'old_rho', 'REAL');
|
|
326
411
|
safeAddColumn(db, 'user_positions', 'position_type', "TEXT DEFAULT 'normal'");
|
|
327
412
|
safeAddColumn(db, 'user_positions', 'outcome_count', 'INTEGER');
|
|
328
413
|
safeAddColumn(db, 'user_positions', 'original_probs_json', 'TEXT');
|
|
@@ -337,12 +422,29 @@ export function initializeSchema(db) {
|
|
|
337
422
|
safeAddColumn(db, 'market_state', 'k', 'REAL');
|
|
338
423
|
safeAddColumn(db, 'market_state', 'effective_k', 'REAL');
|
|
339
424
|
safeAddColumn(db, 'market_state', 'payout_amplifier', 'REAL DEFAULT 1.0');
|
|
425
|
+
safeAddColumn(db, 'market_state', 'mean_2', 'REAL');
|
|
426
|
+
safeAddColumn(db, 'market_state', 'sigma_2', 'REAL');
|
|
427
|
+
safeAddColumn(db, 'market_state', 'variance_2', 'REAL');
|
|
428
|
+
safeAddColumn(db, 'market_state', 'rho', 'REAL');
|
|
429
|
+
safeAddColumn(db, 'market_state', 'settlement_x1', 'REAL');
|
|
430
|
+
safeAddColumn(db, 'market_state', 'settlement_x2', 'REAL');
|
|
431
|
+
safeAddColumn(db, 'market_state', 'mean_2_raw', 'TEXT');
|
|
432
|
+
safeAddColumn(db, 'market_state', 'sigma_2_raw', 'TEXT');
|
|
433
|
+
safeAddColumn(db, 'market_state', 'variance_2_raw', 'TEXT');
|
|
434
|
+
safeAddColumn(db, 'market_state', 'rho_raw', 'TEXT');
|
|
435
|
+
safeAddColumn(db, 'multinoulli_market_state', 'matrix_constraint_mode', 'INTEGER DEFAULT 0');
|
|
436
|
+
safeAddColumn(db, 'multinoulli_market_state', 'matrix_rows', 'INTEGER DEFAULT 0');
|
|
437
|
+
safeAddColumn(db, 'multinoulli_market_state', 'matrix_cols', 'INTEGER DEFAULT 0');
|
|
340
438
|
safeAddColumn(db, 'multinoulli_market_state', 'payout_amplifier', 'REAL DEFAULT 1.0');
|
|
439
|
+
safeAddColumn(db, 'multinoulli_state_snapshots', 'matrix_rows', 'INTEGER DEFAULT 0');
|
|
440
|
+
safeAddColumn(db, 'multinoulli_state_snapshots', 'matrix_cols', 'INTEGER DEFAULT 0');
|
|
341
441
|
// Webhook subscription secret
|
|
342
442
|
safeAddColumn(db, 'subscriptions', 'secret', 'TEXT');
|
|
343
443
|
// Rich market metadata columns
|
|
344
444
|
safeAddColumn(db, 'markets', 'x_axis_label', 'TEXT DEFAULT NULL');
|
|
345
445
|
safeAddColumn(db, 'markets', 'x_axis_unit', 'TEXT DEFAULT NULL');
|
|
446
|
+
safeAddColumn(db, 'markets', 'y_axis_label', 'TEXT DEFAULT NULL');
|
|
447
|
+
safeAddColumn(db, 'markets', 'y_axis_unit', 'TEXT DEFAULT NULL');
|
|
346
448
|
safeAddColumn(db, 'markets', 'outcome_labels', 'TEXT DEFAULT NULL');
|
|
347
449
|
safeAddColumn(db, 'markets', 'row_labels', 'TEXT DEFAULT NULL');
|
|
348
450
|
safeAddColumn(db, 'markets', 'col_labels', 'TEXT DEFAULT NULL');
|
|
@@ -356,5 +458,12 @@ export function initializeSchema(db) {
|
|
|
356
458
|
safeAddColumn(db, 'lp_positions', 'claim_payout', 'REAL');
|
|
357
459
|
// Rebuild event table when upgrading from legacy tx_hash-unique schema.
|
|
358
460
|
migrateMarketEventsTable(db);
|
|
461
|
+
// Upgrade legacy index definitions in-place without changing schema compatibility.
|
|
462
|
+
ensureIndexColumns(db, 'idx_events_market_block', ['market_address', 'block_number', 'timestamp', 'id'], 'CREATE INDEX idx_events_market_block ON market_events(market_address, block_number, timestamp, id)');
|
|
463
|
+
ensureIndexColumns(db, 'idx_markets_active', ['created_at'], 'CREATE INDEX idx_markets_active ON markets(created_at DESC) WHERE is_active = 1');
|
|
464
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_trader ON market_events(market_address, trader) WHERE trader IS NOT NULL');
|
|
465
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_lower_trader_type_ts ON market_events(market_address, LOWER(trader), event_type, timestamp DESC, id DESC) WHERE trader IS NOT NULL');
|
|
466
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_type_timestamp_desc ON market_events(event_type, timestamp DESC, id DESC)');
|
|
467
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_markets_type_address ON markets(market_type, address)');
|
|
359
468
|
}
|
|
360
469
|
//# sourceMappingURL=schema.js.map
|