feature #6: implement PostArticle route

fix upsert_article function
This commit is contained in:
flecomte committed 2019-08-22 09:44:33 +02:00
1 parent ea835d8e9a
commit 3bf7ee1d13
9 files changed
+72 -31

No files matched your search

+8 -6
View File
@@ -8,7 +8,7 @@
</compilerSettings>
<compilerArguments>
<option name="destination" value="$MODULE_DIR$/../../build/classes/kotlin/main" />
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-netty/1.2.2/86f06a652bf2859236835e802cd81dc884a72c61/ktor-server-netty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-locations/1.2.2/65aedf76ede3b7b0df229696bf0ccdc5c70e6229/ktor-locations-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth-jwt/1.2.2/927e0d7895a68e47f0bb7013f4a03c87d0c7f172/ktor-auth-jwt-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth/1.2.2/abafe87ea2846689c533b14873b4166de1a3e1ef/ktor-auth-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-gson/1.2.2/a71b96c714f61ac7def69b2c66137420561f523/ktor-gson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-ktor/2.0.1/26442add29fb7e58d2d7fcbbcf5e4987e2502e78/koin-ktor-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-host-common/1.2.2/80e62a4dab4e116aeb50e8017838b83836764bf9/ktor-server-host-common-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-core/1.2.2/37ba2773c666ff3f9f35a6d5949b8b8c2edd6adf/ktor-server-core-1.2.2.jar:/Users/fabrice/.m2/repository/fr/postgresjson/postgresjson/0.1/postgresjson-0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-core-jvm/1.2.2/c716a28facaa99a8e2581cc0cca2be898b444242/ktor-client-core-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-cio-jvm/1.2.2/22659690f735fa439b4f91b83ef846e3ec7dedf1/ktor-http-cio-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-jvm/1.2.2/1381ef340b58a3287f1da884b9db7280466c67ff/ktor-http-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network/1.2.2/e8b2d5f46acfc25d7e893dde14f8da41ab28b7fd/ktor-network-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-utils-jvm/1.2.2/7c51add50945d74c07926e11acd33b66295903c8/ktor-utils-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-postgresql/0.9.53/1934ea86c5addf89d558e3af250fca674ed4ff66/jasync-postgresql-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-common/0.9.53/23862ae4d48b120cb71427e0ef1d0febab7409e6/jasync-common-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.3.40/2d1d0a2f27fd060787075c69113846803fc27734/kotlin-stdlib-jdk8-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.1/706a8b8206ead3683ec639dd270d11fd948fbb0e/logback-classic-1.2.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.40/2995de8f68444ad47f29e7b59962ac31e6301d7e/kotlin-stdlib-jdk7-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-io-jvm/0.1.10/ec98e487d8c710126001c4f3086e4a0b9c0d3179/kotlinx-coroutines-io-jvm-0.1.10.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-io-jvm/0.1.10/74f179ae134d78ad360770801807c7078e71885/kotlinx-io-jvm-0.1.10.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/atomicfu/0.12.9/5cee16643956d76c52c7ef345448b0990b6e1e04/atomicfu-0.12.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-kotlin/2.9.9/446b0567b26965cf7db859ba48a73ab30b4016b7/jackson-module-kotlin-2.9.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.40/f2f8357e000fd80d8d799110f012b86fd4637386/kotlin-reflect-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-core-ext/2.0.1/68140adc257437a3d9e48d6a06b6d1d82bd96c82/koin-core-ext-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-core/2.0.1/86ae7f8b8abdbbdb513e472830962361e7a3d646/koin-core-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.github.microutils/kotlin-logging/1.6.23/46f28c1ec251c748d9fcfa7977f0fc1274f93d64/kotlin-logging-1.6.23.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-jdk8/1.2.2/71653b85af2fe6baeb5314c2863dffe7aac8068a/kotlinx-coroutines-jdk8-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.2.2/6ff48bdfc38a8c22e3fc37605b6a6afaed3b6dbd/kotlinx-coroutines-core-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.40/b8a521c687329303778548e2f09b0ba5b2665236/kotlin-stdlib-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.26/77100a62c2e6f04b53977b9f541044d7d722693d/slf4j-api-1.7.26.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.typesafe/config/1.3.1/2cf7a6cc79732e3bdf1647d7404279900ca63eb0/config-1.3.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.netty/netty-codec-http2/4.1.36.Final/ed198d8a5283910b0c06Line truncated
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-netty/1.2.2/86f06a652bf2859236835e802cd81dc884a72c61/ktor-server-netty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-locations/1.2.2/65aedf76ede3b7b0df229696bf0ccdc5c70e6229/ktor-locations-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth-jwt/1.2.2/927e0d7895a68e47f0bb7013f4a03c87d0c7f172/ktor-auth-jwt-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth/1.2.2/abafe87ea2846689c533b14873b4166de1a3e1ef/ktor-auth-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-gson/1.2.2/a71b96c714f61ac7def69b2c66137420561f523/ktor-gson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-ktor/2.0.1/26442add29fb7e58d2d7fcbbcf5e4987e2502e78/koin-ktor-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-jackson/1.2.2/53e40b7916e16213fd26c453e505a14484302563/ktor-jackson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-host-common/1.2.2/80e62a4dab4e116aeb50e8017838b83836764bf9/ktor-server-host-common-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-core/1.2.2/37ba2773c666ff3f9f35a6d5949b8b8c2edd6adf/ktor-server-core-1.2.2.jar:/Users/fabrice/.m2/repository/fr/postgresjson/postgresjson/0.1/postgresjson-0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-core-jvm/1.2.2/c716a28facaa99a8e2581cc0cca2be898b444242/ktor-client-core-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-cio-jvm/1.2.2/22659690f735fa439b4f91b83ef846e3ec7dedf1/ktor-http-cio-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-jvm/1.2.2/1381ef340b58a3287f1da884b9db7280466c67ff/ktor-http-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network/1.2.2/e8b2d5f46acfc25d7e893dde14f8da41ab28b7fd/ktor-network-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-utils-jvm/1.2.2/7c51add50945d74c07926e11acd33b66295903c8/ktor-utils-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-postgresql/0.9.53/1934ea86c5addf89d558e3af250fca674ed4ff66/jasync-postgresql-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-common/0.9.53/23862ae4d48b120cb71427e0ef1d0febab7409e6/jasync-common-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.3.40/2d1d0a2f27fd060787075c69113846803fc27734/kotlin-stdlib-jdk8-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.1/706a8b8206ead3683ec639dd270d11fd948fbb0e/logback-classic-1.2.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-kotlin/2.9.9/446b0567b26965cf7db859ba48a73ab30b4016b7/jackson-module-kotlin-2.9.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-joda/2.9.9/a69b7eda6d0c422567c3ef9187510daeb97ef952/jackson-datatype-joda-2.9.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.40/2995de8f68444ad47f29e7b59962ac31e6301d7e/kotlin-stdlib-jdk7-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-io-jvm/0.1.10/ec98e487d8c710126001c4f3086e4a0b9c0d3179/kotlinx-coroutines-io-jvm-0.1.10.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-io-jvm/0.1.10/74f179ae134d78ad360770801807c7078e71885/kotlinx-io-jvm-0.1.10.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/atomicfu/0.12.9/5cee16643956d76c52c7ef345448b0990b6e1e04/atomicfu-0.12.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.40/f2f8357e000fd80d8d799110f012b86fd4637386/kotlin-reflect-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-core-ext/2.0.1/68140adc257437a3d9e48d6a06b6d1d82bd96c82/koin-core-ext-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-core/2.0.1/86ae7f8b8abdbbdb513e472830962361e7a3d646/koin-core-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.github.microutils/kotlin-logging/1.6.23/46f28c1ec251c748d9fcfa7977f0fc1274f93d64/kotlin-logging-1.6.23.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-jdk8/1.2.2/71653b85af2fe6baeb5314c2863dffe7aac8068a/kotlinx-coroutines-jdk8-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.2.2/6ff48bdfc38a8c22e3fc37605b6a6afaed3b6dbd/kotlinx-coroutines-core-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.40/b8a521c687329303778548e2f09b0ba5b2665236/kotlin-stdlib-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.slf4j/Line truncated
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="dcproject" />
@@ -53,6 +53,7 @@
<orderEntry type="library" name="Gradle: io.ktor:ktor-auth:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-gson:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-ktor:2.0.1" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-jackson:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-server-host-common:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-server-core:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: fr.postgresjson:postgresjson:0.1" level="project" />
@@ -65,11 +66,12 @@
<orderEntry type="library" name="Gradle: com.github.jasync-sql:jasync-common:0.9.53" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: ch.qos.logback:logback-classic:1.2.1" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-io-jvm:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:atomicfu:0.12.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-core-ext:2.0.1" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-core:2.0.1" level="project" />
@@ -88,6 +90,10 @@
<orderEntry type="library" name="Gradle: com.auth0:java-jwt:3.4.1" level="project" />
<orderEntry type="library" name="Gradle: com.auth0:jwks-rsa:0.7.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: joda-time:joda-time:2.9.7" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-io:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-io:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.2.2" level="project" />
@@ -103,12 +109,9 @@
<orderEntry type="library" name="Gradle: io.netty:netty-buffer:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: io.netty:netty-common:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Gradle: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Gradle: com.google.guava:guava:27.0-jre" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Gradle: joda-time:joda-time:2.9.7" level="project" />
<orderEntry type="library" name="Gradle: org.joda:joda-convert:1.8.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.guava:failureaccess:1.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
@@ -117,6 +120,5 @@
<orderEntry type="library" name="Gradle: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Gradle: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
</component>
</module>
+8 -6
View File
@@ -8,7 +8,7 @@
</compilerSettings>
<compilerArguments>
<option name="destination" value="$MODULE_DIR$/../../build/classes/kotlin/test" />
<option name="classpath" value="$MODULE_DIR$/../../build/classes/kotlin/main:/Users/fabrice/Projects/dcproject/build/resources/main:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-tests/1.2.2/a5e7d293b2d369a44a30388f3484785d6ff486a9/ktor-server-tests-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-test-host/1.2.2/dd5c583da8e368c6ff89a5e16f20815fc3a06aa3/ktor-server-test-host-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-tests-jvm/1.2.2/7b32b294214cfb5961e47309b07da7975700d966/ktor-client-tests-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-netty/1.2.2/86f06a652bf2859236835e802cd81dc884a72c61/ktor-server-netty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-locations/1.2.2/65aedf76ede3b7b0df229696bf0ccdc5c70e6229/ktor-locations-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth-jwt/1.2.2/927e0d7895a68e47f0bb7013f4a03c87d0c7f172/ktor-auth-jwt-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth/1.2.2/abafe87ea2846689c533b14873b4166de1a3e1ef/ktor-auth-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-gson/1.2.2/a71b96c714f61ac7def69b2c66137420561f523/ktor-gson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-ktor/2.0.1/26442add29fb7e58d2d7fcbbcf5e4987e2502e78/koin-ktor-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-jetty/1.2.2/3a68f6f9848b3c8d0d21d535d90e3ee6904544ce/ktor-server-jetty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-servlet/1.2.2/95b6aaa2dabce30a9cd80c6abfa7a25a0a9c95fd/ktor-server-servlet-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-host-common/1.2.2/80e62a4dab4e116aeb50e8017838b83836764bf9/ktor-server-host-common-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-websockets/1.2.2/307387edeab9331b03c8e5734f3d1beefa924fe6/ktor-websockets-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-core/1.2.2/37ba2773c666ff3f9f35a6d5949b8b8c2edd6adf/ktor-server-core-1.2.2.jar:/Users/fabrice/.m2/repository/fr/postgresjson/postgresjson/0.1/postgresjson-0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-jetty/1.2.2/54aa3dcdb249641444cec04dcca9253cf8142194/ktor-client-jetty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-cio/1.2.2/a6786e2ce03e59f450318a54ae5031c735c594c/ktor-client-cio-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-mock-jvm/1.2.2/2427d2806adb0c5b160c3827fff1365386e1fb5/ktor-client-mock-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-serialization-jvm/1.2.2/789320f004d4f24aa2a214eb64036471b97d8e50/ktor-client-serialization-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-json-jvm/1.2.2/67395314a5f00165876c0a59e554c7bd06e57c2b/ktor-client-json-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-core-jvm/1.2.2/c716a28facaa99a8e2581cc0cca2be898b444242/ktor-client-core-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network-tls/1.2.2/9c8dc8e8acbabbe777cfdb114118769e945763fc/ktor-network-tls-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-cio-jvm/1.2.2/22659690f735fa439b4f91b83ef846e3ec7dedf1/ktor-http-cio-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-jvm/1.2.2/1381ef340b58a3287f1da884b9db7280466c67ff/ktor-http-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network/1.2.2/e8b2d5f46acfc25d7e893dde14f8da41ab28b7fd/ktor-network-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-utils-jvm/1.2.2/7c51add50945d74c07926e11acd33b66295903c8/ktor-utils-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-postgresql/0.9.53/1934ea86c5addf89d558e3af250fca674ed4ff66/jasync-postgresql-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-common/0.9.53/23862ae4d48b120cb71427e0ef1d0febab7409e6/jasync-common-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.3.40/2d1d0a2f27fd060787075c69113846803fc27734/kotlin-stdlib-jdk8-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.40/2995de8f68444ad47f29e7b59962ac31e6301d7e/kotlin-stdlib-jdk7-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-tests-dispatcher-jvm/1.2.2/dca814812f32d864cd11618df71faf9997c4d257/ktor-client-tests-dispatcher-jvm-1.2.2.jar:/Users/fabrice/.gradle/cachLine truncated
<option name="classpath" value="$MODULE_DIR$/../../build/classes/kotlin/main:/Users/fabrice/Projects/dcproject/build/resources/main:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-tests/1.2.2/a5e7d293b2d369a44a30388f3484785d6ff486a9/ktor-server-tests-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-test-host/1.2.2/dd5c583da8e368c6ff89a5e16f20815fc3a06aa3/ktor-server-test-host-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-tests-jvm/1.2.2/7b32b294214cfb5961e47309b07da7975700d966/ktor-client-tests-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-netty/1.2.2/86f06a652bf2859236835e802cd81dc884a72c61/ktor-server-netty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-locations/1.2.2/65aedf76ede3b7b0df229696bf0ccdc5c70e6229/ktor-locations-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth-jwt/1.2.2/927e0d7895a68e47f0bb7013f4a03c87d0c7f172/ktor-auth-jwt-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-auth/1.2.2/abafe87ea2846689c533b14873b4166de1a3e1ef/ktor-auth-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-gson/1.2.2/a71b96c714f61ac7def69b2c66137420561f523/ktor-gson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.koin/koin-ktor/2.0.1/26442add29fb7e58d2d7fcbbcf5e4987e2502e78/koin-ktor-2.0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-jackson/1.2.2/53e40b7916e16213fd26c453e505a14484302563/ktor-jackson-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-jetty/1.2.2/3a68f6f9848b3c8d0d21d535d90e3ee6904544ce/ktor-server-jetty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-servlet/1.2.2/95b6aaa2dabce30a9cd80c6abfa7a25a0a9c95fd/ktor-server-servlet-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-host-common/1.2.2/80e62a4dab4e116aeb50e8017838b83836764bf9/ktor-server-host-common-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-websockets/1.2.2/307387edeab9331b03c8e5734f3d1beefa924fe6/ktor-websockets-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-core/1.2.2/37ba2773c666ff3f9f35a6d5949b8b8c2edd6adf/ktor-server-core-1.2.2.jar:/Users/fabrice/.m2/repository/fr/postgresjson/postgresjson/0.1/postgresjson-0.1.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-jetty/1.2.2/54aa3dcdb249641444cec04dcca9253cf8142194/ktor-client-jetty-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-cio/1.2.2/a6786e2ce03e59f450318a54ae5031c735c594c/ktor-client-cio-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-mock-jvm/1.2.2/2427d2806adb0c5b160c3827fff1365386e1fb5/ktor-client-mock-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-serialization-jvm/1.2.2/789320f004d4f24aa2a214eb64036471b97d8e50/ktor-client-serialization-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-json-jvm/1.2.2/67395314a5f00165876c0a59e554c7bd06e57c2b/ktor-client-json-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-core-jvm/1.2.2/c716a28facaa99a8e2581cc0cca2be898b444242/ktor-client-core-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network-tls/1.2.2/9c8dc8e8acbabbe777cfdb114118769e945763fc/ktor-network-tls-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-cio-jvm/1.2.2/22659690f735fa439b4f91b83ef846e3ec7dedf1/ktor-http-cio-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-http-jvm/1.2.2/1381ef340b58a3287f1da884b9db7280466c67ff/ktor-http-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-network/1.2.2/e8b2d5f46acfc25d7e893dde14f8da41ab28b7fd/ktor-network-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-utils-jvm/1.2.2/7c51add50945d74c07926e11acd33b66295903c8/ktor-utils-jvm-1.2.2.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-postgresql/0.9.53/1934ea86c5addf89d558e3af250fca674ed4ff66/jasync-postgresql-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.github.jasync-sql/jasync-common/0.9.53/23862ae4d48b120cb71427e0ef1d0febab7409e6/jasync-common-0.9.53.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.3.40/2d1d0a2f27fd060787075c69113846803fc27734/kotlin-stdlib-jdk8-1.3.40.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-kotlin/2.9.9/446b0567b26965cf7db859ba48a73ab30b4016b7/jackson-module-kotlin-2.9.9.jar:/Users/fabrice/.gradle/caches/modules-2/files-2.1/com.fLine truncated
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="dcproject" />
@@ -62,6 +62,7 @@
<orderEntry type="library" name="Gradle: io.ktor:ktor-auth:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-gson:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-ktor:2.0.1" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-jackson:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-server-jetty:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-server-servlet:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-server-host-common:1.2.2" level="project" />
@@ -83,12 +84,13 @@
<orderEntry type="library" name="Gradle: com.github.jasync-sql:jasync-common:0.9.53" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: io.ktor:ktor-client-tests-dispatcher-jvm:1.2.2" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-io-jvm:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:atomicfu:0.12.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.3.40" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-core-ext:2.0.1" level="project" />
<orderEntry type="library" name="Gradle: org.koin:koin-core:2.0.1" level="project" />
@@ -112,6 +114,10 @@
<orderEntry type="library" name="Gradle: com.auth0:java-jwt:3.4.1" level="project" />
<orderEntry type="library" name="Gradle: com.auth0:jwks-rsa:0.7.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: joda-time:joda-time:2.9.7" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-io:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-io:0.1.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.2.2" level="project" />
@@ -130,12 +136,9 @@
<orderEntry type="library" name="Gradle: io.netty:netty-buffer:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: io.netty:netty-common:4.1.36.Final" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Gradle: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Gradle: com.google.guava:guava:27.0-jre" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Gradle: joda-time:joda-time:2.9.7" level="project" />
<orderEntry type="library" name="Gradle: org.joda:joda-convert:1.8.1" level="project" />
<orderEntry type="library" name="Gradle: org.eclipse.jetty.http2:http2-http-client-transport:9.4.15.v20190215" level="project" />
<orderEntry type="library" name="Gradle: org.eclipse.jetty.http2:http2-client:9.4.15.v20190215" level="project" />
@@ -150,7 +153,6 @@
<orderEntry type="library" name="Gradle: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Gradle: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
<orderEntry type="library" name="Gradle: org.eclipse.jetty:jetty-alpn-java-client:9.4.15.v20190215" level="project" />
<orderEntry type="library" name="Gradle: org.eclipse.jetty.http2:http2-server:9.4.15.v20190215" level="project" />
<orderEntry type="library" name="Gradle: org.eclipse.jetty.http2:http2-common:9.4.15.v20190215" level="project" />
+3 -3
View File
@@ -1,6 +1,3 @@
import org.jetbrains.kotlin.gradle.dsl.Coroutines
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
val ktor_version: String by project
val kotlin_version: String by project
val logback_version: String by project
@@ -35,6 +32,9 @@ dependencies {
compile("io.ktor:ktor-auth-jwt:$ktor_version")
compile("io.ktor:ktor-gson:$ktor_version")
compile("org.koin:koin-ktor:$koinVersion")
compile("io.ktor:ktor-jackson:$ktor_version")
compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9")
compile("com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.9")
compile("fr.postgresjson:postgresjson:$postgresjson_version")
testCompile("io.ktor:ktor-server-tests:$ktor_version")
}
@@ -1,4 +1,4 @@
create or replace procedure upsert_article(inout resource json)
create or replace function upsert_article(inout resource json)
language plpgsql as
$$
declare
@@ -6,7 +6,7 @@ declare
begin
insert into article (version_id, created_by_id, title, annonymous, content, description, tags)
select
version_id,
coalesce(version_id, uuid_generate_v4()),
(resource#>>'{created_by, id}')::uuid,
title,
annonymous,
+23 -3
View File
@@ -1,13 +1,20 @@
package fr.dcproject
import com.fasterxml.jackson.core.util.DefaultIndenter
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.PropertyNamingStrategy
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.datatype.joda.JodaModule
import fr.dcproject.entity.Article
import fr.dcproject.routes.article
import io.ktor.application.Application
import io.ktor.application.install
import io.ktor.auth.Authentication
import io.ktor.features.AutoHeadResponse
import io.ktor.features.ContentNegotiation
import io.ktor.features.DataConversion
import io.ktor.gson.gson
import io.ktor.jackson.jackson
import io.ktor.locations.KtorExperimentalLocationsAPI
import io.ktor.locations.Locations
import io.ktor.routing.Routing
@@ -57,12 +64,25 @@ fun Application.module() {
install(Authentication) {
}
install(AutoHeadResponse)
install(ContentNegotiation) {
gson {
// TODO move to postgresJson lib
jackson {
propertyNamingStrategy = PropertyNamingStrategy.SNAKE_CASE
registerModule(JodaModule())
disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
configure(SerializationFeature.INDENT_OUTPUT, true)
setDefaultPrettyPrinter(DefaultPrettyPrinter().apply {
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
indentObjectsWith(DefaultIndenter(" ", "\n"))
})
}
}
install(Routing) {
article()
article(get())
}
}
+7 -7
View File
@@ -4,13 +4,13 @@ import java.util.*
class Article(
id: UUID,
var versionId: UUID,
var versionNumber: Int,
var title: String,
var annonymous: Boolean,
var content: String,
var description: String,
id: UUID?,
var versionId: UUID?,
var versionNumber: Int?,
var title: String?,
var annonymous: Boolean?,
var content: String?,
var description: String?,
var tags: List<String>
):
UuidEntity(id),
+1 -1
View File
@@ -7,7 +7,7 @@ import java.util.*
class User(
id: UUID?,
var username: String,
var username: String?,
var blockedAt: DateTime?,
override var createdAt: DateTime?,
override var updatedAt: DateTime?
+9 -2
View File
@@ -4,11 +4,10 @@ import fr.postgresjson.connexion.Requester
import fr.postgresjson.entity.EntitiesCollections
import fr.postgresjson.repository.RepositoryI
import java.util.*
import kotlin.reflect.KClass
import fr.dcproject.entity.Article as ArticleEntity
class Article(override var requester: Requester) : RepositoryI<ArticleEntity> {
override val entityName: KClass<fr.dcproject.entity.Article> = ArticleEntity::class
override val entityName = ArticleEntity::class
fun findById(id: UUID): ArticleEntity? {
val function = requester.getFunction("find_article_by_id")
@@ -19,4 +18,12 @@ class Article(override var requester: Requester) : RepositoryI<ArticleEntity> {
else -> e
}
}
fun upsert(article: ArticleEntity): ArticleEntity? {
return requester
.getFunction("upsert_article")
.selectOne<ArticleEntity>("resource" to article)?.also {
EntitiesCollections().set(it)
}
}
}
+11 -1
View File
@@ -5,15 +5,25 @@ import fr.postgresjson.serializer.serialize
import io.ktor.application.call
import io.ktor.locations.KtorExperimentalLocationsAPI
import io.ktor.locations.get
import io.ktor.locations.post
import io.ktor.request.receive
import io.ktor.response.respond
import io.ktor.response.respondText
import io.ktor.routing.Route
import fr.dcproject.entity.Article as ArticleEntity
import fr.dcproject.repository.Article as ArticleRepository
@KtorExperimentalLocationsAPI
fun Route.article() {
fun Route.article(repo: ArticleRepository) {
get<Paths.ArticlesRequest> {
call.respondText("todo")
}
get<Paths.ArticleRequest> {
call.respondText(it.article.serialize())
}
post<Paths.PostArticleRequest>() {
val article = call.receive<ArticleEntity>()
repo.upsert(article)
call.respond(article)
}
}