File tree 2 files changed +43
-3
lines changed
base/src/main/kotlin/io/airbyte/cdk/spec
load/src/main/kotlin/io/airbyte/cdk/spec
2 files changed +43
-3
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import io.airbyte.cdk.Operation
5
5
import io.airbyte.cdk.command.ConfigurationJsonObjectSupplier
6
6
import io.airbyte.cdk.output.OutputConsumer
7
7
import io.airbyte.protocol.models.v0.ConnectorSpecification
8
+ import io.micronaut.context.annotation.DefaultImplementation
8
9
import io.micronaut.context.annotation.Requires
9
10
import io.micronaut.context.annotation.Value
10
11
import jakarta.inject.Singleton
@@ -15,13 +16,24 @@ import java.net.URI
15
16
class SpecOperation (
16
17
@Value(" \$ {airbyte.connector.metadata.documentation-url}" ) val documentationUrl : String ,
17
18
val configJsonObjectSupplier : ConfigurationJsonObjectSupplier <* >,
19
+ val extendSpecification : SpecificationExtender ,
18
20
val outputConsumer : OutputConsumer ,
19
21
) : Operation {
20
22
override fun execute () {
21
- outputConsumer.accept(
23
+ val spec =
22
24
ConnectorSpecification ()
23
25
.withDocumentationUrl(URI .create(documentationUrl))
24
- .withConnectionSpecification(configJsonObjectSupplier.jsonSchema),
25
- )
26
+ .withConnectionSpecification(configJsonObjectSupplier.jsonSchema)
27
+ outputConsumer.accept(extendSpecification(spec))
28
+ }
29
+ }
30
+
31
+ interface SpecificationExtender : (ConnectorSpecification ) -> ConnectorSpecification
32
+
33
+ @Singleton
34
+ @DefaultImplementation
35
+ class IdentitySpecificationExtender : SpecificationExtender {
36
+ override fun invoke (specification : ConnectorSpecification ): ConnectorSpecification {
37
+ return specification
26
38
}
27
39
}
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright (c) 2024 Airbyte, Inc., all rights reserved.
3
+ */
4
+
5
+ package io.airbyte.cdk.spec
6
+
7
+ import io.airbyte.protocol.models.v0.ConnectorSpecification
8
+ import io.airbyte.protocol.models.v0.DestinationSyncMode
9
+ import io.micronaut.context.annotation.Replaces
10
+ import io.micronaut.context.annotation.Requires
11
+ import jakarta.inject.Singleton
12
+
13
+ @Singleton
14
+ @Replaces(IdentitySpecificationExtender ::class )
15
+ @Requires(env = [" destination" ])
16
+ class DestinationSpecificationExtender (private val spec : DestinationSpecification ) :
17
+ SpecificationExtender {
18
+ override fun invoke (specification : ConnectorSpecification ): ConnectorSpecification {
19
+ return specification
20
+ .withSupportedDestinationSyncModes(spec.supportedSyncModes)
21
+ .withSupportsIncremental(spec.supportsIncremental)
22
+ }
23
+ }
24
+
25
+ interface DestinationSpecification {
26
+ val supportedSyncModes: List <DestinationSyncMode >
27
+ val supportsIncremental: Boolean
28
+ }
You can’t perform that action at this time.
0 commit comments