@Override
    protected void update(final String username, final Collection<CredentialRegistration> records) {
        if (records.isEmpty()) {
            LOGGER.debug("No records are provided for [{}] so entry will be removed", username);
            facilitator.remove(username.trim().toLowerCase(Locale.ENGLISH));
        } else {
            val jsonRecords = records.stream()
                .map(record -> {
                    if (record.getRegistrationTime() == null) {
                        return record.withRegistrationTime(Instant.now(Clock.systemUTC()));
                    }
                    return record;
                })
                .map(Unchecked.function(record -> getCipherExecutor().encode(WebAuthnUtils.getObjectMapper().writeValueAsString(record))))
                .collect(Collectors.toList());
            val entry = DynamoDbWebAuthnCredentialRegistration.builder()
                .records(jsonRecords)
                .username(username.trim().toLowerCase(Locale.ENGLISH))
                .build();
            facilitator.save(entry);
        }
    }
This is {@link DynamoDbWebAuthnCredentialRepository}.

@author Misagh Moayyed
@since 6.3.0
support/cas-server-support-webauthn-dynamodb/src/main/java/org/apereo/cas/webauthn/DynamoDbWebAuthnCredentialRepository.java