@the-situation/indexer 0.13.0 → 0.15.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 +6 -6
- package/dist/api/routes/admin-subscriptions.d.ts +6 -6
- 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 +6 -2
- package/dist/etl/event-indexer.d.ts.map +1 -1
- package/dist/etl/event-indexer.js +175 -79
- package/dist/etl/event-indexer.js.map +1 -1
- package/dist/etl/lp-position-refresher.d.ts +8 -2
- 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 +154 -16
- package/dist/etl/state-refresher.js.map +1 -1
- package/dist/layers/ChainReaderLive.d.ts.map +1 -1
- package/dist/layers/ChainReaderLive.js +180 -26
- package/dist/layers/ChainReaderLive.js.map +1 -1
- package/dist/services/ChainReader.d.ts +34 -1
- package/dist/services/ChainReader.d.ts.map +1 -1
- package/dist/services/ChainReader.js.map +1 -1
- package/dist/services/VoyagerRateLimit.d.ts +13 -1
- package/dist/services/VoyagerRateLimit.d.ts.map +1 -1
- package/dist/services/VoyagerRateLimit.js +20 -3
- package/dist/services/VoyagerRateLimit.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":"trader-events.js","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,SAAS,qBAAqB,CAC5B,GAA8C;IAE9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,WAAW;QAC1B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAmB,EAAE,EAAE,CACxD,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,KAKlB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IAErC,MAAM,IAAI,GAKN,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,QAAQ,GAA2C;QACvD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACrC,KAAK;QACL,IAAI;QACJ,QAAQ;KACT,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"trader-events.js","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAiBvD;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAMjD"}
|
package/dist/db/connection.js
CHANGED
|
@@ -13,12 +13,16 @@ export function createDatabase(dbPath) {
|
|
|
13
13
|
db.exec('PRAGMA synchronous = NORMAL');
|
|
14
14
|
db.exec('PRAGMA busy_timeout = 5000');
|
|
15
15
|
db.exec('PRAGMA cache_size = -10000'); // 10MB
|
|
16
|
+
db.exec('PRAGMA wal_autocheckpoint = 2000'); // reduce checkpoint frequency under write-heavy bursts
|
|
17
|
+
db.exec('PRAGMA mmap_size = 268435456'); // map up to 256MB for lower read syscall overhead
|
|
16
18
|
db.exec('PRAGMA temp_store = MEMORY');
|
|
17
19
|
db.exec('PRAGMA foreign_keys = ON');
|
|
18
20
|
return db;
|
|
19
21
|
}
|
|
20
22
|
export function createInMemoryDatabase() {
|
|
21
23
|
const db = new Database(':memory:');
|
|
24
|
+
db.exec('PRAGMA cache_size = -10000');
|
|
25
|
+
db.exec('PRAGMA temp_store = MEMORY');
|
|
22
26
|
db.exec('PRAGMA foreign_keys = ON');
|
|
23
27
|
return db;
|
|
24
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,8BAA8B;IAC9B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,sBAAsB;IACtB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO;IAC9C,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEpC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,8BAA8B;IAC9B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,sBAAsB;IACtB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO;IAC9C,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,uDAAuD;IACpG,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,kDAAkD;IAC3F,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEpC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -17,7 +17,10 @@ export interface ActivityFeedQueryOptions {
|
|
|
17
17
|
}
|
|
18
18
|
export declare class ActivityFeedRepository {
|
|
19
19
|
private readonly db;
|
|
20
|
+
private static readonly MAX_CACHED_STATEMENTS;
|
|
21
|
+
private readonly statementCache;
|
|
20
22
|
constructor(db: Database);
|
|
23
|
+
private getStatement;
|
|
21
24
|
findAll(options?: ActivityFeedQueryOptions): EnrichedEventRow[];
|
|
22
25
|
count(options?: ActivityFeedQueryOptions): number;
|
|
23
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA0DD,qBAAa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA0DD,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAO;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoD;gBAEtD,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,gBAAgB,EAAE;IAkBnE,KAAK,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM;CAUtD"}
|
|
@@ -42,34 +42,49 @@ function buildWhereClause(options) {
|
|
|
42
42
|
}
|
|
43
43
|
export class ActivityFeedRepository {
|
|
44
44
|
db;
|
|
45
|
+
static MAX_CACHED_STATEMENTS = 128;
|
|
46
|
+
statementCache = new Map();
|
|
45
47
|
constructor(db) {
|
|
46
48
|
this.db = db;
|
|
47
49
|
}
|
|
50
|
+
getStatement(sql) {
|
|
51
|
+
const cached = this.statementCache.get(sql);
|
|
52
|
+
if (cached) {
|
|
53
|
+
return cached;
|
|
54
|
+
}
|
|
55
|
+
const stmt = this.db.query(sql);
|
|
56
|
+
if (this.statementCache.size >= ActivityFeedRepository.MAX_CACHED_STATEMENTS) {
|
|
57
|
+
const oldestKey = this.statementCache.keys().next().value;
|
|
58
|
+
if (oldestKey) {
|
|
59
|
+
this.statementCache.delete(oldestKey);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this.statementCache.set(sql, stmt);
|
|
63
|
+
return stmt;
|
|
64
|
+
}
|
|
48
65
|
findAll(options = {}) {
|
|
49
66
|
const limit = Math.min(Math.max(1, options.limit ?? 50), 200);
|
|
50
67
|
const offset = Math.max(0, options.offset ?? 0);
|
|
51
68
|
const { where, params } = buildWhereClause(options);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
.all(...params, limit, offset);
|
|
69
|
+
const sql = `SELECT
|
|
70
|
+
e.id, e.market_address, e.tx_hash, e.block_number, e.timestamp,
|
|
71
|
+
e.event_type, e.trader, e.mean, e.std_dev, e.old_mean, e.old_std_dev,
|
|
72
|
+
e.collateral_posted, e.settlement_value, e.settlement_outcomes_json,
|
|
73
|
+
m.title as market_title, m.category as market_category, m.market_type
|
|
74
|
+
FROM market_events e
|
|
75
|
+
JOIN markets m ON e.market_address = m.address
|
|
76
|
+
${where}
|
|
77
|
+
ORDER BY e.timestamp DESC, e.id DESC
|
|
78
|
+
LIMIT ? OFFSET ?`;
|
|
79
|
+
return this.getStatement(sql).all(...params, limit, offset);
|
|
64
80
|
}
|
|
65
81
|
count(options = {}) {
|
|
66
82
|
const { where, params } = buildWhereClause(options);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.get(...params);
|
|
83
|
+
const sql = `SELECT COUNT(*) as total
|
|
84
|
+
FROM market_events e
|
|
85
|
+
JOIN markets m ON e.market_address = m.address
|
|
86
|
+
${where}`;
|
|
87
|
+
const result = this.getStatement(sql).get(...params);
|
|
73
88
|
return result.total;
|
|
74
89
|
}
|
|
75
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,22 @@ import type { Database } from 'bun:sqlite';
|
|
|
5
5
|
import type { InsertEventInput, MarketEventRow } from '../../types';
|
|
6
6
|
export declare class EventRepository {
|
|
7
7
|
private readonly db;
|
|
8
|
+
private readonly insertStmt;
|
|
9
|
+
private readonly findByMarketStmt;
|
|
10
|
+
private readonly findByMarketFromStmt;
|
|
11
|
+
private readonly findByMarketToStmt;
|
|
12
|
+
private readonly findByMarketRangeStmt;
|
|
13
|
+
private readonly findByMarketForLPReplayStmt;
|
|
14
|
+
private readonly countByMarketStmt;
|
|
15
|
+
private readonly totalCountStmt;
|
|
16
|
+
private readonly findByTraderStmt;
|
|
17
|
+
private readonly findByTraderFromStmt;
|
|
18
|
+
private readonly findByTraderToStmt;
|
|
19
|
+
private readonly findByTraderRangeStmt;
|
|
20
|
+
private readonly countByTraderStmt;
|
|
21
|
+
private readonly findTradersByMarketStmt;
|
|
22
|
+
private readonly firstTradeByMarketLowerTraderStmt;
|
|
23
|
+
private readonly lastTradeByMarketLowerTraderStmt;
|
|
8
24
|
constructor(db: Database);
|
|
9
25
|
private runInsert;
|
|
10
26
|
insert(input: InsertEventInput): boolean;
|
|
@@ -28,5 +44,11 @@ export declare class EventRepository {
|
|
|
28
44
|
})[];
|
|
29
45
|
countByTrader(trader: string): number;
|
|
30
46
|
findTradersByMarket(marketAddress: string): string[];
|
|
47
|
+
findTradeBoundsByMarketAndTrader(marketAddress: string, trader: string): {
|
|
48
|
+
first_old_mean: number | null;
|
|
49
|
+
first_old_std_dev: number | null;
|
|
50
|
+
last_mean: number;
|
|
51
|
+
last_std_dev: number;
|
|
52
|
+
} | null;
|
|
31
53
|
}
|
|
32
54
|
//# sourceMappingURL=event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,qBAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,qBAAa,eAAe;IAkBd,OAAO,CAAC,QAAQ,CAAC,EAAE;IAjB/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgC;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgC;IACtE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAgC;IAC5E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgC;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgC;IACtE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IACxE,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAgC;IAClF,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAgC;gBAEpD,EAAE,EAAE,QAAQ;IA+HzC,OAAO,CAAC,SAAS;IAqCjB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IASxC,WAAW,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM;IAaxD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,cAAc,EAAE;IAqBnB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,EAAE;IAIhE,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAK5C,UAAU,IAAI,MAAM;IAKpB,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,CAAC,cAAc,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE;IAiChD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKrC,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAKpD,gCAAgC,CAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb;QACD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;CAqBT"}
|
|
@@ -1,23 +1,121 @@
|
|
|
1
1
|
export class EventRepository {
|
|
2
2
|
db;
|
|
3
|
+
insertStmt;
|
|
4
|
+
findByMarketStmt;
|
|
5
|
+
findByMarketFromStmt;
|
|
6
|
+
findByMarketToStmt;
|
|
7
|
+
findByMarketRangeStmt;
|
|
8
|
+
findByMarketForLPReplayStmt;
|
|
9
|
+
countByMarketStmt;
|
|
10
|
+
totalCountStmt;
|
|
11
|
+
findByTraderStmt;
|
|
12
|
+
findByTraderFromStmt;
|
|
13
|
+
findByTraderToStmt;
|
|
14
|
+
findByTraderRangeStmt;
|
|
15
|
+
countByTraderStmt;
|
|
16
|
+
findTradersByMarketStmt;
|
|
17
|
+
firstTradeByMarketLowerTraderStmt;
|
|
18
|
+
lastTradeByMarketLowerTraderStmt;
|
|
3
19
|
constructor(db) {
|
|
4
20
|
this.db = db;
|
|
21
|
+
this.insertStmt = this.db.query(`INSERT OR IGNORE INTO market_events
|
|
22
|
+
(market_address, event_uid, tx_hash, block_number, timestamp, event_type,
|
|
23
|
+
trader, mean, std_dev, lower_bound, upper_bound,
|
|
24
|
+
old_mean, old_std_dev, mean_2, std_dev_2, lower_bound_2, upper_bound_2,
|
|
25
|
+
old_mean_2, old_std_dev_2, rho, old_rho, collateral_posted, raw_data,
|
|
26
|
+
outcome_count, min_outcome_index, is_position_sell,
|
|
27
|
+
settlement_outcome_index, settlement_outcomes_json,
|
|
28
|
+
settlement_value, settlement_x1, settlement_x2)
|
|
29
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
30
|
+
this.findByMarketStmt = this.db.query(`SELECT * FROM market_events
|
|
31
|
+
WHERE market_address = ?
|
|
32
|
+
AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
|
|
33
|
+
ORDER BY block_number ASC, timestamp ASC, id ASC
|
|
34
|
+
LIMIT ? OFFSET ?`);
|
|
35
|
+
this.findByMarketFromStmt = this.db.query(`SELECT * FROM market_events
|
|
36
|
+
WHERE market_address = ?
|
|
37
|
+
AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
|
|
38
|
+
AND timestamp >= ?
|
|
39
|
+
ORDER BY block_number ASC, timestamp ASC, id ASC
|
|
40
|
+
LIMIT ? OFFSET ?`);
|
|
41
|
+
this.findByMarketToStmt = this.db.query(`SELECT * FROM market_events
|
|
42
|
+
WHERE market_address = ?
|
|
43
|
+
AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
|
|
44
|
+
AND timestamp <= ?
|
|
45
|
+
ORDER BY block_number ASC, timestamp ASC, id ASC
|
|
46
|
+
LIMIT ? OFFSET ?`);
|
|
47
|
+
this.findByMarketRangeStmt = this.db.query(`SELECT * FROM market_events
|
|
48
|
+
WHERE market_address = ?
|
|
49
|
+
AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
|
|
50
|
+
AND timestamp >= ?
|
|
51
|
+
AND timestamp <= ?
|
|
52
|
+
ORDER BY block_number ASC, timestamp ASC, id ASC
|
|
53
|
+
LIMIT ? OFFSET ?`);
|
|
54
|
+
this.findByMarketForLPReplayStmt = this.db.query(`SELECT *
|
|
55
|
+
FROM market_events
|
|
56
|
+
WHERE market_address = ?
|
|
57
|
+
AND event_type IN (
|
|
58
|
+
'bootstrapped',
|
|
59
|
+
'trade_moved',
|
|
60
|
+
'market_initialized',
|
|
61
|
+
'trade_executed',
|
|
62
|
+
'market_settled',
|
|
63
|
+
'liquidity_added',
|
|
64
|
+
'liquidity_removed'
|
|
65
|
+
)
|
|
66
|
+
ORDER BY block_number ASC, timestamp ASC, id ASC`);
|
|
67
|
+
this.countByMarketStmt = this.db.query("SELECT COUNT(*) as cnt FROM market_events WHERE market_address = ? AND event_type NOT IN ('liquidity_added', 'liquidity_removed')");
|
|
68
|
+
this.totalCountStmt = this.db.query('SELECT COUNT(*) as cnt FROM market_events');
|
|
69
|
+
this.findByTraderStmt = this.db.query(`SELECT e.*, m.title as market_title
|
|
70
|
+
FROM market_events e
|
|
71
|
+
JOIN markets m ON e.market_address = m.address
|
|
72
|
+
WHERE e.trader = ?
|
|
73
|
+
ORDER BY e.timestamp DESC, e.id DESC
|
|
74
|
+
LIMIT ? OFFSET ?`);
|
|
75
|
+
this.findByTraderFromStmt = this.db.query(`SELECT e.*, m.title as market_title
|
|
76
|
+
FROM market_events e
|
|
77
|
+
JOIN markets m ON e.market_address = m.address
|
|
78
|
+
WHERE e.trader = ?
|
|
79
|
+
AND e.timestamp >= ?
|
|
80
|
+
ORDER BY e.timestamp DESC, e.id DESC
|
|
81
|
+
LIMIT ? OFFSET ?`);
|
|
82
|
+
this.findByTraderToStmt = this.db.query(`SELECT e.*, m.title as market_title
|
|
83
|
+
FROM market_events e
|
|
84
|
+
JOIN markets m ON e.market_address = m.address
|
|
85
|
+
WHERE e.trader = ?
|
|
86
|
+
AND e.timestamp <= ?
|
|
87
|
+
ORDER BY e.timestamp DESC, e.id DESC
|
|
88
|
+
LIMIT ? OFFSET ?`);
|
|
89
|
+
this.findByTraderRangeStmt = this.db.query(`SELECT e.*, m.title as market_title
|
|
90
|
+
FROM market_events e
|
|
91
|
+
JOIN markets m ON e.market_address = m.address
|
|
92
|
+
WHERE e.trader = ?
|
|
93
|
+
AND e.timestamp >= ?
|
|
94
|
+
AND e.timestamp <= ?
|
|
95
|
+
ORDER BY e.timestamp DESC, e.id DESC
|
|
96
|
+
LIMIT ? OFFSET ?`);
|
|
97
|
+
this.countByTraderStmt = this.db.query('SELECT COUNT(*) as cnt FROM market_events WHERE trader = ?');
|
|
98
|
+
this.findTradersByMarketStmt = this.db.query(`SELECT DISTINCT trader FROM market_events
|
|
99
|
+
WHERE market_address = ? AND trader IS NOT NULL
|
|
100
|
+
ORDER BY trader`);
|
|
101
|
+
this.firstTradeByMarketLowerTraderStmt = this.db.query(`SELECT old_mean, old_std_dev
|
|
102
|
+
FROM market_events
|
|
103
|
+
WHERE market_address = ? AND LOWER(trader) = ? AND event_type = 'trade_executed'
|
|
104
|
+
ORDER BY timestamp ASC, id ASC
|
|
105
|
+
LIMIT 1`);
|
|
106
|
+
this.lastTradeByMarketLowerTraderStmt = this.db.query(`SELECT mean, std_dev
|
|
107
|
+
FROM market_events
|
|
108
|
+
WHERE market_address = ? AND LOWER(trader) = ? AND event_type = 'trade_executed'
|
|
109
|
+
ORDER BY timestamp DESC, id DESC
|
|
110
|
+
LIMIT 1`);
|
|
5
111
|
}
|
|
6
112
|
runInsert(stmt, input) {
|
|
7
|
-
const result = stmt.run(input.market_address, input.event_uid, input.tx_hash, input.block_number, input.timestamp, input.event_type, input.trader, input.mean, input.std_dev, input.lower_bound, input.upper_bound, input.old_mean, input.old_std_dev, input.collateral_posted, input.raw_data, input.outcome_count ?? null, input.min_outcome_index ?? null, input.is_position_sell != null ? (input.is_position_sell ? 1 : 0) : null, input.settlement_outcome_index ?? null, input.settlement_outcomes_json ?? null, input.settlement_value ?? null, input.settlement_x1 ?? null, input.settlement_x2 ?? null);
|
|
113
|
+
const result = stmt.run(input.market_address, input.event_uid, input.tx_hash, input.block_number, input.timestamp, input.event_type, input.trader, input.mean, input.std_dev, input.lower_bound, input.upper_bound, input.old_mean, input.old_std_dev, input.mean_2 ?? null, input.std_dev_2 ?? null, input.lower_bound_2 ?? null, input.upper_bound_2 ?? null, input.old_mean_2 ?? null, input.old_std_dev_2 ?? null, input.rho ?? null, input.old_rho ?? null, input.collateral_posted, input.raw_data, input.outcome_count ?? null, input.min_outcome_index ?? null, input.is_position_sell != null ? (input.is_position_sell ? 1 : 0) : null, input.settlement_outcome_index ?? null, input.settlement_outcomes_json ?? null, input.settlement_value ?? null, input.settlement_x1 ?? null, input.settlement_x2 ?? null);
|
|
8
114
|
return result.changes;
|
|
9
115
|
}
|
|
10
116
|
insert(input) {
|
|
11
117
|
try {
|
|
12
|
-
|
|
13
|
-
(market_address, event_uid, tx_hash, block_number, timestamp, event_type,
|
|
14
|
-
trader, mean, std_dev, lower_bound, upper_bound,
|
|
15
|
-
old_mean, old_std_dev, collateral_posted, raw_data,
|
|
16
|
-
outcome_count, min_outcome_index, is_position_sell,
|
|
17
|
-
settlement_outcome_index, settlement_outcomes_json,
|
|
18
|
-
settlement_value, settlement_x1, settlement_x2)
|
|
19
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
20
|
-
this.runInsert(stmt, input);
|
|
118
|
+
this.runInsert(this.insertStmt, input);
|
|
21
119
|
return true;
|
|
22
120
|
}
|
|
23
121
|
catch {
|
|
@@ -26,17 +124,9 @@ export class EventRepository {
|
|
|
26
124
|
}
|
|
27
125
|
insertBatch(inputs) {
|
|
28
126
|
let inserted = 0;
|
|
29
|
-
const stmt = this.db.query(`INSERT OR IGNORE INTO market_events
|
|
30
|
-
(market_address, event_uid, tx_hash, block_number, timestamp, event_type,
|
|
31
|
-
trader, mean, std_dev, lower_bound, upper_bound,
|
|
32
|
-
old_mean, old_std_dev, collateral_posted, raw_data,
|
|
33
|
-
outcome_count, min_outcome_index, is_position_sell,
|
|
34
|
-
settlement_outcome_index, settlement_outcomes_json,
|
|
35
|
-
settlement_value, settlement_x1, settlement_x2)
|
|
36
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
37
127
|
const tx = this.db.transaction(() => {
|
|
38
128
|
for (const input of inputs) {
|
|
39
|
-
inserted += this.runInsert(
|
|
129
|
+
inserted += this.runInsert(this.insertStmt, input);
|
|
40
130
|
}
|
|
41
131
|
});
|
|
42
132
|
tx();
|
|
@@ -44,87 +134,61 @@ export class EventRepository {
|
|
|
44
134
|
}
|
|
45
135
|
findByMarket(marketAddress, options = {}) {
|
|
46
136
|
const { limit = 100, offset = 0, fromTimestamp, toTimestamp } = options;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
137
|
+
if (fromTimestamp !== undefined && toTimestamp !== undefined) {
|
|
138
|
+
return this.findByMarketRangeStmt.all(marketAddress, fromTimestamp, toTimestamp, limit, offset);
|
|
139
|
+
}
|
|
50
140
|
if (fromTimestamp !== undefined) {
|
|
51
|
-
|
|
52
|
-
params.push(fromTimestamp);
|
|
141
|
+
return this.findByMarketFromStmt.all(marketAddress, fromTimestamp, limit, offset);
|
|
53
142
|
}
|
|
54
143
|
if (toTimestamp !== undefined) {
|
|
55
|
-
|
|
56
|
-
params.push(toTimestamp);
|
|
144
|
+
return this.findByMarketToStmt.all(marketAddress, toTimestamp, limit, offset);
|
|
57
145
|
}
|
|
58
|
-
|
|
59
|
-
return this.db
|
|
60
|
-
.query(`SELECT * FROM market_events
|
|
61
|
-
WHERE ${conditions.join(' AND ')}
|
|
62
|
-
ORDER BY block_number ASC, timestamp ASC, id ASC
|
|
63
|
-
LIMIT ? OFFSET ?`)
|
|
64
|
-
.all(...params);
|
|
146
|
+
return this.findByMarketStmt.all(marketAddress, limit, offset);
|
|
65
147
|
}
|
|
66
148
|
findByMarketForLPReplay(marketAddress) {
|
|
67
|
-
return this.
|
|
68
|
-
.query(`SELECT *
|
|
69
|
-
FROM market_events
|
|
70
|
-
WHERE market_address = ?
|
|
71
|
-
AND event_type IN (
|
|
72
|
-
'bootstrapped',
|
|
73
|
-
'trade_moved',
|
|
74
|
-
'market_initialized',
|
|
75
|
-
'trade_executed',
|
|
76
|
-
'market_settled',
|
|
77
|
-
'liquidity_added',
|
|
78
|
-
'liquidity_removed'
|
|
79
|
-
)
|
|
80
|
-
ORDER BY block_number ASC, timestamp ASC, id ASC`)
|
|
81
|
-
.all(marketAddress);
|
|
149
|
+
return this.findByMarketForLPReplayStmt.all(marketAddress);
|
|
82
150
|
}
|
|
83
151
|
countByMarket(marketAddress) {
|
|
84
|
-
const row = this.
|
|
85
|
-
.query("SELECT COUNT(*) as cnt FROM market_events WHERE market_address = ? AND event_type NOT IN ('liquidity_added', 'liquidity_removed')")
|
|
86
|
-
.get(marketAddress);
|
|
152
|
+
const row = this.countByMarketStmt.get(marketAddress);
|
|
87
153
|
return row.cnt;
|
|
88
154
|
}
|
|
89
155
|
totalCount() {
|
|
90
|
-
const row = this.
|
|
156
|
+
const row = this.totalCountStmt.get();
|
|
91
157
|
return row.cnt;
|
|
92
158
|
}
|
|
93
159
|
findByTrader(trader, options = {}) {
|
|
94
160
|
const { limit = 100, offset = 0, fromTimestamp, toTimestamp } = options;
|
|
95
|
-
|
|
96
|
-
|
|
161
|
+
if (fromTimestamp !== undefined && toTimestamp !== undefined) {
|
|
162
|
+
return this.findByTraderRangeStmt.all(trader, fromTimestamp, toTimestamp, limit, offset);
|
|
163
|
+
}
|
|
97
164
|
if (fromTimestamp !== undefined) {
|
|
98
|
-
|
|
99
|
-
params.push(fromTimestamp);
|
|
165
|
+
return this.findByTraderFromStmt.all(trader, fromTimestamp, limit, offset);
|
|
100
166
|
}
|
|
101
167
|
if (toTimestamp !== undefined) {
|
|
102
|
-
|
|
103
|
-
params.push(toTimestamp);
|
|
168
|
+
return this.findByTraderToStmt.all(trader, toTimestamp, limit, offset);
|
|
104
169
|
}
|
|
105
|
-
|
|
106
|
-
return this.db
|
|
107
|
-
.query(`SELECT e.*, m.title as market_title
|
|
108
|
-
FROM market_events e
|
|
109
|
-
JOIN markets m ON e.market_address = m.address
|
|
110
|
-
WHERE ${conditions.join(' AND ')}
|
|
111
|
-
ORDER BY e.timestamp DESC
|
|
112
|
-
LIMIT ? OFFSET ?`)
|
|
113
|
-
.all(...params);
|
|
170
|
+
return this.findByTraderStmt.all(trader, limit, offset);
|
|
114
171
|
}
|
|
115
172
|
countByTrader(trader) {
|
|
116
|
-
const row = this.
|
|
117
|
-
.query('SELECT COUNT(*) as cnt FROM market_events WHERE trader = ?')
|
|
118
|
-
.get(trader);
|
|
173
|
+
const row = this.countByTraderStmt.get(trader);
|
|
119
174
|
return row.cnt;
|
|
120
175
|
}
|
|
121
176
|
findTradersByMarket(marketAddress) {
|
|
122
|
-
const rows = this.
|
|
123
|
-
.query(`SELECT DISTINCT trader FROM market_events
|
|
124
|
-
WHERE market_address = ? AND trader IS NOT NULL
|
|
125
|
-
ORDER BY trader`)
|
|
126
|
-
.all(marketAddress);
|
|
177
|
+
const rows = this.findTradersByMarketStmt.all(marketAddress);
|
|
127
178
|
return rows.map((r) => r.trader);
|
|
128
179
|
}
|
|
180
|
+
findTradeBoundsByMarketAndTrader(marketAddress, trader) {
|
|
181
|
+
const first = this.firstTradeByMarketLowerTraderStmt.get(marketAddress.toLowerCase(), trader.toLowerCase());
|
|
182
|
+
const last = this.lastTradeByMarketLowerTraderStmt.get(marketAddress.toLowerCase(), trader.toLowerCase());
|
|
183
|
+
if (!first || !last) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
first_old_mean: first.old_mean ?? null,
|
|
188
|
+
first_old_std_dev: first.old_std_dev ?? null,
|
|
189
|
+
last_mean: last.mean,
|
|
190
|
+
last_std_dev: last.std_dev,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
129
193
|
}
|
|
130
194
|
//# sourceMappingURL=event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,16 +39,8 @@ export declare class LPPositionRepository {
|
|
|
39
39
|
/** Recompute deposit/withdrawal totals from market_events. Idempotent — safe
|
|
40
40
|
* to call on every event cycle without double-counting. */
|
|
41
41
|
recomputeFromEvents(marketAddress: string, provider: string): void;
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
*
|
|
45
|
-
* Lambda formula: `k × √(2σ√π)` — the AMM's full-pool lambda for the distribution.
|
|
46
|
-
* This is the full lambda, not scaled by share fraction. Consumers must scale by
|
|
47
|
-
* `shares / totalShares` to get the per-LP component lambda. We store the full value
|
|
48
|
-
* because the share fraction at LP-entry time isn't readily available in this context,
|
|
49
|
-
* and the consumer already has the shares data from `getLPShares`.
|
|
50
|
-
*/
|
|
51
|
-
private populateEntryDistributionIfMissing;
|
|
42
|
+
/** Recompute LP aggregates for multiple providers in one DB pass. */
|
|
43
|
+
recomputeFromEventsBatch(marketAddress: string, providers: readonly string[]): void;
|
|
52
44
|
/** Set entry distribution fields if not yet populated. */
|
|
53
45
|
upsertEntryDistribution(marketAddress: string, provider: string, mean: number | null, sigma: number | null, k: number | null): void;
|
|
54
46
|
/** Mark an LP position as claimed (called when a position_claimed event is processed). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,8DAA8D;IAC9D,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS7D;gEAC4D;IAC5D,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"lp-position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}
|