From 7bd992ae1c219185ba2a1b0ede07c0b5b0659225 Mon Sep 17 00:00:00 2001 From: Miroir Framework Date: Fri, 27 Sep 2024 10:28:56 +0200 Subject: [PATCH] create basic elements for Miroir Action Script (MAS), migrate Tools.submit to MAS #28. Adding transformer_constantObject to protect transformer_InnerReferences within a Query Template. --- .../getMiroirFundamentalJzodSchema.ts | 1 + .../miroirFundamentalJzodSchema.ts | 89 +++++++ .../miroirFundamentalType.ts | 22 +- .../src/2_domain/QuerySelectors.ts | 6 +- .../miroir-core/src/2_domain/Templates.ts | 13 +- .../miroir-core/src/2_domain/Transformers.ts | 45 ++-- .../src/3_controllers/DomainController.ts | 2 +- .../a97756cf-dd93-42b9-a021-91a629b187b9.json | 19 ++ .../2_domain/queryTemplates.unit.test.ts | 52 ++-- .../src/miroir-fwk/4_view/Importer.tsx | 53 ++-- .../4_view/components/ReportView.tsx | 235 +++++------------- 11 files changed, 292 insertions(+), 245 deletions(-) diff --git a/packages/miroir-core/src/0_interfaces/1_core/bootstrapJzodSchemas/getMiroirFundamentalJzodSchema.ts b/packages/miroir-core/src/0_interfaces/1_core/bootstrapJzodSchemas/getMiroirFundamentalJzodSchema.ts index 02699802..2e20f57e 100644 --- a/packages/miroir-core/src/0_interfaces/1_core/bootstrapJzodSchemas/getMiroirFundamentalJzodSchema.ts +++ b/packages/miroir-core/src/0_interfaces/1_core/bootstrapJzodSchemas/getMiroirFundamentalJzodSchema.ts @@ -2493,6 +2493,7 @@ export function getMiroirFundamentalJzodSchema( queryTemplate: (miroirFundamentalJzodSchema as any).definition.context.queryTemplate, queryTemplateRecord: (miroirFundamentalJzodSchema as any).definition.context.queryTemplateRecord, transformer_constantUuid: (transformerJzodSchema as any).definition.context.transformer_constantUuid, + transformer_constantObject: (transformerJzodSchema as any).definition.context.transformer_constantObject, transformer_constantString: (transformerJzodSchema as any).definition.context.transformer_constantString, transformer_newUuid: (transformerJzodSchema as any).definition.context.transformer_newUuid, transformer_parameterReference: (transformerJzodSchema as any).definition.context.transformer_parameterReference, diff --git a/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalJzodSchema.ts b/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalJzodSchema.ts index a0900084..5cdb8db5 100644 --- a/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalJzodSchema.ts +++ b/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalJzodSchema.ts @@ -1083,6 +1083,21 @@ export const miroirFundamentalJzodSchema = { } } }, + "transformer_constantObject": { + "type": "object", + "definition": { + "templateType": { + "type": "literal", + "definition": "constantObject" + }, + "constantObjectValue": { + "type": "record", + "definition": { + "type": "any" + } + } + } + }, "transformer_constantString": { "type": "object", "definition": { @@ -1178,6 +1193,14 @@ export const miroirFundamentalJzodSchema = { }, "context": {} }, + { + "type": "schemaReference", + "definition": { + "relativePath": "transformer_constantObject", + "absolutePath": "fe9b7d99-f216-44de-bb6e-60e1a1ebb739" + }, + "context": {} + }, { "type": "schemaReference", "definition": { @@ -25723,6 +25746,65 @@ export const miroirFundamentalJzodSchema = { } ] }, + "carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject": { + "type": "union", + "definition": [ + { + "type": "schemaReference", + "definition": { + "relativePath": "carryOnObject" + } + }, + { + "type": "object", + "definition": { + "templateType": { + "type": "union", + "definition": [ + { + "type": "literal", + "definition": "constantObject" + }, + { + "type": "schemaReference", + "definition": { + "relativePath": "carryOnObject" + } + } + ] + }, + "constantObjectValue": { + "type": "union", + "definition": [ + { + "type": "record", + "definition": { + "type": "union", + "definition": [ + { + "type": "any" + }, + { + "type": "schemaReference", + "definition": { + "relativePath": "carryOnObject" + } + } + ] + } + }, + { + "type": "schemaReference", + "definition": { + "relativePath": "carryOnObject" + } + } + ] + } + } + } + ] + }, "carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString": { "type": "union", "definition": [ @@ -25990,6 +26072,13 @@ export const miroirFundamentalJzodSchema = { }, "context": {} }, + { + "type": "schemaReference", + "definition": { + "relativePath": "carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject" + }, + "context": {} + }, { "type": "schemaReference", "definition": { diff --git a/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalType.ts b/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalType.ts index e4af8e39..50e5df64 100644 --- a/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalType.ts +++ b/packages/miroir-core/src/0_interfaces/1_core/preprocessor-generated/miroirFundamentalType.ts @@ -463,6 +463,12 @@ export type Transformer_constantUuid = { templateType: "constantUuid"; constantUuidValue: string; }; +export type Transformer_constantObject = { + templateType: "constantObject"; + constantObjectValue: { + [x: string]: any; + }; +}; export type Transformer_constantString = { templateType: "constantString"; constantStringValue: string; @@ -481,7 +487,7 @@ export type Transformer_parameterReference = { referencePath?: string[] | undefined; }; export type Transformer_contextOrParameterReference = Transformer_contextReference | Transformer_parameterReference; -export type Transformer_InnerReference = Transformer_constantUuid | Transformer_constantString | Transformer_newUuid | Transformer_contextOrParameterReference; +export type Transformer_InnerReference = Transformer_constantUuid | Transformer_constantObject | Transformer_constantString | Transformer_newUuid | Transformer_contextOrParameterReference; export type TransformerForBuild_AbstractForCountAndUnique = { orderBy?: string | undefined; }; @@ -3221,6 +3227,12 @@ export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUui templateType: "constantUuid" | CarryOnObject; constantUuidValue: string | CarryOnObject; }; +export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject = CarryOnObject | { + templateType: "constantObject" | CarryOnObject; + constantObjectValue: { + [x: string]: any | CarryOnObject; + } | CarryOnObject; +}; export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString = CarryOnObject | { templateType: "constantString" | CarryOnObject; constantStringValue: string | CarryOnObject; @@ -3239,7 +3251,7 @@ export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextRefe referencePath?: (((string | CarryOnObject)[] | undefined) | CarryOnObject) | undefined; }; export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference = CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextReference | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_parameterReference | CarryOnObject; -export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference = CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUuid | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_newUuid | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference | CarryOnObject; +export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference = CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUuid | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_newUuid | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference | CarryOnObject; export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild = CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_fullObjectTemplate | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_freeObjectTemplate | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_listMapper | CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_mustacheStringTemplate | CarryOnObject; export type CarryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_mustacheStringTemplate = CarryOnObject | { templateType: "mustacheStringTemplate" | CarryOnObject; @@ -3466,12 +3478,13 @@ export const ______________________________________________templates____________ export const recordOfTransformers: z.ZodType = z.object({transformerType:z.literal("recordOfTransformers"), definition:z.record(z.string(),z.lazy(() =>transformer))}).strict(); export const transformer: z.ZodType = z.union([z.object({transformerType:z.literal("objectTransformer"), attributeName:z.string()}).strict(), z.lazy(() =>recordOfTransformers)]); export const transformer_constantUuid: z.ZodType = z.object({templateType:z.literal("constantUuid"), constantUuidValue:z.string()}).strict(); +export const transformer_constantObject: z.ZodType = z.object({templateType:z.literal("constantObject"), constantObjectValue:z.record(z.string(),z.any())}).strict(); export const transformer_constantString: z.ZodType = z.object({templateType:z.literal("constantString"), constantStringValue:z.string()}).strict(); export const transformer_newUuid: z.ZodType = z.object({templateType:z.literal("newUuid")}).strict(); export const transformer_contextReference: z.ZodType = z.object({templateType:z.literal("contextReference"), referenceName:z.string().optional(), referencePath:z.array(z.string()).optional()}).strict(); export const transformer_parameterReference: z.ZodType = z.object({templateType:z.literal("parameterReference"), referenceName:z.string().optional(), referencePath:z.array(z.string()).optional()}).strict(); export const transformer_contextOrParameterReference: z.ZodType = z.union([z.lazy(() =>transformer_contextReference), z.lazy(() =>transformer_parameterReference)]); -export const transformer_InnerReference: z.ZodType = z.union([z.lazy(() =>transformer_constantUuid), z.lazy(() =>transformer_constantString), z.lazy(() =>transformer_newUuid), z.lazy(() =>transformer_contextOrParameterReference)]); +export const transformer_InnerReference: z.ZodType = z.union([z.lazy(() =>transformer_constantUuid), z.lazy(() =>transformer_constantObject), z.lazy(() =>transformer_constantString), z.lazy(() =>transformer_newUuid), z.lazy(() =>transformer_contextOrParameterReference)]); export const transformerForBuild_AbstractForCountAndUnique: z.ZodType = z.object({orderBy:z.string().optional()}).strict(); export const transformerForBuild_Count: z.ZodType = z.object({orderBy:z.string().optional()}).strict().extend({queryName:z.literal("count"), groupBy:z.string().optional()}).strict(); export const transformerForBuild_fullObjectTemplate: z.ZodType = z.object({orderBy:z.string().optional()}).strict().extend({templateType:z.literal("fullObjectTemplate"), referencedExtractor:z.string(), definition:z.array(z.object({attributeKey:z.lazy(() =>transformer_InnerReference), attributeValue:z.lazy(() =>transformerForBuild)}).strict())}).strict(); @@ -3786,12 +3799,13 @@ export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectByQ export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplate: z.ZodType = z.union([z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectExtractorWrapper), z.object({queryType:z.union([z.literal("wrapperReturningObject"), z.lazy(() =>carryOnObject)]), definition:z.union([z.record(z.string(),z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplate)), z.lazy(() =>carryOnObject)])}).strict(), z.object({queryType:z.union([z.literal("wrapperReturningList"), z.lazy(() =>carryOnObject)]), definition:z.union([z.array(z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplate)), z.lazy(() =>carryOnObject)])}).strict(), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateExtractObjectByDirectReference), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectObjectList), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectObjectByRelation), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectObjectListByRelation), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectObjectListByManyToManyRelation), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateSelectByQueryCombiner), z.object({queryType:z.union([z.literal("literal"), z.lazy(() =>carryOnObject)]), definition:z.union([z.string(), z.lazy(() =>carryOnObject)])}).strict(), z.object({queryType:z.union([z.literal("queryContextReference"), z.lazy(() =>carryOnObject)]), queryReference:z.union([z.string(), z.lazy(() =>carryOnObject)])}).strict(), z.lazy(() =>carryOnObject)]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplateRecord: z.ZodType = z.union([z.record(z.string(),z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_queryTemplate)), z.lazy(() =>carryOnObject)]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUuid: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("constantUuid"), z.lazy(() =>carryOnObject)]), constantUuidValue:z.union([z.string(), z.lazy(() =>carryOnObject)])}).strict()]); +export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("constantObject"), z.lazy(() =>carryOnObject)]), constantObjectValue:z.union([z.record(z.string(),z.union([z.any(), z.lazy(() =>carryOnObject)])), z.lazy(() =>carryOnObject)])}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("constantString"), z.lazy(() =>carryOnObject)]), constantStringValue:z.union([z.string(), z.lazy(() =>carryOnObject)])}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_newUuid: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("newUuid"), z.lazy(() =>carryOnObject)])}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_parameterReference: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("parameterReference"), z.lazy(() =>carryOnObject)]), referenceName:z.union([z.string().optional(), z.lazy(() =>carryOnObject)]).optional(), referencePath:z.union([z.array(z.union([z.string(), z.lazy(() =>carryOnObject)])).optional(), z.lazy(() =>carryOnObject)]).optional()}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextReference: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("contextReference"), z.lazy(() =>carryOnObject)]), referenceName:z.union([z.string().optional(), z.lazy(() =>carryOnObject)]).optional(), referencePath:z.union([z.array(z.union([z.string(), z.lazy(() =>carryOnObject)])).optional(), z.lazy(() =>carryOnObject)]).optional()}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference: z.ZodType = z.union([z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextReference), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_parameterReference), z.lazy(() =>carryOnObject)]); -export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference: z.ZodType = z.union([z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUuid), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_newUuid), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference), z.lazy(() =>carryOnObject)]); +export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference: z.ZodType = z.union([z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantUuid), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantObject), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_constantString), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_newUuid), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_contextOrParameterReference), z.lazy(() =>carryOnObject)]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild: z.ZodType = z.union([z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformer_InnerReference), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_fullObjectTemplate), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_freeObjectTemplate), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_listMapper), z.lazy(() =>carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_mustacheStringTemplate), z.lazy(() =>carryOnObject)]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_mustacheStringTemplate: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({templateType:z.union([z.literal("mustacheStringTemplate"), z.lazy(() =>carryOnObject)]), definition:z.union([z.string(), z.lazy(() =>carryOnObject)])}).strict()]); export const carryOn_fe9b7d99$f216$44de$bb6e$60e1a1ebb739_transformerForBuild_AbstractForCountAndUnique: z.ZodType = z.union([z.lazy(() =>carryOnObject), z.object({orderBy:z.union([z.string().optional(), z.lazy(() =>carryOnObject)]).optional()}).strict()]); diff --git a/packages/miroir-core/src/2_domain/QuerySelectors.ts b/packages/miroir-core/src/2_domain/QuerySelectors.ts index 7be34a3e..5b297fba 100644 --- a/packages/miroir-core/src/2_domain/QuerySelectors.ts +++ b/packages/miroir-core/src/2_domain/QuerySelectors.ts @@ -269,7 +269,7 @@ export const applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemo ? new RegExp((localQuery.filter.value as any).constantStringValue, "i") // TODO: check for correct type : undefined; // log.info( - // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory queryTemplateExtractObjectListByEntity filter", + // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory filter", // JSON.stringify(localQuery.filter) // ); const result:DomainElementInstanceUuidIndexOrFailed = localQuery.filter @@ -281,7 +281,7 @@ export const applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemo (i as any)[1][localQuery.filter?.attributeName??""] ) // log.info( - // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory queryTemplateExtractObjectListByEntity filter", + // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory filter", // JSON.stringify(i[1]), // "matchResult", // matchResult @@ -294,7 +294,7 @@ export const applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemo : selectedInstancesUuidIndex; ; // log.info( - // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory queryTemplateExtractObjectListByEntity result", + // "applyExtractorForSingleObjectListToSelectedInstancesUuidIndexInMemory result", // JSON.stringify(result, undefined, 2) // ); return result; diff --git a/packages/miroir-core/src/2_domain/Templates.ts b/packages/miroir-core/src/2_domain/Templates.ts index 89830239..f477c918 100644 --- a/packages/miroir-core/src/2_domain/Templates.ts +++ b/packages/miroir-core/src/2_domain/Templates.ts @@ -202,6 +202,7 @@ export function resolveQueryTemplate( } } +// ################################################################################################ export function resolveQueryTemplateSelectExtractorWrapper( queryTemplate: QueryTemplateSelectExtractorWrapper, queryParams: Record, @@ -224,16 +225,18 @@ export function resolveExtractorTemplateForRecordOfExtractors( log.info("resolveExtractorTemplateForRecordOfExtractors converting extractorTemplates:", recordOfExtractorTemplate.extractorTemplates); const queries = Object.fromEntries( - Object.entries(recordOfExtractorTemplate.extractorTemplates??{}).map((e: [string, QueryTemplateSelectExtractorWrapper]) => [ - e[0], - resolveQueryTemplateSelectExtractorWrapper(e[1], params, recordOfExtractorTemplate.contextResults), // TODO: generalize to MiroirQuery & check for failure! - ]) + Object.entries(recordOfExtractorTemplate.extractorTemplates ?? {}).map( + (e: [string, QueryTemplateSelectExtractorWrapper]) => [ + e[0], + resolveQueryTemplateSelectExtractorWrapper(e[1], params, recordOfExtractorTemplate.contextResults), // TODO: generalize to MiroirQuery & check for failure! + ] + ) ); log.info("resolveExtractorTemplateForRecordOfExtractors converted extractorTemplates, result:", queries); log.info("resolveExtractorTemplateForRecordOfExtractors converting combinerTemplates:", recordOfExtractorTemplate.combinerTemplates); const combiners = Object.fromEntries( - Object.entries(recordOfExtractorTemplate.combinerTemplates??{}).map((e: [string, QueryTemplate]) => [ + Object.entries(recordOfExtractorTemplate.combinerTemplates ?? {}).map((e: [string, QueryTemplate]) => [ e[0], resolveQueryTemplate(e[1], params, recordOfExtractorTemplate.contextResults), // TODO: generalize to MiroirQuery & check for failure! ]) diff --git a/packages/miroir-core/src/2_domain/Transformers.ts b/packages/miroir-core/src/2_domain/Transformers.ts index a4278941..0f6fac6e 100644 --- a/packages/miroir-core/src/2_domain/Transformers.ts +++ b/packages/miroir-core/src/2_domain/Transformers.ts @@ -330,7 +330,7 @@ export function transformer_InnerReference_resolve ( // ) ) { // checking that given reference does exist - log.warn( + log.error( "transformer_InnerReference_resolve failed, reference not found for step", step, "reference=", @@ -533,16 +533,16 @@ function mustacheStringTemplate_apply( // ? domainElementToPlainObject(contextResults) // : domainElementToPlainObject(queryParams); // TODO: highly inefficient & buggy!! const result = Mustache.render(transformer.definition, {...queryParams, ...contextResults}); - log.info( - "mustacheStringTemplate_apply for", - transformer, - "queryParams", - JSON.stringify(queryParams, null, 2), - "contextResults", - JSON.stringify(contextResults, null, 2), - "result", - result - ); + // log.info( + // "mustacheStringTemplate_apply for", + // transformer, + // "queryParams", + // JSON.stringify(queryParams, null, 2), + // "contextResults", + // JSON.stringify(contextResults, null, 2), + // "result", + // result + // ); return { elementType: "string", elementValue: result }; } @@ -592,16 +592,26 @@ export function transformer_apply( elementValue: subObject.map((e) => e.elementValue), // TODO: clean result instead? (deep!) } } else { + log.error( + "transformer_apply failed converting array", + transformer, + "with params", + queryParams, + "error in", + JSON.stringify(subObject[failureIndex], null, 2) + ); return { elementType: "failure", elementValue: { queryFailure: "ReferenceNotFound", failureOrigin: ["transformer_apply"], queryContext: - "failed to transform object attribute for object " + - objectName + - " transformer" + - transformer[failureIndex], + "failed to transform object attribute for array index " + + failureIndex + + " failure " + + JSON.stringify(subObject[failureIndex]) + + " in transformer " + + JSON.stringify(transformer[failureIndex]), }, }; } @@ -750,6 +760,11 @@ export function transformer_apply( return { elementType: "object", elementValue: result}; break; } + case "constantObject": { + log.info("transformer_apply constantObject", transformer.constantObjectValue); + return { elementType: "object", elementValue: transformer.constantObjectValue }; + break; + } case "newUuid": case "constantString": case "constantUuid": diff --git a/packages/miroir-core/src/3_controllers/DomainController.ts b/packages/miroir-core/src/3_controllers/DomainController.ts index a2b8fd5a..5d4b858c 100644 --- a/packages/miroir-core/src/3_controllers/DomainController.ts +++ b/packages/miroir-core/src/3_controllers/DomainController.ts @@ -758,7 +758,7 @@ export class DomainController implements DomainControllerInterface { switch (currentAction.compositeActionType) { case 'action': { const resolvedActionTemplate: InstanceAction = transformer_apply( - "runtime", + "build", "NO NAME", currentAction.action as TransformerForBuild, actionParamsAndTemplates, diff --git a/packages/miroir-core/src/assets/miroir_data/5e81e1b9-38be-487c-b3e5-53796c57fccf/a97756cf-dd93-42b9-a021-91a629b187b9.json b/packages/miroir-core/src/assets/miroir_data/5e81e1b9-38be-487c-b3e5-53796c57fccf/a97756cf-dd93-42b9-a021-91a629b187b9.json index 0e981762..56591604 100644 --- a/packages/miroir-core/src/assets/miroir_data/5e81e1b9-38be-487c-b3e5-53796c57fccf/a97756cf-dd93-42b9-a021-91a629b187b9.json +++ b/packages/miroir-core/src/assets/miroir_data/5e81e1b9-38be-487c-b3e5-53796c57fccf/a97756cf-dd93-42b9-a021-91a629b187b9.json @@ -62,6 +62,19 @@ } } }, + "transformer_constantObject":{ + "type": "object", + "definition": { + "templateType": { + "type": "literal", + "definition": "constantObject" + }, + "constantObjectValue": { + "type": "record", + "definition": { "type": "any" } + } + } + }, "transformer_constantString":{ "type": "object", "definition": { @@ -151,6 +164,12 @@ "relativePath": "transformer_constantUuid" } }, + { + "type": "schemaReference", + "definition": { + "relativePath": "transformer_constantObject" + } + }, { "type": "schemaReference", "definition": { diff --git a/packages/miroir-core/src/tests/2_domain/queryTemplates.unit.test.ts b/packages/miroir-core/src/tests/2_domain/queryTemplates.unit.test.ts index c157a33b..982315c4 100644 --- a/packages/miroir-core/src/tests/2_domain/queryTemplates.unit.test.ts +++ b/packages/miroir-core/src/tests/2_domain/queryTemplates.unit.test.ts @@ -12,7 +12,21 @@ import { TransformerForRuntime_InnerReference, ExtractorTemplateForRecordOfExtractors, } from "../../0_interfaces/1_core/preprocessor-generated/miroirFundamentalType.js"; -import { book1, book2, book3, book4, book5, book6, Country1, Country2, Country3, Country4, ignorePostgresExtraAttributesOnList, ignorePostgresExtraAttributesOnRecord, resolveExtractorTemplateForRecordOfExtractors } from '../../index.js'; +import { + book1, + book2, + book3, + book4, + book5, + book6, + Country1, + Country2, + Country3, + Country4, + ignorePostgresExtraAttributesOnList, + ignorePostgresExtraAttributesOnRecord, + resolveExtractorTemplateForRecordOfExtractors, +} from "../../index.js"; import { object } from 'zod'; // const env:any = (import.meta as any).env // console.log("@@@@@@@@@@@@@@@@@@ env", env); @@ -49,6 +63,21 @@ describe("queryTemplates.unit.test", () => { referenceName: "instanceUuid", }, }, + fountain: { + queryType: "selectObjectByDirectReference", + parentName: "Fountain", + parentUuid: { + templateType: "mustacheStringTemplate", + definition: "{{newEntity.uuid}}", + }, + instanceUuid: { + templateType: "constantObject", + constantObjectValue: { + templateType: "parameterReference", + referenceName: "instanceUuid", + } + }, + }, }, combinerTemplates: { publisher: { @@ -109,27 +138,6 @@ describe("queryTemplates.unit.test", () => { }, }; - // const preTestResult: {[k: string]: {[l:string]: any}} = transformer_apply( - // const preTestResult: {[k: string]: {[l:string]: any}} = transformer_apply( - // "runtime", - // "ROOT", - // // uniqueRuntimeTemplate, - // uniqueRuntimeTemplate as any, - // { - // newUuid: newUuid , - // }, // queryParams - // { - // countries: [ - // Country1 as EntityInstance, - // Country2 as EntityInstance, - // Country3 as EntityInstance, - // Country4 as EntityInstance, - // ], - // } // context - // ).elementValue; - - // console.log("################################ convert queryTemplate to query with resolveExtractorTemplateForRecordOfExtractors preTestResult", preTestResult) - // const testResult = ignorePostgresExtraAttributesOnList(preTestResult as any,["uuid"]); // uuid value is ignored const testResult = resolveExtractorTemplateForRecordOfExtractors(uniqueRuntimeTemplate); // uuid value is ignored console.log("################################ converted queryTemplate to query with resolveExtractorTemplateForRecordOfExtractors", JSON.stringify(testResult, null, 2)) expect(testResult).toEqual( diff --git a/packages/miroir-standalone-app/src/miroir-fwk/4_view/Importer.tsx b/packages/miroir-standalone-app/src/miroir-fwk/4_view/Importer.tsx index 2649c599..09e526c5 100644 --- a/packages/miroir-standalone-app/src/miroir-fwk/4_view/Importer.tsx +++ b/packages/miroir-standalone-app/src/miroir-fwk/4_view/Importer.tsx @@ -267,6 +267,10 @@ export const Importer:FC = (props:ImporterCoreProps) => { templateType: "parameterReference", referenceName: "newEntityListReportUuid", }, + application: { + templateType: "parameterReference", + referenceName: "currentApplicationUuid", + }, parentName: "Report", parentUuid: { templateType: "mustacheStringTemplate", @@ -283,19 +287,16 @@ export const Importer:FC = (props:ImporterCoreProps) => { }, type: "list", definition: { - extractorTemplatess: { + extractors: { instanceList: { - queryType: "queryTemplateExtractObjectListByEntity", + queryType: "queryExtractObjectListByEntity", parentName: { templateType: "parameterReference", referenceName: "newEntityName", }, parentUuid: { - templateType: "constantUuid", - constantUuidValue: { - templateType: "mustacheStringTemplate", - definition: "{{newEntity.uuid}}", - }, + templateType: "mustacheStringTemplate", + definition: "{{newEntity.uuid}}", }, }, }, @@ -322,6 +323,10 @@ export const Importer:FC = (props:ImporterCoreProps) => { templateType: "parameterReference", referenceName: "newEntityDetailsReportUuid", }, + application: { + templateType: "parameterReference", + referenceName: "currentApplicationUuid", + }, parentName: { templateType: "mustacheStringTemplate", definition: "{{entityReport.name}}", @@ -348,15 +353,15 @@ export const Importer:FC = (props:ImporterCoreProps) => { referenceName: "newEntityName", }, parentUuid: { - templateType: "constantUuid", - constantUuidValue: { - templateType: "mustacheStringTemplate", - definition: "{{newEntity.uuid}}", - }, + templateType: "mustacheStringTemplate", + definition: "{{newEntity.uuid}}", }, instanceUuid: { - queryTemplateType: "queryParameterReference", - referenceName: "instanceUuid", + templateType: "constantObject", + constantObjectValue: { + templateType: "parameterReference", + referenceName: "instanceUuid", + } }, }, }, @@ -691,7 +696,7 @@ export const Importer:FC = (props:ImporterCoreProps) => { log.info("createEntity found miroirMenuInstances", JSON.stringify(miroirMenuInstances)); const oldMenu: Menu | undefined = (Object.values( - miroirMenuInstances.returnedDomainElement.elementValue["menus"].elementValue + miroirMenuInstances.returnedDomainElement.elementValue["menus"] ) as Menu[]).find((e: Menu) => e.name == actionEffectiveParamsCreateEntity.currentApplicationName + "Menu"); if (!oldMenu) { @@ -902,7 +907,7 @@ export const Importer:FC = (props:ImporterCoreProps) => { }, type: "list", definition: { - extractorTemplates: { + extractors: { listReportSectionElements: { queryType: "queryTemplateExtractObjectListByEntity", parentName: { @@ -910,11 +915,8 @@ export const Importer:FC = (props:ImporterCoreProps) => { referenceName: "newEntityName", }, parentUuid: { - templateType: "constantUuid", - constantUuidValue: { - templateType: "mustacheStringTemplate", - definition: "{{newEntity.uuid}}", - }, + templateType: "mustacheStringTemplate", + definition: "{{newEntity.uuid}}", }, }, }, @@ -1588,7 +1590,7 @@ export const Importer:FC = (props:ImporterCoreProps) => { interpolation: "runtime", referencedExtractor: "uniqueSplittedEntityInstances", elementTransformer: { - templateType: "fullObjectTemplate", + templateType: "fullObjectTemplate", // TODO: fullObjectTemplate is not needed, all attributeKeys are constantString, objectTemplate should be enough interpolation: "runtime", referencedExtractor: "municipality", definition: [ @@ -1617,8 +1619,8 @@ export const Importer:FC = (props:ImporterCoreProps) => { { attributeKey: { interpolation: "runtime", - templateType: "constantUuid", - constantUuidValue: "name" + templateType: "constantString", + constantStringValue: "name" }, attributeValue: { interpolation: "runtime", @@ -1958,6 +1960,9 @@ export const Importer:FC = (props:ImporterCoreProps) => {

: null } found row A:{JSON.stringify(fileData?fileData[0]:'')} +

+ importer props: application={JSON.stringify(props.currentApplicationUuid)} deployment={JSON.stringify(props.currentDeploymentUuid)} filename={JSON.stringify(props.filename)} +

create Entity from Excel File: