Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,24 @@ import { cosmeticsDataSource } from "./cosmetics-data-source";
import { PostgresTypeORM } from "./evolution-types/src/PostgresTypeORM";
import { Server } from "./server/server";
import { Pino } from "./shared/logger/infrastructure/Pino";
import { redisClient } from "./shared/redis/redisClient";

const logger = new Pino();

void (async () => {
const database = new PostgresTypeORM();
await database.connect().catch((error) => logger.error(error));
await cosmeticsDataSource.initialize().catch((error) => logger.error(error));
await database
.connect()
.then(() => logger.info("Connected to Postgres (shared schema)"))
.catch((error) => logger.error(error));
await cosmeticsDataSource
.initialize()
.then(() => logger.info("Connected to Postgres (cosmetics schema)"))
.catch((error) => logger.error(error));
await redisClient
.connect()
.then(() => logger.info("Connected to Redis"))
.catch((error) => logger.error(error));
const server = new Server(logger);
server.start();
})();
3 changes: 1 addition & 2 deletions src/server/routes/ticket-router.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { bearer } from "@elysiajs/bearer";
import { RedisClient } from "bun";
import { Elysia } from "elysia";

import { config } from "../../config";
import { IssueGameTicket } from "../../modules/ticket/application/IssueGameTicket";
import { BunRedisRankedTicketRepository } from "../../modules/ticket/infrastructure/BunRedisRankedTicketRepository";
import { JWT } from "../../shared/JWT";
import { redisClient } from "../../shared/redis/redisClient";
import { banGuard } from "../guards/bandGuard";

const jwt = new JWT(config.jwt);
const redisClient = new RedisClient(config.redis.url);
const rankedTicketRepository = new BunRedisRankedTicketRepository(redisClient);

export const ticketRouter = new Elysia({ prefix: "/game-tickets" })
Expand Down
8 changes: 8 additions & 0 deletions src/shared/redis/redisClient.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { RedisClient } from "bun";

import { config } from "../../config";

// Single shared Redis client for the whole app. Bun's RedisClient connects
// lazily (on first command), so the boot sequence in src/index.ts calls
// connect() explicitly to fail-fast if Redis is unreachable at startup.
export const redisClient = new RedisClient(config.redis.url);
Loading