From 68115ee6b544c5055e55f91bf4c4618f1b7c1c2b Mon Sep 17 00:00:00 2001 From: Romuald Lemesle Date: Fri, 2 Aug 2024 09:03:12 +0200 Subject: [PATCH] [backend/frontend] Use Mixin --- .../io/openbas/rest/mapper/MapperApi.java | 22 +++----- .../mapper/export/MapperExportMixins.java | 36 +++++++++++++ .../mapper/form/ImportMapperAddInput.java | 6 +-- .../mapper/form/ImportMapperUpdateInput.java | 6 +-- .../mapper/form/InjectImporterAddInput.java | 2 +- .../form/InjectImporterUpdateInput.java | 2 +- .../io/openbas/service/MapperService.java | 53 +++++++++---------- .../service/MapperServiceExportTest.java | 47 ++++++++++++++++ .../io/openbas/service/MapperServiceTest.java | 2 +- openbas-front/src/actions/mapper/mapper.ts | 4 +- .../settings/data_ingestion/XlsMappers.tsx | 4 +- .../data_ingestion/xls_mapper/MapperForm.tsx | 28 +++++----- .../xls_mapper/RulesContractContent.tsx | 40 +++++++------- .../xls_mapper/XlsMapperUpdate.tsx | 10 ++-- openbas-front/src/utils/api-types.d.ts | 21 ++++---- .../openbas/database/model/ImportMapper.java | 2 +- .../database/model/InjectImporter.java | 2 +- 17 files changed, 178 insertions(+), 109 deletions(-) create mode 100644 openbas-api/src/main/java/io/openbas/rest/mapper/export/MapperExportMixins.java create mode 100644 openbas-api/src/test/java/io/openbas/service/MapperServiceExportTest.java diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/MapperApi.java b/openbas-api/src/main/java/io/openbas/rest/mapper/MapperApi.java index 50839e1758..d3dc42a46b 100644 --- a/openbas-api/src/main/java/io/openbas/rest/mapper/MapperApi.java +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/MapperApi.java @@ -23,35 +23,24 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import lombok.Data; import lombok.RequiredArgsConstructor; import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; -import org.springframework.core.io.ByteArrayResource; -import org.springframework.core.io.InputStreamResource; -import org.springframework.core.io.Resource; import org.springframework.data.domain.Page; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.reactive.function.UnsupportedMediaTypeException; -import javax.print.attribute.standard.Media; -import java.io.*; +import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; import java.text.MessageFormat; import java.time.Instant; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Date; import java.util.List; import java.util.UUID; -import java.util.zip.ZipOutputStream; import static io.openbas.database.model.User.ROLE_ADMIN; import static io.openbas.database.model.User.ROLE_USER; @@ -95,10 +84,11 @@ public ImportMapper createImportMapper(@RequestBody @Valid final ImportMapperAdd @Secured(ROLE_ADMIN) @PostMapping(value="/api/mappers/export") - public void exportMappers(@RequestBody @Valid final ExportMapperInput exportMapperInput, - HttpServletResponse response) { - List mappers = mapperService.exportMappers(exportMapperInput.getIdsToExport()); + public void exportMappers( + @RequestBody @Valid final ExportMapperInput exportMapperInput, + HttpServletResponse response) { try { + String jsonMappers = mapperService.exportMappers(exportMapperInput.getIdsToExport()); String rightNow = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now()); String filename = MessageFormat.format("mappers_{0}.json", rightNow); @@ -106,7 +96,7 @@ public void exportMappers(@RequestBody @Valid final ExportMapperInput exportMapp response.addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); response.setStatus(HttpServletResponse.SC_OK); - response.getOutputStream().write(mapper.writeValueAsString(mappers).getBytes(StandardCharsets.UTF_8)); + response.getOutputStream().write(jsonMappers.getBytes(StandardCharsets.UTF_8)); response.getOutputStream().flush(); response.getOutputStream().close(); } catch (IOException e) { diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/export/MapperExportMixins.java b/openbas-api/src/main/java/io/openbas/rest/mapper/export/MapperExportMixins.java new file mode 100644 index 0000000000..605824d33f --- /dev/null +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/export/MapperExportMixins.java @@ -0,0 +1,36 @@ +package io.openbas.rest.mapper.export; + +import com.fasterxml.jackson.annotation.JsonIncludeProperties; + +public class MapperExportMixins { + + private MapperExportMixins() { + + } + + @JsonIncludeProperties(value = { + "import_mapper_name", + "import_mapper_inject_type_column", + "import_mapper_inject_importers", + }) + public static class ImportMapper { + } + + @JsonIncludeProperties(value = { + "inject_importer_type_value", + "inject_importer_injector_contract", + "inject_importer_rule_attributes", + }) + public static class InjectImporter { + } + + @JsonIncludeProperties(value = { + "rule_attribute_columns", + "rule_attribute_name", + "rule_attribute_default_value", + "rule_attribute_additional_config", + }) + public static class RuleAttribute { + } + +} diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperAddInput.java b/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperAddInput.java index 72c9b9e560..4bff96888e 100644 --- a/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperAddInput.java +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperAddInput.java @@ -15,15 +15,15 @@ public class ImportMapperAddInput { @NotBlank(message = MANDATORY_MESSAGE) - @JsonProperty("mapper_name") + @JsonProperty("import_mapper_name") private String name; @Pattern(regexp="^[A-Z]{1,2}$") - @JsonProperty("mapper_inject_type_column") + @JsonProperty("import_mapper_inject_type_column") @NotBlank private String injectTypeColumn; - @JsonProperty("mapper_inject_importers") + @JsonProperty("import_mapper_inject_importers") @NotNull private List importers = new ArrayList<>(); diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperUpdateInput.java b/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperUpdateInput.java index 1a7dfe4d37..5d7461a0b9 100644 --- a/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperUpdateInput.java +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/form/ImportMapperUpdateInput.java @@ -15,15 +15,15 @@ public class ImportMapperUpdateInput { @NotBlank(message = MANDATORY_MESSAGE) - @JsonProperty("mapper_name") + @JsonProperty("import_mapper_name") private String name; @Pattern(regexp="^[A-Z]{1,2}$") - @JsonProperty("mapper_inject_type_column") + @JsonProperty("import_mapper_inject_type_column") @NotBlank private String injectTypeColumn; - @JsonProperty("mapper_inject_importers") + @JsonProperty("import_mapper_inject_importers") @NotNull private List importers = new ArrayList<>(); } diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterAddInput.java b/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterAddInput.java index 4adb2814be..496acfba33 100644 --- a/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterAddInput.java +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterAddInput.java @@ -17,7 +17,7 @@ public class InjectImporterAddInput { private String injectTypeValue; @NotBlank(message = MANDATORY_MESSAGE) - @JsonProperty("inject_importer_injector_contract_id") + @JsonProperty("inject_importer_injector_contract") private String injectorContractId; @JsonProperty("inject_importer_rule_attributes") diff --git a/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterUpdateInput.java b/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterUpdateInput.java index e5871037ac..1c7301e078 100644 --- a/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterUpdateInput.java +++ b/openbas-api/src/main/java/io/openbas/rest/mapper/form/InjectImporterUpdateInput.java @@ -20,7 +20,7 @@ public class InjectImporterUpdateInput { private String injectTypeValue; @NotBlank(message = MANDATORY_MESSAGE) - @JsonProperty("inject_importer_injector_contract_id") + @JsonProperty("inject_importer_injector_contract") private String injectorContractId; @JsonProperty("inject_importer_rule_attributes") diff --git a/openbas-api/src/main/java/io/openbas/service/MapperService.java b/openbas-api/src/main/java/io/openbas/service/MapperService.java index 8d533ddc1c..8e31f2291c 100644 --- a/openbas-api/src/main/java/io/openbas/service/MapperService.java +++ b/openbas-api/src/main/java/io/openbas/service/MapperService.java @@ -1,14 +1,19 @@ package io.openbas.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import io.openbas.database.model.ImportMapper; import io.openbas.database.model.InjectImporter; import io.openbas.database.model.InjectorContract; import io.openbas.database.model.RuleAttribute; import io.openbas.database.repository.ImportMapperRepository; import io.openbas.database.repository.InjectorContractRepository; +import io.openbas.helper.ObjectMapperHelper; import io.openbas.rest.exception.ElementNotFoundException; +import io.openbas.rest.mapper.export.MapperExportMixins; import io.openbas.rest.mapper.form.*; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import java.time.Instant; @@ -18,9 +23,10 @@ import java.util.UUID; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; import java.util.stream.StreamSupport; +import static java.util.stream.StreamSupport.stream; + @RequiredArgsConstructor @Service public class MapperService { @@ -102,7 +108,7 @@ public ImportMapper updateImportMapper(String mapperId, ImportMapperUpdateInput * @return The map of injector contracts by ids */ private Map getMapOfInjectorContracts(List ids) { - return StreamSupport.stream(injectorContractRepository.findAllById(ids).spliterator(), false) + return stream(injectorContractRepository.findAllById(ids).spliterator(), false) .collect(Collectors.toMap(InjectorContract::getId, Function.identity())); } @@ -177,34 +183,25 @@ private void updateInjectImporter(List injectImporter }); } - public List exportMappers(List idsToExport) { - List mappersList = StreamSupport.stream(importMapperRepository.findAllById(idsToExport.stream().map(UUID::fromString).toList()).spliterator(), false).toList(); - - return mappersList.stream().map(importMapper -> { - ImportMapperAddInput importMapperAddInput = new ImportMapperAddInput(); - importMapperAddInput.setName(importMapper.getName()); - importMapperAddInput.setInjectTypeColumn(importMapper.getInjectTypeColumn()); - importMapperAddInput.setImporters(importMapper.getInjectImporters().stream().map( - injectImporter -> { - InjectImporterAddInput injectImporterAddInput = new InjectImporterAddInput(); - injectImporterAddInput.setInjectTypeValue(injectImporter.getImportTypeValue()); - injectImporterAddInput.setInjectorContractId(injectImporter.getInjectorContract().getId()); - injectImporterAddInput.setRuleAttributes(injectImporter.getRuleAttributes().stream().map(ruleAttribute -> { - RuleAttributeAddInput ruleAttributeAddInput = new RuleAttributeAddInput(); - ruleAttributeAddInput.setColumns(ruleAttribute.getColumns()); - ruleAttributeAddInput.setName(ruleAttribute.getName()); - ruleAttributeAddInput.setDefaultValue(ruleAttribute.getDefaultValue()); - ruleAttributeAddInput.setAdditionalConfig(ruleAttribute.getAdditionalConfig()); - return ruleAttributeAddInput; - }).toList()); - return injectImporterAddInput; - } - ).toList()); - return importMapperAddInput; - }).toList(); + public String exportMappers(@NotNull final List idsToExport) throws JsonProcessingException { + ObjectMapper objectMapper = ObjectMapperHelper.openBASJsonMapper(); + List mappersList = StreamSupport.stream( + importMapperRepository.findAllById(idsToExport.stream().map(UUID::fromString).toList()).spliterator(), false + ).toList(); + + objectMapper.addMixIn(ImportMapper.class, MapperExportMixins.ImportMapper.class); + objectMapper.addMixIn(InjectImporter.class, MapperExportMixins.InjectImporter.class); + objectMapper.addMixIn(RuleAttribute.class, MapperExportMixins.RuleAttribute.class); + + return objectMapper.writeValueAsString(mappersList); } public void importMappers(List mappers) { - importMapperRepository.saveAll(mappers.stream().map(this::createImportMapper).toList()); + importMapperRepository.saveAll( + mappers.stream() + .map(this::createImportMapper) + .peek((m) -> m.setName(m.getName() + " (Import)")) + .toList() + ); } } diff --git a/openbas-api/src/test/java/io/openbas/service/MapperServiceExportTest.java b/openbas-api/src/test/java/io/openbas/service/MapperServiceExportTest.java new file mode 100644 index 0000000000..e130a5823e --- /dev/null +++ b/openbas-api/src/test/java/io/openbas/service/MapperServiceExportTest.java @@ -0,0 +1,47 @@ +package io.openbas.service; + +import io.openbas.IntegrationTest; +import io.openbas.database.model.ImportMapper; +import io.openbas.database.repository.ImportMapperRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class MapperServiceExportTest extends IntegrationTest { + + @Autowired + private ImportMapperRepository importMapperRepository; + + @Autowired + private MapperService mapperService; + + @DisplayName("Test exporting a mapper") + @Test + void exportMapper() throws Exception { + // -- PREPARE -- + ImportMapper mapper = new ImportMapper(); + mapper.setName("Test Mapper"); + mapper.setInjectTypeColumn("injectType"); + mapper.setInjectImporters(new ArrayList<>()); + ImportMapper mapperSaved = this.importMapperRepository.save(mapper); + + // -- EXECUTE -- + String json = this.mapperService.exportMappers(List.of(mapperSaved.getId())); + + // -- ASSERT -- + assertEquals("[{" + + "\"import_mapper_name\":\"Test Mapper\"," + + "\"import_mapper_inject_type_column\":\"injectType\"," + + "\"import_mapper_inject_importers\":[]" + + "}]", json); + + // -- CLEAN -- + this.importMapperRepository.delete(mapperSaved); + } + +} diff --git a/openbas-api/src/test/java/io/openbas/service/MapperServiceTest.java b/openbas-api/src/test/java/io/openbas/service/MapperServiceTest.java index 696b909e40..ff1bde0929 100644 --- a/openbas-api/src/test/java/io/openbas/service/MapperServiceTest.java +++ b/openbas-api/src/test/java/io/openbas/service/MapperServiceTest.java @@ -189,7 +189,7 @@ void updateSpecificMapperWithUpdatedElements() throws Exception { when(importMapperRepository.findById(any())).thenReturn(Optional.of(importMapper)); when(importMapperRepository.save(any())).thenReturn(importMapper); when(injectorContractRepository.findAllById(any())).thenReturn(importMapper.getInjectImporters().stream().map(InjectImporter::getInjectorContract).toList()); - // -- EXECUTE -- + // -- EXECUTE -- ImportMapper response = mapperService.updateImportMapper(importMapper.getId(), importMapperInput); diff --git a/openbas-front/src/actions/mapper/mapper.ts b/openbas-front/src/actions/mapper/mapper.ts index 42a56cba59..50217270c8 100644 --- a/openbas-front/src/actions/mapper/mapper.ts +++ b/openbas-front/src/actions/mapper/mapper.ts @@ -4,6 +4,6 @@ export type InjectImporterStore = Omit & { - inject_importers: InjectImporterStore[]; +export type ImportMapperStore = Omit & { + import_mapper_inject_importers: InjectImporterStore[]; }; diff --git a/openbas-front/src/admin/components/settings/data_ingestion/XlsMappers.tsx b/openbas-front/src/admin/components/settings/data_ingestion/XlsMappers.tsx index fe2f2629f9..2863061b38 100644 --- a/openbas-front/src/admin/components/settings/data_ingestion/XlsMappers.tsx +++ b/openbas-front/src/admin/components/settings/data_ingestion/XlsMappers.tsx @@ -43,7 +43,7 @@ const useStyles = makeStyles(() => ({ })); const inlineStyles: Record = { - mapper_name: { + import_mapper_name: { width: '30%', cursor: 'default', }, @@ -57,7 +57,7 @@ const XlsMappers = () => { // Headers const headers = [ { - field: 'mapper_name', + field: 'import_mapper_name', label: 'Name', isSortable: true, value: (mapper: RawPaginationImportMapper) => mapper.import_mapper_name, diff --git a/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/MapperForm.tsx b/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/MapperForm.tsx index efcdf9d11f..2a2c82b1b3 100644 --- a/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/MapperForm.tsx +++ b/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/MapperForm.tsx @@ -34,9 +34,9 @@ const MapperForm: React.FC = ({ onSubmit, editing, initialValues = { - mapper_name: '', - mapper_inject_type_column: '', - mapper_inject_importers: [], + import_mapper_name: '', + import_mapper_inject_type_column: '', + import_mapper_inject_importers: [], }, }) => { // Standard hooks @@ -52,7 +52,7 @@ const MapperForm: React.FC = ({ const importerZodObject = z.object({ inject_importer_type_value: z.string().min(1, { message: t('Should not be empty') }), - inject_importer_injector_contract_id: z.string().min(1, { message: t('Should not be empty') }), + inject_importer_injector_contract: z.string().min(1, { message: t('Should not be empty') }), inject_importer_rule_attributes: z.array(ruleAttributeZodObject).optional(), }); @@ -60,10 +60,10 @@ const MapperForm: React.FC = ({ mode: 'onTouched', resolver: zodResolver( zodImplement().with({ - mapper_name: z.string().min(1, { message: t('Should not be empty') }), - mapper_inject_importers: z.array(importerZodObject) + import_mapper_name: z.string().min(1, { message: t('Should not be empty') }), + import_mapper_inject_importers: z.array(importerZodObject) .min(1, { message: t('At least one inject type is required') }), - mapper_inject_type_column: z.string() + import_mapper_inject_type_column: z.string() .min(1, { message: t('Should not be empty') }), }), ), @@ -74,7 +74,7 @@ const MapperForm: React.FC = ({ const { fields, append, remove } = useFieldArray({ control, - name: 'mapper_inject_importers', + name: 'import_mapper_inject_importers', }); const [openTest, setOpenTest] = useState(false); @@ -87,15 +87,15 @@ const MapperForm: React.FC = ({ fullWidth label={t('Mapper name')} style={{ marginTop: 10 }} - error={!!methods.formState.errors.mapper_name} - helperText={methods.formState.errors.mapper_name?.message} - inputProps={methods.register('mapper_name')} + error={!!methods.formState.errors.import_mapper_name} + helperText={methods.formState.errors.import_mapper_name?.message} + inputProps={methods.register('import_mapper_name')} InputLabelProps={{ required: true }} />
( = ({ color="secondary" aria-label="Add" onClick={() => { - append({ inject_importer_type_value: '', inject_importer_injector_contract_id: '', inject_importer_rule_attributes: [] }); + append({ inject_importer_type_value: '', inject_importer_injector_contract: '', inject_importer_rule_attributes: [] }); }} size="large" >
- {methods.formState.errors.mapper_inject_importers?.message} + {methods.formState.errors.import_mapper_inject_importers?.message}
diff --git a/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/RulesContractContent.tsx b/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/RulesContractContent.tsx index 527e85f9ed..b13e422898 100644 --- a/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/RulesContractContent.tsx +++ b/openbas-front/src/admin/components/settings/data_ingestion/xls_mapper/RulesContractContent.tsx @@ -51,7 +51,7 @@ const useStyles = makeStyles(() => ({ })); interface Props { - field: FieldArrayWithId; + field: FieldArrayWithId; methods: UseFormReturn; index: number; remove: UseFieldArrayRemove; @@ -72,7 +72,7 @@ const RulesContractContent: React.FC = ({ const { fields: rulesFields, remove: rulesRemove, append: rulesAppend } = useFieldArray({ control, - name: `mapper_inject_importers.${index}.inject_importer_rule_attributes`, + name: `import_mapper_inject_importers.${index}.inject_importer_rule_attributes`, }); const [contractFields, setContractFields] = useState([]); @@ -124,8 +124,8 @@ const RulesContractContent: React.FC = ({ }; useEffect(() => { - if (methods.getValues(`mapper_inject_importers.${index}.inject_importer_injector_contract_id`)) { - directFetchInjectorContract(methods.getValues(`mapper_inject_importers.${index}.inject_importer_injector_contract_id`)).then((result: { + if (methods.getValues(`import_mapper_inject_importers.${index}.inject_importer_injector_contract`)) { + directFetchInjectorContract(methods.getValues(`import_mapper_inject_importers.${index}.inject_importer_injector_contract`)).then((result: { data: InjectorContractConverted }) => { const injectorContract = result.data; @@ -138,7 +138,7 @@ const RulesContractContent: React.FC = ({ }, []); const onChangeInjectorContractId = () => { - directFetchInjectorContract(methods.getValues(`mapper_inject_importers.${index}.inject_importer_injector_contract_id`)).then((result: { data: InjectorContractConverted }) => { + directFetchInjectorContract(methods.getValues(`import_mapper_inject_importers.${index}.inject_importer_injector_contract`)).then((result: { data: InjectorContractConverted }) => { const injectorContract = result.data; setInjectorContractLabel(tPick(injectorContract.injector_contract_labels)); const tmp = injectorContract?.convertedContent?.fields @@ -175,7 +175,7 @@ const RulesContractContent: React.FC = ({ variant="outlined" style={{ width: '100%', marginBottom: '10px' }} className={classNames({ - [classes.red]: !!errors.mapper_inject_importers?.[index], + [classes.red]: !!errors.import_mapper_inject_importers?.[index], })} > = ({ fullWidth label={t('Matching type in the xls')} style={{ marginTop: 10 }} - inputProps={methods.register(`mapper_inject_importers.${index}.inject_importer_type_value` as const)} + inputProps={methods.register(`import_mapper_inject_importers.${index}.inject_importer_type_value` as const)} InputLabelProps={{ required: true }} - error={!!methods.formState.errors.mapper_inject_importers?.[index]?.inject_importer_type_value} - helperText={methods.formState.errors.mapper_inject_importers?.[index]?.inject_importer_type_value?.message} + error={!!methods.formState.errors.import_mapper_inject_importers?.[index]?.inject_importer_type_value} + helperText={methods.formState.errors.import_mapper_inject_importers?.[index]?.inject_importer_type_value?.message} /> = ({ ( = ({
{t(ruleField.rule_attribute_name[0].toUpperCase() + ruleField.rule_attribute_name.slice(1))} {isMandatoryField(ruleField.rule_attribute_name) @@ -247,7 +247,7 @@ const RulesContractContent: React.FC = ({ ( = ({ ? ( ) : ( ) @@ -297,7 +297,7 @@ const RulesContractContent: React.FC = ({ {currentRuleIndex === rulesFields.findIndex((r) => r.rule_attribute_name === 'trigger_time') &&
@@ -305,7 +305,7 @@ const RulesContractContent: React.FC = ({ label={t('Time pattern')} fullWidth style={{ marginTop: 10 }} - inputProps={methods.register(`mapper_inject_importers.${index}.inject_importer_rule_attributes.${currentRuleIndex}.rule_attribute_additional_config.timePattern`)} + inputProps={methods.register(`import_mapper_inject_importers.${index}.inject_importer_rule_attributes.${currentRuleIndex}.rule_attribute_additional_config.timePattern`)} /> handleClose, }) => { const initialValues = { - mapper_name: xlsMapper.import_mapper_name ?? '', - mapper_inject_type_column: xlsMapper.import_mapper_inject_type_column ?? '', - mapper_inject_importers: xlsMapper.inject_importers?.map((i) => ({ - inject_importer_injector_contract_id: i.inject_importer_injector_contract, + import_mapper_name: xlsMapper.import_mapper_name ?? '', + import_mapper_inject_type_column: xlsMapper.import_mapper_inject_type_column ?? '', + import_mapper_inject_importers: xlsMapper.import_mapper_inject_importers?.map((i) => ({ + inject_importer_injector_contract: i.inject_importer_injector_contract, inject_importer_type_value: i.inject_importer_type_value, - inject_importer_rule_attributes: i.rule_attributes?.map((r) => ({ + inject_importer_rule_attributes: i.inject_importer_rule_attributes?.map((r) => ({ rule_attribute_name: r.rule_attribute_name, rule_attribute_columns: r.rule_attribute_columns, rule_attribute_default_value: r.rule_attribute_default_value, diff --git a/openbas-front/src/utils/api-types.d.ts b/openbas-front/src/utils/api-types.d.ts index bb25369e47..d4b167759a 100644 --- a/openbas-front/src/utils/api-types.d.ts +++ b/openbas-front/src/utils/api-types.d.ts @@ -1004,27 +1004,27 @@ export interface ImportMapper { /** @format date-time */ import_mapper_created_at?: string; import_mapper_id: string; + import_mapper_inject_importers?: InjectImporter[]; import_mapper_inject_type_column: string; import_mapper_name: string; /** @format date-time */ import_mapper_updated_at?: string; - inject_importers?: InjectImporter[]; listened?: boolean; updateAttributes?: object; } export interface ImportMapperAddInput { - mapper_inject_importers: InjectImporterAddInput[]; + import_mapper_inject_importers: InjectImporterAddInput[]; /** @pattern ^[A-Z]{1,2}$ */ - mapper_inject_type_column: string; - mapper_name: string; + import_mapper_inject_type_column: string; + import_mapper_name: string; } export interface ImportMapperUpdateInput { - mapper_inject_importers: InjectImporterUpdateInput[]; + import_mapper_inject_importers: InjectImporterUpdateInput[]; /** @pattern ^[A-Z]{1,2}$ */ - mapper_inject_type_column: string; - mapper_name: string; + import_mapper_inject_type_column: string; + import_mapper_name: string; } export interface ImportMessage { @@ -1192,23 +1192,23 @@ export interface InjectImporter { inject_importer_created_at?: string; inject_importer_id: string; inject_importer_injector_contract: InjectorContract; + inject_importer_rule_attributes?: RuleAttribute[]; inject_importer_type_value: string; /** @format date-time */ inject_importer_updated_at?: string; listened?: boolean; - rule_attributes?: RuleAttribute[]; updateAttributes?: object; } export interface InjectImporterAddInput { - inject_importer_injector_contract_id: string; + inject_importer_injector_contract: string; inject_importer_rule_attributes?: RuleAttributeAddInput[]; inject_importer_type_value: string; } export interface InjectImporterUpdateInput { inject_importer_id?: string; - inject_importer_injector_contract_id: string; + inject_importer_injector_contract: string; inject_importer_rule_attributes?: RuleAttributeUpdateInput[]; inject_importer_type_value: string; } @@ -1249,7 +1249,6 @@ export interface InjectOutput { /** @uniqueItems true */ inject_tags?: string[]; inject_teams?: string[]; - inject_testable?: boolean; inject_title?: string; inject_type?: string; } diff --git a/openbas-model/src/main/java/io/openbas/database/model/ImportMapper.java b/openbas-model/src/main/java/io/openbas/database/model/ImportMapper.java index 03b98f9cee..e8e77c4b65 100644 --- a/openbas-model/src/main/java/io/openbas/database/model/ImportMapper.java +++ b/openbas-model/src/main/java/io/openbas/database/model/ImportMapper.java @@ -42,7 +42,7 @@ public class ImportMapper implements Base { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name = "importer_mapper_id", nullable = false) - @JsonProperty("inject_importers") + @JsonProperty("import_mapper_inject_importers") private List injectImporters = new ArrayList<>(); @CreationTimestamp diff --git a/openbas-model/src/main/java/io/openbas/database/model/InjectImporter.java b/openbas-model/src/main/java/io/openbas/database/model/InjectImporter.java index 610ffab944..1f9d3b2e02 100644 --- a/openbas-model/src/main/java/io/openbas/database/model/InjectImporter.java +++ b/openbas-model/src/main/java/io/openbas/database/model/InjectImporter.java @@ -46,7 +46,7 @@ public class InjectImporter implements Base { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name = "attribute_inject_importer_id", nullable = false) - @JsonProperty("rule_attributes") + @JsonProperty("inject_importer_rule_attributes") private List ruleAttributes = new ArrayList<>(); @CreationTimestamp