From b9fd09a79f53efb09d02c3e326023fee7e4881cf Mon Sep 17 00:00:00 2001 From: Marcel Arndt Date: Mon, 30 Jun 2025 07:53:53 +0200 Subject: [PATCH] feat: add updatedAt field to tour from DL Api --- .../20250627131656_add_tour_updated_at/migration.sql | 8 ++++++++ service/data-hub/data-connector/prisma/schema.prisma | 3 +++ .../data-hub/data-connector/src/core/database/schema.gql | 1 + .../data-hub/data-connector/src/core/database/types.ts | 3 +++ .../src/modules/app-accounting/tour.object-type.ts | 2 ++ .../feat-extractors/dispo-live-extractors.service.ts | 2 ++ .../modules/feat-etl/feat-extractors/source.interface.ts | 9 +++++++++ .../modules/feat-etl/feat-loaders/loaders/tour.loader.ts | 2 ++ .../feat-etl/feat-transformers/staging.interface.ts | 1 + .../feat-transformers/transformers/tour.transformer.ts | 7 +++++++ 10 files changed, 38 insertions(+) create mode 100644 service/data-hub/data-connector/prisma/migrations/20250627131656_add_tour_updated_at/migration.sql diff --git a/service/data-hub/data-connector/prisma/migrations/20250627131656_add_tour_updated_at/migration.sql b/service/data-hub/data-connector/prisma/migrations/20250627131656_add_tour_updated_at/migration.sql new file mode 100644 index 0000000..f3dd289 --- /dev/null +++ b/service/data-hub/data-connector/prisma/migrations/20250627131656_add_tour_updated_at/migration.sql @@ -0,0 +1,8 @@ +-- AlterTable +ALTER TABLE "Tour" ADD COLUMN "updatedAt" TIMESTAMP(3); + +-- AlterTable +ALTER TABLE "TourSource" ADD COLUMN "lastUpdate" TEXT; + +-- AlterTable +ALTER TABLE "TourStaging" ADD COLUMN "updatedAt" TIMESTAMP(3); diff --git a/service/data-hub/data-connector/prisma/schema.prisma b/service/data-hub/data-connector/prisma/schema.prisma index 907933c..abf8b7d 100644 --- a/service/data-hub/data-connector/prisma/schema.prisma +++ b/service/data-hub/data-connector/prisma/schema.prisma @@ -31,6 +31,7 @@ model TourSource { id String? check String? createTime String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' + lastUpdate String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' empfangenVonId String? endgen String? // yyyy-MM-dd serienId String? @@ -256,6 +257,7 @@ model TourStaging { consumptionCosts Float @default(0) createdAt DateTime? + updatedAt DateTime? } model PatientStaging { @@ -394,6 +396,7 @@ model Tour { revenueDeviation Float @default(0) createdAt DateTime? + updatedAt DateTime? deletedAt DateTime? Ticket Ticket? @relation(fields: [ticketId], references: [id]) ticketId String? @db.Uuid diff --git a/service/data-hub/data-connector/src/core/database/schema.gql b/service/data-hub/data-connector/src/core/database/schema.gql index 5a3e9ed..5aa2279 100644 --- a/service/data-hub/data-connector/src/core/database/schema.gql +++ b/service/data-hub/data-connector/src/core/database/schema.gql @@ -364,6 +364,7 @@ type Tour { totalKm: Float! transportType: String type: String! + updatedAt: DateTime } type TourCostBreakdown { diff --git a/service/data-hub/data-connector/src/core/database/types.ts b/service/data-hub/data-connector/src/core/database/types.ts index 645cc30..d2f12aa 100644 --- a/service/data-hub/data-connector/src/core/database/types.ts +++ b/service/data-hub/data-connector/src/core/database/types.ts @@ -337,6 +337,7 @@ export type Tour = { consumptionCosts: Generated; revenueDeviation: Generated; createdAt: Timestamp | null; + updatedAt: Timestamp | null; deletedAt: Timestamp | null; ticketId: string | null; }; @@ -347,6 +348,7 @@ export type TourSource = { id: string | null; check: string | null; createTime: string | null; + lastUpdate: string | null; empfangenVonId: string | null; endgen: string | null; serienId: string | null; @@ -459,6 +461,7 @@ export type TourStaging = { revenueDeviation: Generated; consumptionCosts: Generated; createdAt: Timestamp | null; + updatedAt: Timestamp | null; }; export type Trace = { id: Generated; diff --git a/service/data-hub/data-connector/src/modules/app-accounting/tour.object-type.ts b/service/data-hub/data-connector/src/modules/app-accounting/tour.object-type.ts index fa28457..4945fa8 100644 --- a/service/data-hub/data-connector/src/modules/app-accounting/tour.object-type.ts +++ b/service/data-hub/data-connector/src/modules/app-accounting/tour.object-type.ts @@ -98,6 +98,8 @@ export class TourObjectType implements Tour { @Field({ nullable: true }) createdAt: Date | null; @Field({ nullable: true }) + updatedAt: Date | null; + @Field({ nullable: true }) deletedAt: Date | null; @Field(() => Boolean, { nullable: true }) diff --git a/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/dispo-live-extractors.service.ts b/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/dispo-live-extractors.service.ts index 250953c..36ffb00 100644 --- a/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/dispo-live-extractors.service.ts +++ b/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/dispo-live-extractors.service.ts @@ -100,6 +100,7 @@ export class DispoLiveExtractorsService { _id, check, createTime, + lastUpdate, empfangenVonId, endgen, serienId, @@ -166,6 +167,7 @@ export class DispoLiveExtractorsService { id: _id ? `${_id}` : undefined, check: check ? `${check}` : undefined, createTime: createTime ? `${createTime}` : undefined, + lastUpdate: lastUpdate ? `${lastUpdate}` : undefined, empfangenVonId: empfangenVonId ? `${empfangenVonId}` : undefined, diff --git a/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/source.interface.ts b/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/source.interface.ts index e87a50e..6997ee6 100644 --- a/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/source.interface.ts +++ b/service/data-hub/data-connector/src/modules/feat-etl/feat-extractors/source.interface.ts @@ -2,6 +2,7 @@ export interface TourRaw { _id?: string; check?: string; createTime?: string; // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' OR yyyy-MM-dd 'Europe/Berlin' + lastUpdate?: string; // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' empfangenVonId?: string; endgen?: string; // yyyy-MM-dd serienId?: string; @@ -140,3 +141,11 @@ export interface EmployeeDyflexisRaw { contract_hours_week?: string; // Float string contract_salary_hour?: string; // Float string } + +export interface TourSummaryDto { + _id: string; + date: string; // yyyy-MM-dd + einsatznummer: string; + check: string; + lastUpdate?: string; +} \ No newline at end of file diff --git a/service/data-hub/data-connector/src/modules/feat-etl/feat-loaders/loaders/tour.loader.ts b/service/data-hub/data-connector/src/modules/feat-etl/feat-loaders/loaders/tour.loader.ts index 24bddd3..d1d71a4 100644 --- a/service/data-hub/data-connector/src/modules/feat-etl/feat-loaders/loaders/tour.loader.ts +++ b/service/data-hub/data-connector/src/modules/feat-etl/feat-loaders/loaders/tour.loader.ts @@ -94,6 +94,7 @@ export class TourLoader { billDate, billNumber, createdAt, + updatedAt } = tour; return { @@ -145,6 +146,7 @@ export class TourLoader { billDate, billNumber, createdAt, + updatedAt, ...(ticketId ? { ticketId } : {}), }; } diff --git a/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/staging.interface.ts b/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/staging.interface.ts index db3f6cf..f56ba65 100644 --- a/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/staging.interface.ts +++ b/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/staging.interface.ts @@ -57,6 +57,7 @@ export interface TourPreStaging { consumptionCosts?: number; createdAt?: Date; + updatedAt?: Date; } export interface PatientPreStaging { diff --git a/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/transformers/tour.transformer.ts b/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/transformers/tour.transformer.ts index 9c2d665..ae26d55 100644 --- a/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/transformers/tour.transformer.ts +++ b/service/data-hub/data-connector/src/modules/feat-etl/feat-transformers/transformers/tour.transformer.ts @@ -57,6 +57,11 @@ export class TourTransformer { : transformProperties(parseCETDateTime('yyyy-MM-dd'))( pick(['createTime'])(tourSource), )), + ...(tourSource.lastUpdate + ? transformProperties(parseCETDateTime('yyyy-MM-dd HH:mm:ss'))( + pick(['lastUpdate'])(tourSource), + ) + : undefined), ...transformProperties(parseBoolean)( pick(['infektion', 'gefahren'])(tourSource), ), @@ -107,6 +112,7 @@ export class TourTransformer { abrDate, abrNum, createTime, + lastUpdate, } = tourParsed; return { @@ -155,6 +161,7 @@ export class TourTransformer { billDate: abrDate, billNumber: abrNum, createdAt: createTime, + updatedAt: lastUpdate, revenue: 0, consumptionCosts: 0, } as unknown as TourPreStaging;