From f2145069d9208506ff18e7924545a3b506d4d91f Mon Sep 17 00:00:00 2001 From: jhonyeduardo Date: Fri, 5 Nov 2021 02:20:49 -0300 Subject: [PATCH 1/3] feat(job-scheduler): adiciona propriedade rangeExecutions --- src/scheduler/dto/create-scheduler.dto.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/scheduler/dto/create-scheduler.dto.ts b/src/scheduler/dto/create-scheduler.dto.ts index 6160060..b3b2fa4 100644 --- a/src/scheduler/dto/create-scheduler.dto.ts +++ b/src/scheduler/dto/create-scheduler.dto.ts @@ -23,4 +23,10 @@ export class CreateSchedulerDto { @ApiPropertyOptional() weekly: { daysOfWeek: Array, hour: number, minute: number }; + @ApiPropertyOptional() + rangeExecutions: { + frequency: { type: string, value: number }, + rangeLimit: { day: number, hour: number, minute: number } + }; + } From 2fde5fc6de0a0162adfab91962c725ddaedff43e Mon Sep 17 00:00:00 2001 From: alinelariguet Date: Fri, 12 Nov 2021 19:22:43 -0300 Subject: [PATCH 2/3] =?UTF-8?q?feat(scheduler):=20adiciona=20edi=C3=A7?= =?UTF-8?q?=C3=A3o=20e=20busca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scheduler/db/scheduler.data.ts | 55 +++++++++++++++++++++++ src/scheduler/dto/create-scheduler.dto.ts | 3 ++ src/scheduler/scheduler.controller.ts | 20 ++++++++- src/scheduler/scheduler.interface.ts | 7 +++ src/scheduler/scheduler.module.ts | 2 +- src/scheduler/scheduler.service.ts | 14 +++++- 6 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 src/scheduler/db/scheduler.data.ts diff --git a/src/scheduler/db/scheduler.data.ts b/src/scheduler/db/scheduler.data.ts new file mode 100644 index 0000000..8d4be22 --- /dev/null +++ b/src/scheduler/db/scheduler.data.ts @@ -0,0 +1,55 @@ +import { Scheduler } from '../scheduler.interface'; + +export const schedulers: Array = [ + { + id: '0148093543698', + daily: { + hour: 8, + minute: 0 + }, + executionParameter: { + options: ['installDependencies', 'unitTest', 'lint'] + }, + firstExecution: '2021-11-10T17:55:00-03:00', + processID: 'process3', + rangeExecutions: { + frequency: { + type: 'hour', + value: 2 + }, + rangeLimit: { + hour: 18, + minute: 0 + } + }, + recurrent: true, + }, + { + id: '0148093543699', + monthly: { + day: 2, + hour: 2, + minute: 30 + }, + executionParameter: { + options: ['installDependencies'] + }, + firstExecution: '2021-11-10T17:55:00-03:00', + processID: 'process1', + recurrent: true, + }, + { + id: '0148093543697', + weekly: { + daysOfWeek: ['Sunday', 'Friday', 'Tuesday'], + hour: 18, + minute: 0 + }, + executionParameter: { + options: ['installDependencies'] + }, + firstExecution: '2021-11-10T17:55:00-03:00', + processID: 'process2', + recurrent: true, + }, +]; diff --git a/src/scheduler/dto/create-scheduler.dto.ts b/src/scheduler/dto/create-scheduler.dto.ts index b3b2fa4..a124538 100644 --- a/src/scheduler/dto/create-scheduler.dto.ts +++ b/src/scheduler/dto/create-scheduler.dto.ts @@ -5,6 +5,9 @@ export class CreateSchedulerDto { @ApiPropertyOptional() daily: { hour: number, minute: number }; + @ApiPropertyOptional() + id: string; + @ApiPropertyOptional() executionParameter: object; diff --git a/src/scheduler/scheduler.controller.ts b/src/scheduler/scheduler.controller.ts index 080f97f..5dab93b 100644 --- a/src/scheduler/scheduler.controller.ts +++ b/src/scheduler/scheduler.controller.ts @@ -1,5 +1,5 @@ -import { Controller, Post, Body } from '@nestjs/common'; -import { ApiTags, ApiBody } from '@nestjs/swagger'; +import { Controller, Post, Body, Put, Get, Param } from '@nestjs/common'; +import { ApiTags, ApiBody, ApiResponse, ApiParam } from '@nestjs/swagger'; import { SchedulerService } from './scheduler.service'; import { CreateSchedulerDto } from './dto/create-scheduler.dto'; @@ -10,10 +10,26 @@ export class SchedulerController { constructor(private schedulerService: SchedulerService) {} + @ApiResponse({ status: 201, type: CreateSchedulerDto }) @ApiBody({ type: CreateSchedulerDto }) @Post() createScheduler(@Body() newScheduler: CreateSchedulerDto) { this.schedulerService.createScheduler(newScheduler); } + @ApiResponse({ status: 200, type: CreateSchedulerDto }) + @ApiParam({ name: 'id' }) + @Get(':id') + getPerson(@Param() params) { + return this.schedulerService.getScheduler(params['id']); + } + + @ApiResponse({ status: 201, type: CreateSchedulerDto }) + @ApiParam({ name: 'id' }) + @ApiBody({ type: CreateSchedulerDto }) + @Put(':id') + updateScheduler(@Body() scheduler: CreateSchedulerDto, @Param() param) { + this.schedulerService.updateScheduler(param['id'], scheduler); + } + } diff --git a/src/scheduler/scheduler.interface.ts b/src/scheduler/scheduler.interface.ts index 040c375..39951eb 100644 --- a/src/scheduler/scheduler.interface.ts +++ b/src/scheduler/scheduler.interface.ts @@ -1,5 +1,7 @@ export interface Scheduler { + id: string; + daily?: { hour: number, minute: number }; executionParameter?: object; @@ -14,4 +16,9 @@ export interface Scheduler { weekly?: { daysOfWeek: Array, hour: number, minute: number }; + rangeExecutions?: { + frequency: { type: string, value: number }, + rangeLimit: { hour: number, minute: number } + }; + } diff --git a/src/scheduler/scheduler.module.ts b/src/scheduler/scheduler.module.ts index 194e904..fbeff3d 100644 --- a/src/scheduler/scheduler.module.ts +++ b/src/scheduler/scheduler.module.ts @@ -6,7 +6,7 @@ import { ProcessesController } from './process/processes.controller'; import { ProcessesService } from './process/processes.service'; @Module({ - controllers: [SchedulerController, ProcessesController], + controllers: [ ProcessesController, SchedulerController ], // essa ordem é importante para o correto funcionamento da api na estrutura atual providers: [SchedulerService, ProcessesService] }) export class SchedulerModule {} diff --git a/src/scheduler/scheduler.service.ts b/src/scheduler/scheduler.service.ts index 7a71525..98d16a3 100644 --- a/src/scheduler/scheduler.service.ts +++ b/src/scheduler/scheduler.service.ts @@ -1,13 +1,23 @@ import { Injectable } from '@nestjs/common'; +import { Scheduler } from './scheduler.interface'; +import { schedulers } from './db/scheduler.data'; -import { schedules } from './scheduler.data'; import { CreateSchedulerDto } from './dto/create-scheduler.dto'; @Injectable() export class SchedulerService { createScheduler(scheduler: CreateSchedulerDto) { - schedules.push(scheduler); + schedulers.push(scheduler); + } + + updateScheduler(id: string, updatedScheduler: CreateSchedulerDto) { + const scheduler = this.getScheduler(id); + Object.assign(scheduler, updatedScheduler); + } + + getScheduler(id: string): Scheduler { + return schedulers.find(item => item.id === id); } } From 6c92576972ad3727942b0abb01be329bb60f09c4 Mon Sep 17 00:00:00 2001 From: alinelariguet Date: Fri, 19 Nov 2021 11:34:19 -0300 Subject: [PATCH 3/3] feat: ajustes --- src/scheduler/scheduler.controller.ts | 6 ++++++ src/scheduler/scheduler.data.ts | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/scheduler/scheduler.controller.ts b/src/scheduler/scheduler.controller.ts index 5dab93b..ad51c11 100644 --- a/src/scheduler/scheduler.controller.ts +++ b/src/scheduler/scheduler.controller.ts @@ -17,6 +17,12 @@ export class SchedulerController { this.schedulerService.createScheduler(newScheduler); } + @ApiResponse({ status: 200, type: CreateSchedulerDto }) + @Get() + get(@Param() params) { + return this.schedulerService.getScheduler(params['id']); + } + @ApiResponse({ status: 200, type: CreateSchedulerDto }) @ApiParam({ name: 'id' }) @Get(':id') diff --git a/src/scheduler/scheduler.data.ts b/src/scheduler/scheduler.data.ts index 64a36fe..4a8c410 100644 --- a/src/scheduler/scheduler.data.ts +++ b/src/scheduler/scheduler.data.ts @@ -1,6 +1,4 @@ -import { Scheduler } from './scheduler.interface'; - -export const schedules: Array = [ +export const schedules = [ { firstExecution: '2020-02-26T09:30:00-03:00', recurrent: false,