@@ -4,7 +4,38 @@ import { createDataSource, DatabaseConfig } from "@repo/indexer-database";
44import * as routers from "./routers" ;
55import winston from "winston" ;
66import { type Router } from "express" ;
7+ import Redis from "ioredis" ;
8+ import * as s from "superstruct" ;
9+ import * as Indexer from "@repo/indexer" ;
710
11+ async function initializeRedis (
12+ config : Indexer . RedisConfig ,
13+ logger : winston . Logger ,
14+ ) {
15+ const redis = new Redis ( {
16+ ...config ,
17+ } ) ;
18+
19+ return new Promise < Redis > ( ( resolve , reject ) => {
20+ redis . on ( "ready" , ( ) => {
21+ logger . info ( {
22+ at : "Indexer-API" ,
23+ message : "Redis connection established" ,
24+ config,
25+ } ) ;
26+ resolve ( redis ) ;
27+ } ) ;
28+
29+ redis . on ( "error" , ( err ) => {
30+ logger . error ( {
31+ at : "Indexer-API" ,
32+ message : "Redis connection failed" ,
33+ error : err ,
34+ } ) ;
35+ reject ( err ) ;
36+ } ) ;
37+ } ) ;
38+ }
839export async function connectToDatabase (
940 databaseConfig : DatabaseConfig ,
1041 logger : winston . Logger ,
@@ -52,9 +83,12 @@ export async function Main(
5283
5384 const postgresConfig = getPostgresConfig ( env ) ;
5485 const postgres = await connectToDatabase ( postgresConfig , logger ) ;
86+ const redisConfig = Indexer . parseRedisConfig ( env ) ;
87+ const redis = await initializeRedis ( redisConfig , logger ) ;
5588
5689 const allRouters : Record < string , Router > = {
5790 deposits : routers . deposits . getRouter ( postgres ) ,
91+ balances : routers . balances . getRouter ( redis ) ,
5892 } ;
5993 const app = ExpressApp ( allRouters ) ;
6094
0 commit comments