Skip to content

Commit

Permalink
add java codegen from json schema (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
cgardens authored Aug 8, 2020
1 parent 6b36e6f commit 262b68d
Show file tree
Hide file tree
Showing 8 changed files with 198 additions and 0 deletions.
34 changes: 34 additions & 0 deletions conduit-config/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
group 'io.dataline.conduit'
version '0.1.0'

// todo: make sure we use the non-deprecated version of this.
// https://github.com/joelittlejohn/jsonschema2pojo/tree/master/jsonschema2pojo-gradle-plugin
apply plugin: 'jsonschema2pojo'


buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'org.jsonschema2pojo:jsonschema2pojo-gradle-plugin:1.0.2'
}
}


repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'

// Required if generating JSR-303 annotations
compile 'javax.validation:validation-api:1.1.0.CR2'
// Required if generating Jackson 2 annotations
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.7'
}

jsonSchema2Pojo {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardConnectionStatus",
"title": "StandardConnectionStatus",
"description": "describes the result of a 'test connection' action.",
"type": "object",
"required": ["status"],
"properties": {
"status": {
"type": "string",
"enum": ["success", "failure"]
},
"message": {
"type": "string"
}
}
}
52 changes: 52 additions & 0 deletions conduit-config/src/main/resources/json/StandardDataSchema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardDataSchema",
"title": "StandardDataSchema",
"type": "object",
"definitions": {
"schema": {
"description": "describes the available schema.",
"type": "object",
"properties": {
"tables": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"columns"
],
"properties": {
"name": {
"type": "string"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"dataType"
],
"properties": {
"name": {
"type": "string"
},
"dataType": {
"type": "string",
"enum": [
"string",
"number",
"boolean"
]
}
}
}
}
}
}
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardDiscoveryOutput",
"title": "StandardDiscoveryOutput",
"description": "describes the standard output for any discovery run.",
"type": "object",
"required": ["schema"],
"properties": {
"schema": {
"description": "describes the available schema.",
"$ref": "StandardDataSchema.json#/definitions/schema"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardScheduleConfiguration",
"title": "StandardScheduleConfiguration",
"type": "object",
"properties": {
"timeUnit": {
"type": "string",
"enum": ["minutes", "hours", "days", "weeks"]
},
"units": {
"type": "integer"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardSyncConfiguration",
"title": "StandardSyncConfiguration",
"description": "configuration required for sync for ALL taps",
"type": "object",
"properties": {
"syncMode": {
"type": "string",
"enum": ["full_refresh", "append"]
},
"schema": {
"description": "describes the elements of the schema that will be synced.",
"$ref": "StandardDataSchema.json#/definitions/schema"
}
}
}
47 changes: 47 additions & 0 deletions conduit-config/src/main/resources/json/StandardSyncSummary.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "StandardSyncSummary",
"title": "StandardSyncSummary",
"description": "standard information output by ALL taps for a sync step (our version of state.json)",
"type": "object",
"properties": {
"attemptId": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": ["pending", "in_progress","completed", "failed", "cancelled"]
},
"recordsSynced": {
"type": "integer",
"minValue": 0
},
"version": {
"type": "integer"
},
"tables": {
"type": "array",
"items": {
"type": "object",
"properties": {
"lastRecord": {
"description": "blob of the last record",
"type": "object"
},
"version": {
"type": "integer"
}
}
}
},
"startTime": {
"type": "integer"
},
"endTime": {
"type": "integer"
},
"logs": {
}
}
}
2 changes: 2 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ rootProject.name = 'conduit'
include 'conduit-api'
include 'conduit-server'
include 'conduit-commons'
include 'conduit-config'

0 comments on commit 262b68d

Please sign in to comment.