Skip to content

Commit 18a9144

Browse files
committed
Feat: Xrp version state to api
1 parent a0a7175 commit 18a9144

File tree

4 files changed

+59
-5
lines changed

4 files changed

+59
-5
lines changed

src/config/configuration.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
} from '../entity/utxo-entity-definitions';
1313
import {
1414
DBXrpIndexerBlock,
15+
DBXrpIndexerVersion,
1516
DBXrpState,
1617
DBXrpTransaction,
1718
} from '../entity/xrp-entity-definitions';
@@ -146,7 +147,12 @@ function getDatabaseEntities(verifierType: ChainType) {
146147
IndexerVersionState,
147148
];
148149
case ChainType.XRP:
149-
return [DBXrpIndexerBlock, DBXrpTransaction, DBXrpState];
150+
return [
151+
DBXrpIndexerBlock,
152+
DBXrpTransaction,
153+
DBXrpState,
154+
DBXrpIndexerVersion,
155+
];
150156
default:
151157
throw new Error(`Unsupported verifier type: ${verifierType}`);
152158
}

src/entity/xrp-entity-definitions.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TransactionResult,
99
} from '../indexed-query-manager/indexed-query-manager-types';
1010
import { Column, Entity, PrimaryColumn } from 'typeorm';
11+
import { ApiDBVersion } from 'src/dtos/indexer/ApiDbVersion.dto';
1112

1213
@Entity('blocks')
1314
export class DBXrpIndexerBlock {
@@ -170,3 +171,39 @@ export class DBXrpState {
170171
export type IDBXrpState = new () => DBXrpState;
171172

172173

174+
@Entity('versions')
175+
export class DBXrpIndexerVersion {
176+
@PrimaryColumn({ type: 'bigint' })
177+
id: string;
178+
179+
@Column()
180+
node_version: string;
181+
182+
@Column()
183+
git_tag: string;
184+
185+
@Column()
186+
git_hash: string;
187+
188+
@Column()
189+
build_date: number;
190+
191+
@Column()
192+
num_confirmations: number;
193+
194+
@Column()
195+
history_seconds: number;
196+
197+
toApiDBVersion(): ApiDBVersion {
198+
return {
199+
nodeVersion: this.node_version,
200+
gitTag: this.git_tag,
201+
gitHash: this.git_hash,
202+
buildDate: this.build_date,
203+
numConfirmations: this.num_confirmations,
204+
historySeconds: this.history_seconds,
205+
}
206+
}
207+
}
208+
209+
export type IDBXrpIndexerVersion = new () => DBXrpIndexerVersion;

src/services/indexer-services/utxo-indexer.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ abstract class UtxoExternalIndexerEngineService extends IIndexerEngineService {
118118
);
119119
const resVersion = await queryVersion.getOne();
120120
if (!resVersion) {
121-
throw new Error('No tip state found in the indexer database');
121+
throw new Error('No versions state found in the indexer database');
122122
}
123123
return resVersion.toApiDBVersion();
124124
}

src/services/indexer-services/xrp-indexer.service.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ import { QueryBlock } from '../../dtos/indexer/QueryBlock.dto';
1010
import { QueryTransaction } from '../../dtos/indexer/QueryTransaction.dto';
1111
import {
1212
DBXrpIndexerBlock,
13+
DBXrpIndexerVersion,
1314
DBXrpState,
1415
DBXrpTransaction,
1516
IDBXrpIndexerBlock,
17+
IDBXrpIndexerVersion,
1618
IDBXrpState,
1719
IDBXrpTransaction,
1820
} from '../../entity/xrp-entity-definitions';
@@ -26,6 +28,7 @@ export class XrpExternalIndexerEngineService extends IIndexerEngineService {
2628
private transactionTable: IDBXrpTransaction;
2729
private blockTable: IDBXrpIndexerBlock;
2830
private tipState: IDBXrpState;
31+
private versionTable: IDBXrpIndexerVersion;
2932

3033
private indexerServerPageLimit: number;
3134

@@ -37,6 +40,7 @@ export class XrpExternalIndexerEngineService extends IIndexerEngineService {
3740
this.transactionTable = DBXrpTransaction;
3841
this.blockTable = DBXrpIndexerBlock;
3942
this.tipState = DBXrpState;
43+
this.versionTable = DBXrpIndexerVersion;
4044
const verifierConfig =
4145
this.configService.get<VerifierServerConfig>('verifierConfig');
4246
this.indexerServerPageLimit = verifierConfig.indexerServerPageLimit;
@@ -68,9 +72,16 @@ export class XrpExternalIndexerEngineService extends IIndexerEngineService {
6872
return response;
6973
}
7074

71-
public getIndexerServiceVersion(): Promise<ApiDBVersion> {
72-
// TODO: (Luka) implement
73-
throw new Error('Method not implemented.');
75+
public async getIndexerServiceVersion(): Promise<ApiDBVersion> {
76+
const queryVersion = this.manager.createQueryBuilder(
77+
this.versionTable,
78+
'version',
79+
);
80+
const resVersion = await queryVersion.getOne();
81+
if (!resVersion) {
82+
throw new Error('No versions state found in the indexer database');
83+
}
84+
return resVersion.toApiDBVersion();
7485
}
7586

7687
public async confirmedBlockAt(

0 commit comments

Comments
 (0)