/
SnowflakeCopyS3Destination.java
66 lines (55 loc) · 2.23 KB
/
SnowflakeCopyS3Destination.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
* Copyright (c) 2021 Airbyte, Inc., all rights reserved.
*/
package io.airbyte.integrations.destination.snowflake;
import com.fasterxml.jackson.databind.JsonNode;
import io.airbyte.db.jdbc.JdbcDatabase;
import io.airbyte.integrations.base.AirbyteMessageConsumer;
import io.airbyte.integrations.destination.ExtendedNameTransformer;
import io.airbyte.integrations.destination.jdbc.SqlOperations;
import io.airbyte.integrations.destination.jdbc.copy.CopyConsumerFactory;
import io.airbyte.integrations.destination.jdbc.copy.CopyDestination;
import io.airbyte.integrations.destination.s3.S3Destination;
import io.airbyte.integrations.destination.s3.S3DestinationConfig;
import io.airbyte.protocol.models.AirbyteMessage;
import io.airbyte.protocol.models.ConfiguredAirbyteCatalog;
import java.util.function.Consumer;
public class SnowflakeCopyS3Destination extends CopyDestination {
@Override
public AirbyteMessageConsumer getConsumer(final JsonNode config,
final ConfiguredAirbyteCatalog catalog,
final Consumer<AirbyteMessage> outputRecordCollector) {
return CopyConsumerFactory.create(
outputRecordCollector,
getDatabase(config),
getSqlOperations(),
getNameTransformer(),
getS3DestinationConfig(config),
catalog,
new SnowflakeS3StreamCopierFactory(),
getConfiguredSchema(config));
}
@Override
public void checkPersistence(final JsonNode config) {
S3Destination.attemptS3WriteAndDelete(getS3DestinationConfig(config), "");
}
@Override
public ExtendedNameTransformer getNameTransformer() {
return new SnowflakeSQLNameTransformer();
}
@Override
public JdbcDatabase getDatabase(final JsonNode config) {
return SnowflakeDatabase.getDatabase(config);
}
@Override
public SqlOperations getSqlOperations() {
return new SnowflakeSqlOperations();
}
private String getConfiguredSchema(final JsonNode config) {
return config.get("schema").asText();
}
private S3DestinationConfig getS3DestinationConfig(final JsonNode config) {
final JsonNode loadingMethod = config.get("loading_method");
return S3DestinationConfig.getS3DestinationConfig(loadingMethod);
}
}