@Override
    public VoidOutput run(RunContext runContext) throws Exception {
        String renderedNamespace = runContext.render(this.namespace);

        String renderedKey = runContext.render(this.key);
        Object renderedValue = runContext.renderTyped(this.value);

        KVStore kvStore = runContext.namespaceKv(renderedNamespace);
        kvStore.put(renderedKey, new KVValueAndMetadata(new KVMetadata(ttl), renderedValue), this.overwrite);

        return null;
    }
@Test
    void shouldFailGivenExistingKeyAndOverwriteFalse() {
        // Given
        Set set = Set.builder()
            .id(Set.class.getSimpleName())
            .type(Set.class.getName())
            .key("{{ inputs.key }}")
            .value("{{ inputs.value }}")
            .overwrite(false)
            .build();

        var value = Map.of("date", Instant.now().truncatedTo(ChronoUnit.MILLIS), "int", 1, "string", "string");
        final RunContext runContext = TestsUtils.mockRunContext(this.runContextFactory, set, Map.of(
            "key", TEST_KEY,
            "value", value
        ));

        // When - Then
        KVStoreException exception = Assertions.assertThrows(KVStoreException.class, () -> set.run(runContext));
        assertThat(exception.getMessage(), is("Cannot set value for key '" + TEST_KEY + "'. Key already exists and `overwrite` is set to `false`."));
    }