mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-08 17:03:53 +00:00
feat: add sessions stats endpoint
This commit is contained in:
committed by
Carlos Valente
parent
71c468d069
commit
82810f1cb1
@@ -1,10 +1,20 @@
|
||||
import { getErrorMessage } from 'ontime-utils';
|
||||
import { ErrorResponse, GetInfo } from 'ontime-types';
|
||||
import { ErrorResponse, GetInfo, SessionStats } from 'ontime-types';
|
||||
|
||||
import type { Request, Response } from 'express';
|
||||
|
||||
import * as sessionService from './session.service.js';
|
||||
|
||||
export async function getSessionStats(_req: Request, res: Response<SessionStats | ErrorResponse>) {
|
||||
try {
|
||||
const stats = await sessionService.getSessionStats();
|
||||
res.status(200).send(stats);
|
||||
} catch (error) {
|
||||
const message = getErrorMessage(error);
|
||||
res.status(500).send({ message });
|
||||
}
|
||||
}
|
||||
|
||||
export async function getInfo(_req: Request, res: Response<GetInfo | ErrorResponse>) {
|
||||
try {
|
||||
const info = await sessionService.getInfo();
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import express from 'express';
|
||||
|
||||
import { getInfo } from './session.controller.js';
|
||||
import { getInfo, getSessionStats } from './session.controller.js';
|
||||
|
||||
export const router = express.Router();
|
||||
|
||||
router.get('/', getSessionStats);
|
||||
router.get('/info', getInfo);
|
||||
|
||||
@@ -1,8 +1,32 @@
|
||||
import { GetInfo } from 'ontime-types';
|
||||
import { GetInfo, SessionStats } from 'ontime-types';
|
||||
|
||||
import { getDataProvider } from '../../classes/data-provider/DataProvider.js';
|
||||
import { publicFiles } from '../../setup/index.js';
|
||||
import { getNetworkInterfaces } from '../../utils/networkInterfaces.js';
|
||||
import { socket } from '../../adapters/WebsocketAdapter.js';
|
||||
import { getLastRequest } from '../../api-integration/integration.controller.js';
|
||||
import { getLastLoadedProject } from '../../services/app-state-service/AppStateService.js';
|
||||
import { runtimeService } from '../../services/runtime-service/RuntimeService.js';
|
||||
|
||||
const startedAt = new Date();
|
||||
|
||||
/** Gathers information related to runtime */
|
||||
export async function getSessionStats(): Promise<SessionStats> {
|
||||
const { connectedClients, lastConnection } = socket.getStats();
|
||||
const lastRequest = getLastRequest();
|
||||
const projectName = await getLastLoadedProject();
|
||||
const { playback } = runtimeService.getRuntimeState();
|
||||
|
||||
return {
|
||||
startedAt: startedAt.toISOString(),
|
||||
connectedClients,
|
||||
lastConnection: lastConnection !== null ? lastConnection.toISOString() : null,
|
||||
lastRequest: lastRequest !== null ? lastRequest.toISOString() : null,
|
||||
projectName,
|
||||
playback,
|
||||
timezone: startedAt.getTimezoneOffset(),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds business logic to gathering data for the info endpoint
|
||||
|
||||
Reference in New Issue
Block a user