NewBaseEvents

main
DenisN 2025-07-16 11:19:40 -04:00
parent 818900f276
commit 60c4cbcc6c
9 changed files with 103 additions and 1 deletions

View File

@ -5,12 +5,14 @@ import { ZvksmetricsModule } from './zvksmetrics/zvksmetrics.module';
import { GruberModule } from './gruber/gruber.module';
import { DatabaseModule } from './database/database.module';
import { ConfigModule } from '@nestjs/config';
import { StatusModule } from './status/status.module';
import { EventsModule } from './events/events.module';
@Module({
imports: [ZvksmetricsModule, GruberModule, DatabaseModule, ConfigModule.forRoot({
isGlobal: true,
envFilePath: './.env',
}),],
}), StatusModule, EventsModule,],
controllers: [AppController],
providers: [AppService],
})

View File

@ -144,7 +144,12 @@ export class ClickhouseService {
insertRawQuery = insertRawQuery.replace('{{parameterBody}}', parameterBody);
// console.log(insertRawQuery);
// for (let query of insertQuery) {
try{
let retRaw = await connectionData.query(insertRawQuery).toPromise();
}
catch{
console.log(insertRawQuery);
}
// console.log(retRaw);
// }
break;
@ -161,4 +166,19 @@ export class ClickhouseService {
}
return 1;
}
async ClickHouseAddEvents(parameterID: string, parameterName: string, parameterValue: string, parameterBody: string, previousStatus: string, currentStatus: string): Promise<any>{
let connectionData = await this.ClickHouseDBsCreate();
let insertEventQuery = 'INSERT INTO status_events VALUES(toDateTime(now()), {{parameterID}}, \'{{parameterName}}\', {{parameterValue}}, \'{{parameterBody}}\', {{previousStatus}}, {{currentStatus}}, toDateTime(now()));';
insertEventQuery = insertEventQuery.replace('{{parameterID}}', parameterID);
insertEventQuery = insertEventQuery.replace('{{parameterName}}', parameterName);
insertEventQuery = insertEventQuery.replace('{{parameterValue}}', parameterValue);
insertEventQuery = insertEventQuery.replace('{{parameterBody}}', parameterBody);
insertEventQuery = insertEventQuery.replace('{{previousStatus}}', previousStatus);
insertEventQuery = insertEventQuery.replace('{{currentStatus}}', currentStatus);
let retEvent = await connectionData.query(insertEventQuery).toPromise();
// console.log(retEvent);
return 1;
}
}

View File

@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { EventsService } from './events.service';
@Module({
providers: [EventsService]
})
export class EventsModule {}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { EventsService } from './events.service';
describe('EventsService', () => {
let service: EventsService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [EventsService],
}).compile();
service = module.get<EventsService>(EventsService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View File

@ -0,0 +1,21 @@
import { Injectable } from '@nestjs/common';
import { ClickhouseService } from 'src/database/clickhouse/clickhouse.service';
import { MetricK2 } from 'src/zvksmetrics/zvksmetrics.service';
import { classToPlain } from 'class-transformer';
@Injectable()
export class EventsService {
async CompareStatus(parameter: MetricK2) : Promise <any>{
let diff = Math.floor(Math.random() * (2)) + 1;
console.log(diff);
if(parameter.status != (parameter.status + diff) ){
await this.RecordChangedMetricToClicHouse(parameter.id, parameter.name, parameter.value, parameter, parameter.status, parameter.status + diff);
}
return 1;
}
async RecordChangedMetricToClicHouse(parameterID: string, parameterName: string, parameterValue: number, parameterBody: MetricK2, previousStatus: number, currentStatus: number) : Promise <any>{
let rec = new ClickhouseService();
await rec.ClickHouseAddEvents(parameterID, parameterName, parameterValue.toString(), JSON.stringify(classToPlain(parameterBody)), previousStatus.toString(), currentStatus.toString());
return 1;
}
}

View File

@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { StatusService } from './status.service';
@Module({
providers: [StatusService]
})
export class StatusModule {}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { StatusService } from './status.service';
describe('StatusService', () => {
let service: StatusService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [StatusService],
}).compile();
service = module.get<StatusService>(StatusService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View File

@ -0,0 +1,4 @@
import { Injectable } from '@nestjs/common';
@Injectable()
export class StatusService {}

View File

@ -5,6 +5,7 @@ import { response } from 'express';
import { json } from 'node:stream/consumers';
import math, { create, all, evaluate, number, random, complex, string, SQRT1_2 } from 'mathjs';
import { ClickhouseService } from 'src/database/clickhouse/clickhouse.service';
import { EventsService } from 'src/events/events.service';
import { classToPlain } from 'class-transformer';
@ -132,6 +133,8 @@ export class ZvksmetricsService {
let devices: number[] = [18, 19];
let device_len: number = devices.length;
let compare = new EventsService();
// const jsonData = require('../conf/devices.json');
// console.log(jsonData);
for (let d = 0; d < device_len; d++) {
@ -150,6 +153,8 @@ export class ZvksmetricsService {
complexMetric.device = devices[d];
complexMetric.source = metr.source;
metrics.push(complexMetric);
await compare.CompareStatus(complexMetric);
}
}
}