diff --git a/project/.bloop/srdb-core-build.json b/project/.bloop/srdb-core-build.json new file mode 100644 index 0000000..87c6329 --- /dev/null +++ b/project/.bloop/srdb-core-build.json @@ -0,0 +1,848 @@ +{ + "version" : "1.1.2", + "project" : { + "name" : "srdb-core-build", + "directory" : "/Users/jordi/work/opensource/srdb-core/project", + "sources" : [ + "/Users/jordi/work/opensource/srdb-core/project/src/main/scala", + "/Users/jordi/work/opensource/srdb-core/project/src/main/scala-2.12", + "/Users/jordi/work/opensource/srdb-core/project/src/main/scala-2", + "/Users/jordi/work/opensource/srdb-core/project/src/main/java", + "/Users/jordi/work/opensource/srdb-core/project/src/main/scala-sbt-1.0", + "/Users/jordi/work/opensource/srdb-core/project/target/scala-2.12/sbt-1.0/src_managed/main" + ], + "dependencies" : [ + ], + "classpath" : [ + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-library.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/sbt-scoverage_2.12_1.0/1.5.1/sbt-scoverage-1.5.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/sbt-coveralls_2.12_1.0/1.2.5/sbt-coveralls-1.2.5.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/wartremover/sbt-wartremover_2.12_1.0/2.2.1/sbt-wartremover-2.2.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalastyle/scalastyle-sbt-plugin_2.12_1.0/1.0.0/scalastyle-sbt-plugin-1.0.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalariform/sbt-scalariform_2.12_1.0/1.8.3/sbt-scalariform-1.8.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-git/scala_2.12/sbt_1.0/1.0.0/jars/sbt-git.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.gilcloud/sbt-gitlab/scala_2.12/sbt_1.0/0.0.6/jars/sbt-gitlab.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/sbt-bloop_2.12_1.0/1.3.2/sbt-bloop-1.3.2.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/scalac-scoverage-plugin_2.12/1.3.1/scalac-scoverage-plugin_2.12-1.3.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.9.0/jackson-core-2.9.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-scala_2.12/2.9.0/jackson-module-scala_2.12-2.9.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/eclipse/jgit/org.eclipse.jgit/4.9.0.201710071750-r/org.eclipse.jgit-4.9.0.201710071750-r.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalaj/scalaj-http_2.12/2.3.0/scalaj-http_2.12-2.3.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalastyle/scalastyle_2.12/1.0.0/scalastyle_2.12-1.0.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalariform/scalariform_2.12/0.2.10/scalariform_2.12-0.2.10.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/bloop-config_2.12/1.3.2/bloop-config_2.12-1.3.2.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.2.0/scala-xml_2.12-1.2.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-reflect.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.0/jackson-databind-2.9.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-paranamer/2.9.0/jackson-module-paranamer-2.9.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/config/1.2.0/config-1.2.0.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.12/1.1.2/scala-parser-combinators_2.12-1.1.2.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-parser_2.12/0.9.3/circe-parser_2.12-0.9.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-derivation_2.12/0.9.0-M3/circe-derivation_2.12-0.9.0-M3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-jawn_2.12/0.9.3/circe-jawn_2.12-0.9.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-core_2.12/0.9.3/circe-core_2.12-0.9.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/spire-math/jawn-parser_2.12/0.11.1/jawn-parser_2.12-0.11.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-numbers_2.12/0.9.3/circe-numbers_2.12-0.9.3.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-core_2.12/1.0.1/cats-core_2.12-1.0.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-macros_2.12/1.0.1/cats-macros_2.12-1.0.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-kernel_2.12/1.0.1/cats-kernel_2.12-1.0.1.jar", + "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/machinist_2.12/0.6.2/machinist_2.12-0.6.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-compiler.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-xml_2.12.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-relation_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-interface-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-persist-core-assembly-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/sbt-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/main_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/shaded-jawn-parser_2.12-0.9.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/log4j-api-2.11.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/okhttp-3.14.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-position_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/task-system_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/gigahorse-core_2.12-0.5.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-cache_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-reader-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/slf4j-api-1.7.26.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/testing_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/sbinary_2.12-0.5.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/error_prone_annotations-2.4.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/test-interface-1.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/launcher-interface-1.1.6.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-terminal-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/test-agent-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/config-1.3.3.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/io_2.12-1.4.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-lm-integration_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/sjson-new-core_2.12-0.9.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/scala-reflect-2.12.12.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/log4j-slf4j-impl-2.11.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/scala-collection-compat_2.12-2.3.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/compiler-interface-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/checker-qual-3.4.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/log4j-core-2.11.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/caffeine-2.8.5.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/ssl-config-core_2.12-0.4.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/completion_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-classpath_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-2.14.7-sbt-a1b0ffbb8f64bb820f4f84a0c07a0c0964507493.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-terminal-jna-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-persist_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-tracking_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-terminal-jansi-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-core_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/scala-parser-combinators_2.12-1.1.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/compiler-bridge_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/scala-xml_2.12-1.3.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jansi-2.1.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jna-platform-5.5.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/okhttp-urlconnection-3.7.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/reactive-streams-1.0.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/disruptor-3.4.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-builtins-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-apiinfo_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/lm-coursier-shaded_2.12-2.0.6.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jna-5.5.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/sjson-new-murmurhash_2.12-0.9.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/template-resolver-0.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/file-tree-views-2.1.6.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/ipcsocket-1.3.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-compile-core_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/protocol_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/run_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/gigahorse-okhttp_2.12-0.5.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-logging_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/sjson-new-scalajson_2.12-0.9.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/util-control_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jsch-0.1.54.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/core-macros_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-classfile_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/jline-style-3.19.0.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/okio-1.17.2.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/librarymanagement-core_2.12-1.4.3.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/actions_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/main-settings_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/ivy-2.3.0-sbt-fbc4f586aeeb1591710b14eb4f41b94880dcd745.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zero-allocation-hashing-0.10.1.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/command_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/tasks_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/zinc-compile_2.12-1.4.4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/librarymanagement-ivy_2.12-1.4.3.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/scripted-plugin_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/shaded-scalajson_2.12-1.0.0-M4.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/collections_2.12-1.4.9.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/org.scala-sbt/sbt/1.4.9/logic_2.12-1.4.9.jar" + ], + "out" : "/Users/jordi/work/opensource/srdb-core/project/.bloop/srdb-core-build", + "classesDir" : "/Users/jordi/work/opensource/srdb-core/project/.bloop/srdb-core-build/scala-2.12/sbt-1.0/classes", + "resources" : [ + "/Users/jordi/work/opensource/srdb-core/project/src/main/resources", + "/Users/jordi/work/opensource/srdb-core/project/target/scala-2.12/sbt-1.0/resource_managed/main" + ], + "scala" : { + "organization" : "org.scala-lang", + "name" : "scala-compiler", + "version" : "2.12.12", + "options" : [ + "-deprecation" + ], + "jars" : [ + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-library.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-compiler.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/jline.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-reflect.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/jansi.jar", + "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-xml_2.12.jar" + ], + "setup" : { + "order" : "mixed", + "addLibraryToBootClasspath" : true, + "addCompilerToClasspath" : false, + "addExtraJarsToClasspath" : false, + "manageBootClasspath" : true, + "filterLibraryFromClasspath" : true + } + }, + "java" : { + "options" : [ + ] + }, + "sbt" : { + "sbtVersion" : "1.4.9", + "autoImports" : [ + "import _root_.scala.xml.{TopScope=>$scope}", + "import _root_.sbt._", + "import _root_.sbt.Keys._", + "import _root_.sbt.nio.Keys._", + "import _root_.sbt.ScriptedPlugin.autoImport._, _root_.sbt.plugins.MiniDependencyTreePlugin.autoImport._, _root_.bloop.integrations.sbt.BloopPlugin.autoImport._, _root_.scoverage.ScoverageSbtPlugin.autoImport._, _root_.org.scoverage.coveralls.CoverallsPlugin.autoImport._, _root_.wartremover.WartRemover.autoImport._, _root_.org.scalastyle.sbt.ScalastylePlugin.autoImport._, _root_.com.typesafe.sbt.SbtScalariform.autoImport._, _root_.com.typesafe.sbt.GitPlugin.autoImport._, _root_.com.gilcloud.sbt.gitlab.GitlabPlugin.autoImport._", + "import _root_.sbt.plugins.IvyPlugin, _root_.sbt.plugins.JvmPlugin, _root_.sbt.plugins.CorePlugin, _root_.sbt.ScriptedPlugin, _root_.sbt.plugins.SbtPlugin, _root_.sbt.plugins.SemanticdbPlugin, _root_.sbt.plugins.JUnitXmlReportPlugin, _root_.sbt.plugins.Giter8TemplatePlugin, _root_.sbt.plugins.MiniDependencyTreePlugin, _root_.bloop.integrations.sbt.BloopPlugin, _root_.scoverage.ScoverageSbtPlugin, _root_.org.scoverage.coveralls.CoverallsPlugin, _root_.wartremover.WartRemover, _root_.org.scalastyle.sbt.ScalastylePlugin, _root_.com.typesafe.sbt.SbtScalariform, _root_.com.typesafe.sbt.GitBranchPrompt, _root_.com.typesafe.sbt.GitPlugin, _root_.com.typesafe.sbt.GitVersioning, _root_.com.gilcloud.sbt.gitlab.GitlabPlugin" + ] + }, + "test" : { + "frameworks" : [ + { + "names" : [ + "org.scalacheck.ScalaCheckFramework" + ] + }, + { + "names" : [ + "org.specs2.runner.Specs2Framework", + "org.specs2.runner.SpecsFramework" + ] + }, + { + "names" : [ + "org.specs.runner.SpecsFramework" + ] + }, + { + "names" : [ + "org.scalatest.tools.Framework", + "org.scalatest.tools.ScalaTestFramework" + ] + }, + { + "names" : [ + "com.novocode.junit.JUnitFramework" + ] + } + ], + "options" : { + "excludes" : [ + ], + "arguments" : [ + ] + } + }, + "platform" : { + "name" : "jvm", + "config" : { + "home" : "/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home", + "options" : [ + ] + }, + "mainClass" : [ + ] + }, + "resolution" : { + "modules" : [ + { + "organization" : "org.scoverage", + "name" : "sbt-scoverage", + "version" : "1.5.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "sbt-scoverage", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/sbt-scoverage_2.12_1.0/1.5.1/sbt-scoverage-1.5.1.jar" + } + ] + }, + { + "organization" : "org.scoverage", + "name" : "sbt-coveralls", + "version" : "1.2.5", + "configurations" : "default", + "artifacts" : [ + { + "name" : "sbt-coveralls", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/sbt-coveralls_2.12_1.0/1.2.5/sbt-coveralls-1.2.5.jar" + } + ] + }, + { + "organization" : "org.wartremover", + "name" : "sbt-wartremover", + "version" : "2.2.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "sbt-wartremover", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/wartremover/sbt-wartremover_2.12_1.0/2.2.1/sbt-wartremover-2.2.1.jar" + } + ] + }, + { + "organization" : "org.scalastyle", + "name" : "scalastyle-sbt-plugin", + "version" : "1.0.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scalastyle-sbt-plugin", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalastyle/scalastyle-sbt-plugin_2.12_1.0/1.0.0/scalastyle-sbt-plugin-1.0.0.jar" + } + ] + }, + { + "organization" : "org.scalariform", + "name" : "sbt-scalariform", + "version" : "1.8.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "sbt-scalariform", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalariform/sbt-scalariform_2.12_1.0/1.8.3/sbt-scalariform-1.8.3.jar" + } + ] + }, + { + "organization" : "com.typesafe.sbt", + "name" : "sbt-git", + "version" : "1.0.0", + "configurations" : "compile", + "artifacts" : [ + { + "name" : "sbt-git", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-git/scala_2.12/sbt_1.0/1.0.0/jars/sbt-git.jar" + }, + { + "name" : "sbt-git", + "classifier" : "sources", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-git/scala_2.12/sbt_1.0/1.0.0/srcs/sbt-git-sources.jar" + }, + { + "name" : "sbt-git", + "classifier" : "javadoc", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-git/scala_2.12/sbt_1.0/1.0.0/docs/sbt-git-javadoc.jar" + } + ] + }, + { + "organization" : "com.gilcloud", + "name" : "sbt-gitlab", + "version" : "0.0.6", + "configurations" : "compile", + "artifacts" : [ + { + "name" : "sbt-gitlab", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.gilcloud/sbt-gitlab/scala_2.12/sbt_1.0/0.0.6/jars/sbt-gitlab.jar" + } + ] + }, + { + "organization" : "ch.epfl.scala", + "name" : "sbt-bloop", + "version" : "1.3.2", + "configurations" : "default", + "artifacts" : [ + { + "name" : "sbt-bloop", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/sbt-bloop_2.12_1.0/1.3.2/sbt-bloop-1.3.2.jar" + } + ] + }, + { + "organization" : "org.scoverage", + "name" : "scalac-scoverage-plugin_2.12", + "version" : "1.3.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scalac-scoverage-plugin_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scoverage/scalac-scoverage-plugin_2.12/1.3.1/scalac-scoverage-plugin_2.12-1.3.1.jar" + } + ] + }, + { + "organization" : "com.fasterxml.jackson.core", + "name" : "jackson-core", + "version" : "2.9.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jackson-core", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.9.0/jackson-core-2.9.0.jar" + } + ] + }, + { + "organization" : "com.fasterxml.jackson.module", + "name" : "jackson-module-scala_2.12", + "version" : "2.9.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jackson-module-scala_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-scala_2.12/2.9.0/jackson-module-scala_2.12-2.9.0.jar" + } + ] + }, + { + "organization" : "org.eclipse.jgit", + "name" : "org.eclipse.jgit", + "version" : "4.9.0.201710071750-r", + "configurations" : "default", + "artifacts" : [ + { + "name" : "org.eclipse.jgit", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/eclipse/jgit/org.eclipse.jgit/4.9.0.201710071750-r/org.eclipse.jgit-4.9.0.201710071750-r.jar" + } + ] + }, + { + "organization" : "org.scalaj", + "name" : "scalaj-http_2.12", + "version" : "2.3.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scalaj-http_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalaj/scalaj-http_2.12/2.3.0/scalaj-http_2.12-2.3.0.jar" + } + ] + }, + { + "organization" : "org.scalastyle", + "name" : "scalastyle_2.12", + "version" : "1.0.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scalastyle_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalastyle/scalastyle_2.12/1.0.0/scalastyle_2.12-1.0.0.jar" + } + ] + }, + { + "organization" : "org.scalariform", + "name" : "scalariform_2.12", + "version" : "0.2.10", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scalariform_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scalariform/scalariform_2.12/0.2.10/scalariform_2.12-0.2.10.jar" + } + ] + }, + { + "organization" : "ch.epfl.scala", + "name" : "bloop-config_2.12", + "version" : "1.3.2", + "configurations" : "default", + "artifacts" : [ + { + "name" : "bloop-config_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "f2dd8d86a5093d4c47b09c50144583d112e1962d" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/bloop-config_2.12/1.3.2/bloop-config_2.12-1.3.2.jar" + } + ] + }, + { + "organization" : "org.scala-lang", + "name" : "scala-library", + "version" : "2.12.12", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scala-library", + "path" : "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-library.jar" + } + ] + }, + { + "organization" : "org.scala-lang.modules", + "name" : "scala-xml_2.12", + "version" : "1.2.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scala-xml_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "5d38ac30beb8420dd395c0af447ba412158965e6" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.2.0/scala-xml_2.12-1.2.0.jar" + } + ] + }, + { + "organization" : "org.scala-lang", + "name" : "scala-reflect", + "version" : "2.12.12", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scala-reflect", + "path" : "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-reflect.jar" + } + ] + }, + { + "organization" : "com.fasterxml.jackson.core", + "name" : "jackson-annotations", + "version" : "2.9.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jackson-annotations", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar" + } + ] + }, + { + "organization" : "com.fasterxml.jackson.core", + "name" : "jackson-databind", + "version" : "2.9.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jackson-databind", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.0/jackson-databind-2.9.0.jar" + } + ] + }, + { + "organization" : "com.fasterxml.jackson.module", + "name" : "jackson-module-paranamer", + "version" : "2.9.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jackson-module-paranamer", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-paranamer/2.9.0/jackson-module-paranamer-2.9.0.jar" + } + ] + }, + { + "organization" : "com.jcraft", + "name" : "jsch", + "version" : "0.1.54", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jsch", + "checksum" : { + "type" : "sha1", + "digest" : "da3584329a263616e277e15462b387addd1b208d" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" + } + ] + }, + { + "organization" : "com.googlecode.javaewah", + "name" : "JavaEWAH", + "version" : "1.1.6", + "configurations" : "default", + "artifacts" : [ + { + "name" : "JavaEWAH", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" + } + ] + }, + { + "organization" : "org.apache.httpcomponents", + "name" : "httpclient", + "version" : "4.3.6", + "configurations" : "default", + "artifacts" : [ + { + "name" : "httpclient", + "checksum" : { + "type" : "sha1", + "digest" : "4c47155e3e6c9a41a28db36680b828ced53b8af4" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" + } + ] + }, + { + "organization" : "org.slf4j", + "name" : "slf4j-api", + "version" : "1.7.2", + "configurations" : "default", + "artifacts" : [ + { + "name" : "slf4j-api", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" + } + ] + }, + { + "organization" : "com.typesafe", + "name" : "config", + "version" : "1.2.0", + "configurations" : "default", + "artifacts" : [ + { + "name" : "config", + "checksum" : { + "type" : "sha1", + "digest" : "b2b6ad16307793a8e57f378de24447a4968c0ca3" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/config/1.2.0/config-1.2.0.jar" + } + ] + }, + { + "organization" : "org.scala-lang.modules", + "name" : "scala-parser-combinators_2.12", + "version" : "1.1.2", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scala-parser-combinators_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.12/1.1.2/scala-parser-combinators_2.12-1.1.2.jar" + } + ] + }, + { + "organization" : "io.circe", + "name" : "circe-parser_2.12", + "version" : "0.9.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "circe-parser_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "9af9ad5e8a2027a7d93a2b21578f727f73f55d79" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-parser_2.12/0.9.3/circe-parser_2.12-0.9.3.jar" + } + ] + }, + { + "organization" : "io.circe", + "name" : "circe-derivation_2.12", + "version" : "0.9.0-M3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "circe-derivation_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-derivation_2.12/0.9.0-M3/circe-derivation_2.12-0.9.0-M3.jar" + } + ] + }, + { + "organization" : "com.thoughtworks.paranamer", + "name" : "paranamer", + "version" : "2.8", + "configurations" : "default", + "artifacts" : [ + { + "name" : "paranamer", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar" + } + ] + }, + { + "organization" : "org.apache.httpcomponents", + "name" : "httpcore", + "version" : "4.3.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "httpcore", + "checksum" : { + "type" : "sha1", + "digest" : "f91b7a4aadc5cf486df6e4634748d7dd7a73f06d" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" + } + ] + }, + { + "organization" : "commons-logging", + "name" : "commons-logging", + "version" : "1.1.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "commons-logging", + "checksum" : { + "type" : "sha1", + "digest" : "f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" + } + ] + }, + { + "organization" : "commons-codec", + "name" : "commons-codec", + "version" : "1.6", + "configurations" : "default", + "artifacts" : [ + { + "name" : "commons-codec", + "checksum" : { + "type" : "sha1", + "digest" : "b7f0fc8f61ecadeb3695f0b9464755eee44374d4" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" + } + ] + }, + { + "organization" : "io.circe", + "name" : "circe-jawn_2.12", + "version" : "0.9.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "circe-jawn_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "8462d202404f578f09cc9b89d7dca57dd94b09e5" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-jawn_2.12/0.9.3/circe-jawn_2.12-0.9.3.jar" + } + ] + }, + { + "organization" : "io.circe", + "name" : "circe-core_2.12", + "version" : "0.9.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "circe-core_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "f4f8674788f571d840ed98fabf3237f72c86d1f0" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-core_2.12/0.9.3/circe-core_2.12-0.9.3.jar" + } + ] + }, + { + "organization" : "org.spire-math", + "name" : "jawn-parser_2.12", + "version" : "0.11.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "jawn-parser_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "e49f4a6294af0821d5348ad9f89a5ce8455fc1b3" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/spire-math/jawn-parser_2.12/0.11.1/jawn-parser_2.12-0.11.1.jar" + } + ] + }, + { + "organization" : "io.circe", + "name" : "circe-numbers_2.12", + "version" : "0.9.3", + "configurations" : "default", + "artifacts" : [ + { + "name" : "circe-numbers_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "e8b931a2a2438d9ba84ff5ecbfb2a4ac7249b0d8" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-numbers_2.12/0.9.3/circe-numbers_2.12-0.9.3.jar" + } + ] + }, + { + "organization" : "org.typelevel", + "name" : "cats-core_2.12", + "version" : "1.0.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "cats-core_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-core_2.12/1.0.1/cats-core_2.12-1.0.1.jar" + } + ] + }, + { + "organization" : "org.typelevel", + "name" : "cats-macros_2.12", + "version" : "1.0.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "cats-macros_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-macros_2.12/1.0.1/cats-macros_2.12-1.0.1.jar" + } + ] + }, + { + "organization" : "org.typelevel", + "name" : "cats-kernel_2.12", + "version" : "1.0.1", + "configurations" : "default", + "artifacts" : [ + { + "name" : "cats-kernel_2.12", + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-kernel_2.12/1.0.1/cats-kernel_2.12-1.0.1.jar" + } + ] + }, + { + "organization" : "org.typelevel", + "name" : "machinist_2.12", + "version" : "0.6.2", + "configurations" : "default", + "artifacts" : [ + { + "name" : "machinist_2.12", + "checksum" : { + "type" : "sha1", + "digest" : "a0e8521deafd0d24c18460104eee6ce4c679c779" + }, + "path" : "/Users/jordi/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/typelevel/machinist_2.12/0.6.2/machinist_2.12-0.6.2.jar" + } + ] + }, + { + "organization" : "org.scala-lang", + "name" : "scala-compiler", + "version" : "2.12.12", + "configurations" : "default", + "artifacts" : [ + { + "name" : "scala-compiler", + "path" : "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-compiler.jar" + } + ] + }, + { + "organization" : "org.scala-lang", + "name" : "scala-compiler", + "version" : "2.12.12", + "configurations" : "optional", + "artifacts" : [ + { + "name" : "scala-compiler", + "path" : "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-compiler.jar" + } + ] + }, + { + "organization" : "org.scala-lang", + "name" : "scala-library", + "version" : "2.12.12", + "configurations" : "optional", + "artifacts" : [ + { + "name" : "scala-library", + "path" : "/Users/jordi/.sbt/boot/scala-2.12.12/lib/scala-library.jar" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/scala/com/agilogy/srdb/ArgumentsSetter.scala b/src/main/scala/com/agilogy/srdb/ArgumentsSetter.scala index 3c6ef65..df2dc4e 100644 --- a/src/main/scala/com/agilogy/srdb/ArgumentsSetter.scala +++ b/src/main/scala/com/agilogy/srdb/ArgumentsSetter.scala @@ -9,15 +9,12 @@ trait ArgumentsSetter[T] { object ArgumentsSetter { - implicit val preparedStatementSetArgumentSetter = new ArgumentsSetter[PreparedStatement => Unit] { - override def set(ps: PreparedStatement, f: (PreparedStatement) => Unit): Unit = f(ps) - } + implicit val preparedStatementSetArgumentSetter: ArgumentsSetter[PreparedStatement => Unit] = + (ps: PreparedStatement, f: PreparedStatement => Unit) => f(ps) - implicit val argsSeqArgumentSetter = new ArgumentsSetter[Seq[Argument]] { - override def set(ps: PreparedStatement, args: Seq[Argument]): Unit = { - args.zipWithIndex.foreach { - case (arg, pos) => arg(ps, pos + 1) - } + implicit val argsSeqArgumentSetter: ArgumentsSetter[Seq[Argument]] = { (ps: PreparedStatement, args: Seq[Argument]) => + args.zipWithIndex.foreach { + case (arg, pos) => arg(ps, pos + 1) } } -} \ No newline at end of file +} diff --git a/src/main/scala/com/agilogy/srdb/ExecutableQuery.scala b/src/main/scala/com/agilogy/srdb/ExecutableQuery.scala index cf06959..cb05c3f 100644 --- a/src/main/scala/com/agilogy/srdb/ExecutableQuery.scala +++ b/src/main/scala/com/agilogy/srdb/ExecutableQuery.scala @@ -1,6 +1,6 @@ package com.agilogy.srdb -import java.sql.{ PreparedStatement, Connection } +import java.sql.{ Connection, PreparedStatement } trait ExecutableQuery[RT] { @@ -11,3 +11,6 @@ trait ExecutableQuery[RT] { def apply[T: ArgumentsSetter](conn: Connection, args: T): RT } +trait BatchUpdate { + def apply[T: ArgumentsSetter](conn: Connection, args: List[T]): scala.Array[Int] +} diff --git a/src/main/scala/com/agilogy/srdb/Srdb.scala b/src/main/scala/com/agilogy/srdb/Srdb.scala index 8ccfcc7..ffae9fc 100644 --- a/src/main/scala/com/agilogy/srdb/Srdb.scala +++ b/src/main/scala/com/agilogy/srdb/Srdb.scala @@ -1,13 +1,12 @@ package com.agilogy.srdb import java.sql._ -import javax.sql.DataSource - -import com.agilogy.srdb.exceptions.Context -import com.agilogy.srdb.exceptions._ import scala.util.control.NonFatal +import com.agilogy.srdb.exceptions.{ Context, _ } +import javax.sql.DataSource + class Srdb private[srdb] (exceptionTranslator: ExceptionTranslator) { def close(conn: Connection): Unit = { @@ -62,8 +61,9 @@ class Srdb private[srdb] (exceptionTranslator: ExceptionTranslator) { def select[T](query: String, fetchSize: FetchSize = DefaultFetchSize)(reader: ResultSet => T): ExecutableQuery[T] = new ExecutableQuery[T] { override def apply[AT: ArgumentsSetter](conn: Connection, args: AT): T = { - prepareStatement(conn, query, args, generatedKeys = false) { + prepareStatement(conn, query) { ps => + setArguments(ps, args, query) fetchSize match { case LimitedFetchSize(fs) => secure(Context.SetFetchSize(fs), query)(ps.setFetchSize(fs)) case _ => @@ -81,42 +81,56 @@ class Srdb private[srdb] (exceptionTranslator: ExceptionTranslator) { } def update(statement: String): ExecutableQuery[Int] = new ExecutableQuery[Int] { - override def apply[AT: ArgumentsSetter](conn: Connection, args: AT): Int = { - prepareStatement[Int, AT](conn, statement, args) { - ps => - secure(Context.ExecuteUpdate, statement) { - ps.executeUpdate() - } + override def apply[AT: ArgumentsSetter](conn: Connection, args: AT): Int = + prepareStatement(conn, statement) { ps => + setArguments(ps, args, statement) + secure(Context.ExecuteUpdate, statement) { ps.executeUpdate() } } - } + } + + def batchUpdate(statement: String): BatchUpdate = new BatchUpdate { + + override def apply[T: ArgumentsSetter](conn: Connection, args: List[T]): scala.Array[Int] = + prepareStatement(conn, statement) { ps => + args.foreach { arg => + setArguments(ps, arg, statement) + ps.addBatch() + } + secure(Context.ExecuteUpdate, statement) { ps.executeBatch() } + } + } def updateGeneratedKeys[RT](statement: String)(readKey: ResultSet => RT): ExecutableQuery[RT] = new ExecutableQuery[RT] { override def apply[AT: ArgumentsSetter](conn: Connection, args: AT): RT = { - prepareStatement(conn, statement, args, generatedKeys = true) { - ps: PreparedStatement => - secure(Context.ExecuteUpdate, statement) { - ps.executeUpdate() - } - val rs = secure(Context.GetGeneratedKeys, statement) { - ps.getGeneratedKeys - } - try { - if (rs.next) { - secure(Context.ReadGeneratedKeys, statement) { - readKey(rs) - } - } else { - throw new NoKeysGenerated(statement) + prepareStatement(conn, statement, generatedKeys = true) { ps: PreparedStatement => + setArguments(ps, args, statement) + executeUpdate(statement, ps) + val rs = secure(Context.GetGeneratedKeys, statement) { + ps.getGeneratedKeys + } + try { + if (rs.next) { + secure(Context.ReadGeneratedKeys, statement) { + readKey(rs) } - } finally { - rs.close() + } else { + throw NoKeysGenerated(statement) } + } finally { + rs.close() + } } } } + private def executeUpdate[RT, AT: ArgumentsSetter](statement: String, ps: PreparedStatement) = { + secure(Context.ExecuteUpdate, statement) { + ps.executeUpdate() + } + } + private def secure[T](context: Context, sql: String)(f: => T): T = { try { f @@ -136,15 +150,18 @@ class Srdb private[srdb] (exceptionTranslator: ExceptionTranslator) { } } - private def prepareStatement[T, AT: ArgumentsSetter](conn: Connection, query: String, arguments: AT, generatedKeys: Boolean = false)(f: (PreparedStatement => T)): T = { + private def setArguments[AT: ArgumentsSetter](ps: PreparedStatement, arguments: AT, query: String): Unit = { + secure(Context.SetArguments, query) { + implicitly[ArgumentsSetter[AT]].set(ps, arguments) + } + } + + private def prepareStatement[T](conn: Connection, query: String, generatedKeys: Boolean = false)(f: PreparedStatement => T): T = { val prepareStatementFlag = if (generatedKeys) Statement.RETURN_GENERATED_KEYS else Statement.NO_GENERATED_KEYS val s = secure(Context.PrepareStatement(generatedKeys), query) { conn.prepareStatement(query, prepareStatementFlag) } try { - secure(Context.SetArguments, query) { - implicitly[ArgumentsSetter[AT]].set(s, arguments) - } f(s) } finally { s.close()