Skip to content

Commit 33fa3be

Browse files
feat: 2.0.4
1 parent a9d9103 commit 33fa3be

File tree

3 files changed

+16
-91
lines changed

3 files changed

+16
-91
lines changed

prisma/schema-storage.prisma

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -244,22 +244,6 @@ model api_gateway_apis {
244244
@@index([url], map: "idx_url")
245245
}
246246

247-
model fence_tracker_triggers {
248-
id Int @id @default(autoincrement())
249-
account_code String @db.VarChar(255)
250-
zone_name String @db.VarChar(255)
251-
quantity Int @db.UnsignedInt
252-
created_at DateTime @default(now()) @db.Timestamp(0)
253-
updated_at DateTime @default(now()) @db.Timestamp(0)
254-
255-
@@unique([account_code, zone_name], map: "unique_account_code_zone_name")
256-
@@index([created_at], map: "idx_created_at")
257-
@@index([updated_at], map: "idx_updated_at")
258-
@@index([account_code], map: "idx_account_code")
259-
@@index([zone_name], map: "idx_zone_name")
260-
@@index([quantity], map: "idx_quantity")
261-
}
262-
263247
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
264248
model query_gateway_queries {
265249
id Int @id @default(autoincrement())
@@ -531,6 +515,7 @@ model fence_tracker_registers {
531515
created_at DateTime @default(now()) @db.Timestamp(0)
532516
updated_at DateTime @default(now()) @db.Timestamp(0)
533517
518+
@@unique([account_code, period_started_at, period_ended_at], map: "unique_account_code_period_started_at_period_ended_at")
534519
@@index([account_code], map: "idx_account_code")
535520
@@index([cabinet], map: "idx_cabinet")
536521
@@index([condominium], map: "idx_condominium")

src/services/createAlerts.service.ts

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,6 @@ const prisma = new PrismaClient();
1111

1212
export const createAlerts = async (): Promise<void> => {
1313
try {
14-
const dateA = momentTimezone.utc();
15-
16-
await prisma.fence_tracker_triggers.deleteMany(
17-
{
18-
where: {
19-
updated_at: {
20-
lt: dateA.hours() < 15
21-
? dateA.clone().hours(3).minutes(0).seconds(0).milliseconds(0).toDate()
22-
: dateA.clone().hours(15).minutes(0).seconds(0).milliseconds(0).toDate()
23-
}
24-
}
25-
}
26-
);
27-
2814
const queryGatewayHttpClientInstance = new HttpClientUtil.HttpClient();
2915

3016
queryGatewayHttpClientInstance.setAuthenticationStrategy(
@@ -52,9 +38,9 @@ export const createAlerts = async (): Promise<void> => {
5238
return;
5339
}
5440

55-
const dateB = momentTimezone.tz('America/Sao_Paulo');
56-
const startDate = dateB.hours() < 12 ? dateB.clone().hours(0).minutes(0).seconds(0) : dateB.clone().hours(12).minutes(0).seconds(0);
57-
const endDate = dateB.hours() < 12 ? dateB.clone().hours(11).minutes(59).seconds(59) : dateB.clone().hours(23).minutes(59).seconds(59);
41+
const date = momentTimezone.tz('America/Sao_Paulo');
42+
const startDate = date.hours() < 12 ? date.clone().hours(0).minutes(0).seconds(0) : date.clone().hours(12).minutes(0).seconds(0);
43+
const endDate = date.hours() < 12 ? date.clone().hours(11).minutes(59).seconds(59) : date.clone().hours(23).minutes(59).seconds(59);
5844
const whatsAppHttpClientInstance = new HttpClientUtil.HttpClient();
5945
const startDateFormattation = startDate.clone().format('DD/MM/YYYY HH:mm:ss');
6046
const endDateFormattation = endDate.clone().format('DD/MM/YYYY HH:mm:ss');
@@ -66,30 +52,21 @@ export const createAlerts = async (): Promise<void> => {
6652
const alertMapZoneName = alertMap.zone_name;
6753
const alertMapQuantity = alertMap.quantity;
6854

69-
const fenceTrackerTrigger = await prisma.fence_tracker_triggers.findUnique(
55+
const fenceTrackerRegister = await prisma.fence_tracker_registers.findUnique(
7056
{
7157
where: {
72-
account_code_zone_name: {
58+
account_code_period_started_at_period_ended_at: {
7359
account_code: alertMapAccountCode,
74-
zone_name: alertMapZoneName
75-
}
60+
period_started_at: startDate.toDate(),
61+
period_ended_at: endDate.toDate()
62+
}
7663
}
7764
}
7865
);
7966

8067
const alertMapQuantityMultiple = Math.floor(alertMapQuantity / EVENTS_COUNT_THRESHOLD) * EVENTS_COUNT_THRESHOLD;
8168

82-
if (!fenceTrackerTrigger && alertMapQuantity >= EVENTS_COUNT_THRESHOLD) {
83-
await prisma.fence_tracker_triggers.create(
84-
{
85-
data: {
86-
account_code: alertMapAccountCode,
87-
zone_name: alertMapZoneName,
88-
quantity: alertMapQuantityMultiple
89-
}
90-
}
91-
);
92-
69+
if (!fenceTrackerRegister && alertMapQuantity >= EVENTS_COUNT_THRESHOLD) {
9370
await prisma.fence_tracker_registers.create(
9471
{
9572
data: {
@@ -115,30 +92,11 @@ export const createAlerts = async (): Promise<void> => {
11592
params: { instance_id: process.env.CHAT_PRO_INSTANCE_ID }
11693
}
11794
);
118-
} else if (fenceTrackerTrigger && alertMapQuantityMultiple > fenceTrackerTrigger.quantity) {
119-
await prisma.fence_tracker_triggers.update(
120-
{
121-
where: {
122-
account_code_zone_name: {
123-
account_code: alertMapAccountCode,
124-
zone_name: alertMapZoneName
125-
}
126-
},
127-
data: { quantity: alertMapQuantityMultiple }
128-
}
129-
);
130-
131-
await prisma.fence_tracker_registers.create(
95+
} else if (fenceTrackerRegister && alertMapQuantityMultiple > fenceTrackerRegister.quantity) {
96+
await prisma.fence_tracker_registers.update(
13297
{
133-
data: {
134-
account_code: alertMapAccountCode,
135-
condominium: alertMap.condominium,
136-
cabinet: alertMap.cabinet,
137-
zone_name: alertMapZoneName,
138-
quantity: alertMapQuantityMultiple,
139-
period_started_at: startDate.toDate(),
140-
period_ended_at: endDate.toDate()
141-
}
98+
where: { id: fenceTrackerRegister.id },
99+
data: { quantity: alertMapQuantityMultiple }
142100
}
143101
);
144102

storage.sql.example

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ DROP TABLE IF EXISTS `role_types`;
1111

1212
DROP TABLE IF EXISTS `databases`;
1313
DROP TABLE IF EXISTS `fence_tracker_registers`;
14-
DROP TABLE IF EXISTS `fence_tracker_triggers`;
1514
DROP TABLE IF EXISTS `query_gateway_queries`;
1615
DROP TABLE IF EXISTS `sigma_cloud_alarm_events`;
1716
DROP TABLE IF EXISTS `users`;
@@ -104,6 +103,8 @@ CREATE TABLE `fence_tracker_registers` (
104103
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
105104

106105
PRIMARY KEY (`id`),
106+
107+
UNIQUE KEY `unique_account_code_period_started_at_period_ended_at` (`account_code`, `period_started_at`, `period_ended_at`),
107108

108109
INDEX `idx_account_code` (`account_code`),
109110
INDEX `idx_condominium` (`condominium`),
@@ -116,25 +117,6 @@ CREATE TABLE `fence_tracker_registers` (
116117
INDEX `idx_updated_at` (`updated_at`)
117118
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
118119

119-
CREATE TABLE `fence_tracker_triggers` (
120-
`id` INT NOT NULL AUTO_INCREMENT,
121-
`account_code` VARCHAR(255) NOT NULL,
122-
`zone_name` VARCHAR(255) NOT NULL,
123-
`quantity` INT UNSIGNED NOT NULL,
124-
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
125-
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
126-
127-
PRIMARY KEY (`id`),
128-
129-
UNIQUE KEY `unique_account_code_zone_name` (`account_code`, `zone_name`),
130-
131-
INDEX `idx_account_code` (`account_code`),
132-
INDEX `idx_zone_name` (`zone_name`),
133-
INDEX `idx_quantity` (`quantity`),
134-
INDEX `idx_created_at` (`created_at`),
135-
INDEX `idx_updated_at` (`updated_at`)
136-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
137-
138120
CREATE TABLE `query_gateway_queries` (
139121
`id` INT NOT NULL AUTO_INCREMENT,
140122
`name` VARCHAR(255) UNIQUE NOT NULL,

0 commit comments

Comments
 (0)