54 lines
2.0 KiB
TypeScript

import { createClient, RedisClientType } from 'redis';
import './util/time.js';
import { SimrailClient, SimrailClientEvents } from './util/SimrailClient.js';
import dayjs from 'dayjs';
import { StationsModule } from './modules/stations.js';
import { ApiModule } from './http/server.js';
import mongoose from 'mongoose';
import { IPlayer } from './types/player.js';
import { Station, Server, Train } from '@simrail/types';
import { TrainsModule } from './modules/trains.js';
; (async () => {
global.redis = await createClient({
url: process.env.REDIS_URI!
})
.on('error', err => console.log('Redis Client Error', err))
.connect() as RedisClientType;
console.log('Redis connected');
await mongoose.connect(process.env.MONGO_URI!);
console.log('MongoDB connected');
global.client = new SimrailClient();
/*
client.on(SimrailClientEvents.StationJoined, (server: Server, station: Station, player: IPlayer) => {
console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} joined`);
});
client.on(SimrailClientEvents.StationLeft, (server: Server, station: Station, player: IPlayer, joinedAt: number) => {
console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'}`);
});
client.on(SimrailClientEvents.TrainLeft, (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => {
console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'} |
${vehicle} | ${distance / 1000} | ${points}`);
});
client.on(SimrailClientEvents.TrainJoined, (server: Server, train: Train, player: IPlayer, start: number) => {
console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} joined | ${start}`);
});
*/
StationsModule.load();
TrainsModule.load();
ApiModule.load();
})();