Atualização da referência de recurso¶
Objetos e procedimentos de banco de dados¶
Os seguintes objetos de banco de dados são criados quando o arquivo ingestion/resource_management.sql
é executado.
PUBLIC.UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)¶
Procedimento de ponto de entrada disponível para a função ADMIN
. Este procedimento invoca a função Java UpdateResourceHandler.updateResource
.
PUBLIC.UPDATE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)¶
Procedimento usado para validação específica do conector do processo de atualização. Por padrão, ela retorna 'response_code': 'OK'
. É invocado por DefaultUpdateResourceValidator
. Pode ser sobrescrito em ambos SQL e Java.
PUBLIC.PRE_UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)¶
Procedimento usado para adicionar lógica específica do conector, que é invocada antes de um recurso ser atualizado. Por padrão, ela retorna 'response_code': 'OK'
. É invocado por DefaultPreUpdateResourceCallback
. Pode ser sobrescrito em ambos SQL e Java.
PUBLIC.POST_UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)¶
Procedimento usado para adicionar lógica específica do conector, que é invocada após um recurso ser atualizado. Por padrão, ela retorna 'response_code': 'OK'
. É invocado por DefaultPostUpdateResourceCallback
. Pode ser sobrescrito em ambos SQL e Java.
Manipulador personalizado¶
O manipulador e seus componentes internos podem ser personalizados usando as seguintes abordagens.
Abordagem de substituição de procedimento¶
Os seguintes componentes podem ser substituídos usando SQL.
Manipulador¶
Para fornecer implementação personalizada completa de UpdateResourceHandler
, o procedimento PUBLIC.UPDATE_RESOURCE
deve ser substituído. Por exemplo:
CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomUpdateResourceHandler.updateResource';
GRANT USAGE ON PROCEDURE PUBLIC.UPDATE_RESOURCE(VARCHAR, VARIANT) TO APPLICATION ROLE ADMIN;
Procedimentos internos¶
Os procedimentos internos UPDATE_RESOURCE_VALIDATE
, PRE_UPDATE_RESOURCE
e POST_UPDATE_RESOURCE
também podem ser personalizados através de SQL. Esses procedimentos também podem invocar outros manipuladores Java:
CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)
RETURNS VARIANT
LANGUAGE SQL
EXECUTE AS OWNER
AS
BEGIN
-- SOME CUSTOM LOGIC BEGIN
SELECT sysdate();
-- SOME CUSTOM LOGIC END
RETURN OBJECT_CONSTRUCT('response_code', 'OK');
END;
CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomHandler.updateResourceValidate';
Abordagem do construtor¶
UpdateResourceHandler
pode ser personalizado usando UpdateResourceHandlerBuilder
. Este construtor permite que o usuário forneça implementações personalizadas das seguintes interfaces:
UpdateResourceValidator
PreUpdateResourceCallback
PostUpdateResourceCallback
ConnectorErrorHelper
Caso uma função não seja fornecida, a implementação padrão fornecida pelo SDK será usada.
class CustomPreUpdateResourceCallback implements PreUpdateResourceCallback {
@Override
public ConnectorResponse execute(String resourceIngestionDefinitionId, Variant updatedIngestionConfigurations) {
// CUSTOM LOGIC
return ConnectorResponse.success();
}
}
class CustomHandler {
// Path to this method needs to be specified in the PUBLIC.UPDATE_RESOURCE procedure using SQL
public static Variant updateResource(Session session, String resourceIngestionDefinitionId, Variant updatedIngestionConfigurations) {
//Using builder
var handler = UpdateResourceHandlerBuilder.builder(session)
.withPreUpdateResourceCallback(new CustomPreUpdateResourceCallback())
.build();
return handler.updateResource(resourceIngestionDefinitionId).toVariant();
}
}