Skip to content

Commit 2dd115a

Browse files
fix: enrich event metadata before persistence in import service
1 parent 791c01f commit 2dd115a

4 files changed

Lines changed: 380 additions & 305 deletions

File tree

src/@types/repositories.ts

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
1-
import { PassThrough } from 'stream'
2-
3-
import { DatabaseClient, EventId, Pubkey } from './base'
4-
import { DBEvent, Event } from './event'
5-
import { Invoice } from './invoice'
6-
import { SubscriptionFilter } from './subscription'
7-
import { User } from './user'
8-
9-
export type ExposedPromiseKeys = 'then' | 'catch' | 'finally'
10-
11-
export interface IQueryResult<T> extends Pick<Promise<T>, keyof Promise<T> & ExposedPromiseKeys> {
12-
stream(options?: Record<string, any>): PassThrough & AsyncIterable<T>
13-
}
14-
15-
export interface IEventRepository {
16-
create(event: Event): Promise<number>
17-
upsert(event: Event): Promise<number>
18-
findByFilters(filters: SubscriptionFilter[]): IQueryResult<DBEvent[]>
19-
deleteByPubkeyAndIds(pubkey: Pubkey, ids: EventId[]): Promise<number>
20-
}
21-
22-
export interface IInvoiceRepository {
23-
findById(id: string, client?: DatabaseClient): Promise<Invoice | undefined>
24-
upsert(invoice: Partial<Invoice>, client?: DatabaseClient): Promise<number>
25-
updateStatus(
26-
invoice: Pick<Invoice, 'id' | 'status'>,
27-
client?: DatabaseClient,
28-
): Promise<Invoice | undefined>
29-
confirmInvoice(
30-
invoiceId: string,
31-
amountReceived: bigint,
32-
confirmedAt: Date,
33-
client?: DatabaseClient,
34-
): Promise<void>
35-
findPendingInvoices(
36-
offset?: number,
37-
limit?: number,
38-
client?: DatabaseClient,
39-
): Promise<Invoice[]>
40-
}
41-
42-
export interface IUserRepository {
43-
findByPubkey(pubkey: Pubkey, client?: DatabaseClient): Promise<User | undefined>
44-
upsert(user: Partial<User>, client?: DatabaseClient): Promise<number>
45-
getBalanceByPubkey(pubkey: Pubkey, client?: DatabaseClient): Promise<bigint>
46-
}
1+
import { PassThrough } from 'stream'
2+
3+
import { DatabaseClient, EventId, Pubkey } from './base'
4+
import { DBEvent, Event } from './event'
5+
import { Invoice } from './invoice'
6+
import { SubscriptionFilter } from './subscription'
7+
import { User } from './user'
8+
9+
export type ExposedPromiseKeys = 'then' | 'catch' | 'finally'
10+
11+
export interface IQueryResult<T> extends Pick<Promise<T>, keyof Promise<T> & ExposedPromiseKeys> {
12+
stream(options?: Record<string, any>): PassThrough & AsyncIterable<T>
13+
}
14+
15+
export interface IEventRepository {
16+
create(event: Event): Promise<number>
17+
createMany(events: Event[]): Promise<number>
18+
upsert(event: Event): Promise<number>
19+
upsertMany(events: Event[]): Promise<number>
20+
findByFilters(filters: SubscriptionFilter[]): IQueryResult<DBEvent[]>
21+
deleteByPubkeyAndIds(pubkey: Pubkey, ids: EventId[]): Promise<number>
22+
}
23+
24+
export interface IInvoiceRepository {
25+
findById(id: string, client?: DatabaseClient): Promise<Invoice | undefined>
26+
upsert(invoice: Partial<Invoice>, client?: DatabaseClient): Promise<number>
27+
updateStatus(
28+
invoice: Pick<Invoice, 'id' | 'status'>,
29+
client?: DatabaseClient,
30+
): Promise<Invoice | undefined>
31+
confirmInvoice(
32+
invoiceId: string,
33+
amountReceived: bigint,
34+
confirmedAt: Date,
35+
client?: DatabaseClient,
36+
): Promise<void>
37+
findPendingInvoices(
38+
offset?: number,
39+
limit?: number,
40+
client?: DatabaseClient,
41+
): Promise<Invoice[]>
42+
}
43+
44+
export interface IUserRepository {
45+
findByPubkey(pubkey: Pubkey, client?: DatabaseClient): Promise<User | undefined>
46+
upsert(user: Partial<User>, client?: DatabaseClient): Promise<number>
47+
getBalanceByPubkey(pubkey: Pubkey, client?: DatabaseClient): Promise<bigint>
48+
}

src/import-events.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import {
1212
EventImportService,
1313
EventImportStats,
1414
} from './services/event-import-service'
15-
import { getMasterDbClient } from './database/client'
1615
import { EventRepository } from './repositories/event-repository'
16+
import { getMasterDbClient } from './database/client'
1717

1818
interface CliOptions {
1919
batchSize: number

0 commit comments

Comments
 (0)