import { DyFM_RelativeDate, DyFM_ServerStatus, DyFM_Error, DyFM_Error_Statistics, DyFM_Errors, DyFM_ServerConnectionCheckResult } from '@futdevpro/fsm-dynamo'; import { Subscription } from 'rxjs'; import * as mongoose from 'mongoose'; import { DyNTS_SingletonService } from '../../../_services/base/singleton.service'; import { DyNTS_Errors_ControlService } from '../errors/errors.control-service'; import { DyNTS_ServerStatusSnapshot_ControlService } from './server-status-snapshot.control-service'; import { DyNTS_ApiService_Base } from '../../../_services/base/api.service-base'; export interface DyNTS_ServerConnection { name: string; apiService: DyNTS_ApiService_Base; accessible?: boolean; lastCheck?: Date; } /** * A readiness-probe ({@link DyNTS_ServerStatus_ControlService.checkDbReadiness}) eredménye. * `ready=true` CSAK ha a DB-connection él (readyState=1) ÉS a valós ping round-trip sikerült. */ export interface DyNTS_DbReadiness { /** ready: a DB elérhető (readyState=1 + sikeres ping). Erre adjon az endpoint 200-at, különben 503-at. */ ready: boolean; /** mongoose connection.readyState: 0=disconnected, 1=connected, 2=connecting, 3=disconnecting. */ dbReadyState: number; /** Sikerült-e a valós DB ping round-trip (csak readyState=1-nél próbáljuk). */ dbPingOk: boolean; /** A szerver uptime ms-ban. */ uptime: number; /** A BEDROCK (nts-dynamo) verziója — NEM az app sajátja. */ serverVersion: string; /** AZ APP saját verziója (`DyNTS_global_settings.systemVersion`) — deploy-verifikációhoz. */ appVersion?: string; /** Hány mongoose-connection létezik ebben a process-ben (`mongoose.connections.length`). >1 → nem a default-on megy a data-layer. */ dbConnectionCount?: number; /** A default connection cél-hosztja (`connection.host`) — üres/undefined, ha a connect sosem futott le rajta. */ dbHost?: string; /** A default connection adatbázis-neve (`connection.name`). */ dbName?: string; /** Hány model van a default connectionre regisztrálva. 0 → a data-layer NEM ezt a connectiont használja. */ dbModelCount?: number; /** A NEM-default connectionök readyState-jei — ha itt van 1-es, a probe rossz handle-t mér. */ dbOtherReadyStates?: number[]; } export declare abstract class DyNTS_ServerStatus_ControlService, T_Errors_ControlService extends DyNTS_Errors_ControlService, T_ServerStatusSnapshot extends DyFM_ServerStatus, T_ServerStatusSnapshot_ControlService extends DyNTS_ServerStatusSnapshot_ControlService> extends DyNTS_SingletonService { protected abstract getErrorControlService?(set?: { data?: T_Errors; issuer?: string; }): T_Errors_ControlService; protected abstract getServerStatusSnapshotControlService?(set?: { data?: T_ServerStatus; issuer?: string; }): T_ServerStatusSnapshot_ControlService; protected readonly up: Date; protected readonly _serverVersionNumeric: number; /** * A BEDROCK (nts-dynamo) verzioja — a package.json-bol importalva. * FIGYELEM: ez NEM az app sajat verzioja! (Lasd `appVersion`.) */ get serverVersion(): string; get serverVersionNumeric(): number; /** * AZ APP sajat verzioja (2026-07-20) — a `DyNTS_App_Params.version`-bol, amit az * app-params a `DyNTS_global_settings.systemVersion`-be tolt (app-params.control-model). * * MIERT KELLETT: a `serverVersion` az nts-dynamo package.json-jabol jon, ezert a TELJES * flottan UGYANAZT az erteket adja (pl. 01.15.104), fuggetlenul attol, hogy az app melyik * verzioja fut. Emiatt minden verzio-alapu deploy-ellenorzes vak volt: * - a CI/CD `deploy-verify` polling SOHA nem egyezne (app 01.15.142 vs serverVersion 01.15.104), * - az Overseer verzio-drift monitorozasa nem latja az ELAVULT app-deployt, * - a `fdp deploy-service --skip-if-version` gate mindig eltérést lát → sosem skippel. * * ADDITIV mezo: a `serverVersion` szemantikaja VALTOZATLAN marad (nulla regresszio a * meglevo fogyasztoknal / e2e-knel); az uj fogyasztok az `appVersion`-t olvassak. */ get appVersion(): string; protected _latestClientVersion: string; protected _latestClientVersionNumeric: number; get latestClientVersion(): string; get latestClientVersionNumeric(): number; protected abstract requiredServerConnections: DyNTS_ServerConnection[]; protected connectionMaxCheckFrequency: number; readonly defaultErrorUserMsg = "Something went wrong"; readonly overseerTickTime: number; overseer: Subscription; protected constructor(); getServerStatus(issuer: string, clientVersion?: string): Promise; checkServerConnections(issuer: string): Promise; /** * A mongoose default-connection. Külön metódus = teszt-seam (spy-jal felülírható, hogy a * {@link checkDbReadiness} DB nélkül is tesztelhető legyen). */ protected getMongooseConnection(): mongoose.Connection; /** * Readiness-probe: a `/health` (liveness — "a process fut + kiszolgál") MELLETT a DB-elérhetőséget * ellenőrzi. A readyState (mongoose driver-állapot) + egy valós `ping` round-trip → így a "connected * de a DB nem válaszol" eset is kibukik. **Sosem dob** (a probe-nak determinisztikusan kell válaszolnia); * hiba esetén `ready=false`. Az endpoint 503-at adjon, ha nem ready → az orchestrátor (k8s/docker/LB) * ne irányítson forgalmat a DB-vesztett instance-ra. */ checkDbReadiness(): Promise; getErrorStatistics(range: DyFM_RelativeDate, issuer: string): Promise; protected getVersionNumeric(version: string): number; protected clientVersionIsLatest(clientVersion: string): boolean; protected setLatestClientVersion(clientVersion: string, clientVersionNumeric: number): void; protected triggerCreateSnapshot(issuer: string): Promise; getServerStatusSnapshot(issuer: string): Promise; } //# sourceMappingURL=server-status.control-service.d.ts.map