diff --git a/libs/common/src/modules/client/client.repository.module 2.ts b/libs/common/src/modules/client/client.repository.module 2.ts new file mode 100644 index 0000000..af1f3b0 --- /dev/null +++ b/libs/common/src/modules/client/client.repository.module 2.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { ClientEntity } from './entities'; + +@Module({ + imports: [TypeOrmModule.forFeature([ClientEntity])], + exports: [TypeOrmModule], +}) +export class ClientRepositoryModule {} diff --git a/libs/common/src/modules/client/dtos/client.dto 2.ts b/libs/common/src/modules/client/dtos/client.dto 2.ts new file mode 100644 index 0000000..fd12bc9 --- /dev/null +++ b/libs/common/src/modules/client/dtos/client.dto 2.ts @@ -0,0 +1,20 @@ +import { IsArray, IsNotEmpty, IsString } from 'class-validator'; + +export class ClientDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public clientId: string; + @IsString() + @IsNotEmpty() + public clientSecret: string; + @IsString() + @IsNotEmpty() + public redirectUri: string; + @IsArray() + @IsNotEmpty() + public scopes: string[]; +} diff --git a/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql b/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql index 9674d74..0564743 100644 --- a/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql +++ b/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql @@ -1,25 +1,15 @@ -WITH params AS ( - SELECT - NULL::uuid AS device_id, -- filter: specific device (or NULL for all) - NULL::date AS input_date, -- filter: start date (or NULL for open range) -- filter: end date (or NULL for open range) - NULL::int AS hour, -- filter: hour of day (or NULL for all hours) - NULL::int AS min_kw -- filter: min kW consumed (or NULL for no filter) -), - -total_energy AS ( +WITH total_energy AS ( SELECT log.device_id, log.event_time::date AS date, EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, MIN(log.value)::integer AS min_value, MAX(log.value)::integer AS max_value - FROM "device-status-log" log, params + FROM "device-status-log" log WHERE log.code = 'EnergyConsumed' - AND (params.device_id IS NULL OR log.device_id = params.device_id) - AND (params.input_date IS NULL OR log.event_time::date >= params.input_date) - AND (params.input_date IS NULL OR log.event_time::date <= params.input_date) - AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour) - GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time) + GROUP BY 1,2,3,4,5 ), energy_phase_A AS ( @@ -27,15 +17,13 @@ energy_phase_A AS ( log.device_id, log.event_time::date AS date, EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, MIN(log.value)::integer AS min_value, MAX(log.value)::integer AS max_value - FROM "device-status-log" log, params + FROM "device-status-log" log WHERE log.code = 'EnergyConsumedA' - AND (params.device_id IS NULL OR log.device_id = params.device_id) - AND (params.input_date IS NULL OR log.event_time::date >= params.input_date) - AND (params.input_date IS NULL OR log.event_time::date <= params.input_date) - AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour) - GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time) + GROUP BY 1,2,3,4,5 ), energy_phase_B AS ( @@ -43,15 +31,13 @@ energy_phase_B AS ( log.device_id, log.event_time::date AS date, EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, MIN(log.value)::integer AS min_value, MAX(log.value)::integer AS max_value - FROM "device-status-log" log, params + FROM "device-status-log" log WHERE log.code = 'EnergyConsumedB' - AND (params.device_id IS NULL OR log.device_id = params.device_id) - AND (params.input_date IS NULL OR log.event_time::date >= params.input_date) - AND (params.input_date IS NULL OR log.event_time::date <= params.input_date) - AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour) - GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time) + GROUP BY 1,2,3,4,5 ), energy_phase_C AS ( @@ -59,20 +45,20 @@ energy_phase_C AS ( log.device_id, log.event_time::date AS date, EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, MIN(log.value)::integer AS min_value, MAX(log.value)::integer AS max_value - FROM "device-status-log" log, params + FROM "device-status-log" log WHERE log.code = 'EnergyConsumedC' - AND (params.device_id IS NULL OR log.device_id = params.device_id) - AND (params.input_date IS NULL OR log.event_time::date >= params.input_date) - AND (params.input_date IS NULL OR log.event_time::date <= params.input_date) - AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour) - GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time) + GROUP BY 1,2,3,4,5 ) SELECT t.device_id, t.date, + t.event_year::text, + t.event_month, t.hour, (t.max_value - t.min_value) AS energy_consumed_kW, (a.max_value - a.min_value) AS energy_consumed_A, @@ -82,6 +68,4 @@ FROM total_energy t JOIN energy_phase_A a ON t.device_id = a.device_id AND t.date = a.date AND t.hour = a.hour JOIN energy_phase_B b ON t.device_id = b.device_id AND t.date = b.date AND t.hour = b.hour JOIN energy_phase_C c ON t.device_id = c.device_id AND t.date = c.date AND t.hour = c.hour -JOIN params p ON TRUE -WHERE (p.min_kw IS NULL OR (t.max_value - t.min_value) >= p.min_kw) -ORDER BY t.device_id, t.date, t.hour; \ No newline at end of file +ORDER BY 1,2; \ No newline at end of file diff --git a/libs/common/src/type/express/index.d 2.ts b/libs/common/src/type/express/index.d 2.ts new file mode 100644 index 0000000..93008c2 --- /dev/null +++ b/libs/common/src/type/express/index.d 2.ts @@ -0,0 +1,9 @@ +import { File } from 'multer'; + +declare global { + namespace Express { + interface Request { + file?: File; + } + } +} \ No newline at end of file diff --git a/src/space/dtos/space.parents.dto 2.ts b/src/space/dtos/space.parents.dto 2.ts new file mode 100644 index 0000000..6858f55 --- /dev/null +++ b/src/space/dtos/space.parents.dto 2.ts @@ -0,0 +1,7 @@ +import { SpaceEntity } from '@app/common/modules/space/entities/space.entity'; +import { Expose } from 'class-transformer'; + +export class SpaceWithParentsDto extends SpaceEntity { + @Expose() + lastThreeParents: string; +}