From 5d14f73ab00f3dc035f6ac2772f068a9a5093d0f Mon Sep 17 00:00:00 2001 From: matheusfrancisco Date: Sun, 7 Apr 2024 10:25:05 -0300 Subject: [PATCH 1/5] add: code submission endpoint --- deps.edn | 7 +++- dev/user.clj | 6 ++-- .../ports/http_in/submission.clj | 8 +++++ .../clj/contest/submission_runner/routes.clj | 22 ++++++++++-- .../submission_runner/wire/in/submission.clj | 28 +++++++++++++++ .../submission_runner/wire/out/submission.clj | 5 +++ .../submission_runner/{ => db}/db_test.clj | 2 +- .../submission_runner_test.clj | 35 +++++++++++++++++++ .../clj/contest/submission_runner/util.clj | 34 ++++++++++++++---- .../contest/submission_runner/wallet_test.clj | 20 +---------- 10 files changed, 133 insertions(+), 34 deletions(-) create mode 100644 src/codes/clj/contest/submission_runner/ports/http_in/submission.clj create mode 100644 src/codes/clj/contest/submission_runner/wire/in/submission.clj create mode 100644 src/codes/clj/contest/submission_runner/wire/out/submission.clj rename test/integration/codes/clj/contest/submission_runner/{ => db}/db_test.clj (96%) create mode 100644 test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj diff --git a/deps.edn b/deps.edn index 8dc198a..b9d15ba 100644 --- a/deps.edn +++ b/deps.edn @@ -7,7 +7,12 @@ metosin/reitit-swagger {:mvn/version "0.6.0"} org.postgresql/postgresql {:mvn/version "42.7.3"}} :aliases - {:dev {:extra-paths ["test" "dev"]} + {:dev {:extra-paths ["test" "dev"] + :extra-deps {org.clojars.bigsy/pg-embedded-clj {:mvn/version "1.0.1"} + lambdaisland/kaocha {:mvn/version "1.88.1376"} + lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"} + nubank/matcher-combinators {:mvn/version "3.9.1"} + nubank/state-flow {:mvn/version "5.15.0"}}} :test {:extra-paths ["test"] :extra-deps {org.clojars.bigsy/pg-embedded-clj {:mvn/version "1.0.1"} lambdaisland/kaocha {:mvn/version "1.88.1376"} diff --git a/dev/user.clj b/dev/user.clj index 80c2c7d..4dafcd2 100644 --- a/dev/user.clj +++ b/dev/user.clj @@ -1,7 +1,7 @@ (ns user - (:require [malli.dev :as dev] - [malli.dev.pretty :as pretty] - [microservice-boilerplate.server])) + (:require [codes.clj.contest.submission-runner.server] + [malli.dev :as dev] + [malli.dev.pretty :as pretty])) (defn start [] diff --git a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj new file mode 100644 index 0000000..fb53ec6 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj @@ -0,0 +1,8 @@ +(ns codes.clj.contest.submission-runner.ports.http-in.submission) + +(defn submit-code-execution! + [{submission :parameters + components :components}] + {:status 201 + :body {:id (random-uuid)}}) + diff --git a/src/codes/clj/contest/submission_runner/routes.clj b/src/codes/clj/contest/submission_runner/routes.clj index 66ecc06..6ea9d7e 100644 --- a/src/codes/clj/contest/submission_runner/routes.clj +++ b/src/codes/clj/contest/submission_runner/routes.clj @@ -1,13 +1,16 @@ (ns codes.clj.contest.submission-runner.routes (:require [codes.clj.contest.submission-runner.ports.http-in :as ports.http-in] + [codes.clj.contest.submission-runner.ports.http-in.submission :as ports.http-in.submission] [codes.clj.contest.submission-runner.schemas.wire-in :as schemas.wire-in] + [codes.clj.contest.submission-runner.wire.in.submission :as wire.in.submission] + [codes.clj.contest.submission-runner.wire.out.submission :as wire.out.submission] [reitit.swagger :as swagger])) (def routes [["/swagger.json" {:get {:no-doc true - :swagger {:info {:title "btc-wallet" - :description "small sample using the microservice-boilerplate"}} + :swagger {:info {:title "Submission Runner" + :description "Submission Runner API"}} :handler (swagger/create-swagger-handler)}}] ["/wallet" @@ -32,4 +35,17 @@ :responses {201 {:body schemas.wire-in/WalletEntry} 400 {:body :string} 500 {:body :string}} - :handler ports.http-in/do-withdrawal!}}]]]) + :handler ports.http-in/do-withdrawal!}}]] + + ;; submitions routes + ["/code" + {:swagger {:tags ["Code Runner"]}} + ["/submission" + {:post {:summary "Submit to execution your code" + :parameters {:body wire.in.submission/Submission} + :responses {201 {:body wire.out.submission/SubmissionResult} + 400 {:body :string} + 500 {:body :string}} + :handler ports.http-in.submission/submit-code-execution!}}]]]) + + diff --git a/src/codes/clj/contest/submission_runner/wire/in/submission.clj b/src/codes/clj/contest/submission_runner/wire/in/submission.clj new file mode 100644 index 0000000..7025ed1 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/wire/in/submission.clj @@ -0,0 +1,28 @@ +(ns codes.clj.contest.submission-runner.wire.in.submission) + +(def Submission + [:map + [:code string?] + [:language [:enum :clojure]] + [:test-cases [:map-of :keyword + [:map + [:input :any] + [:output :any]]]]]) + +(comment + (require '[malli.generator :as m]) + (require '[malli.core :as m.core]) + (m/generate Submission) + (m.core/validate + Submission + {:code "(ns runner + (:require [clojure.test :refer [use-fixtures]]) + (defn my-sum [a b] (+ a b)))" + :language :clojure + :test-cases {:case-1 {:input "(my-sum 1 2)" + :output 3} + :case-2 {:input "(my-sum 2 3)" + :output 5}}}) + +; + ) diff --git a/src/codes/clj/contest/submission_runner/wire/out/submission.clj b/src/codes/clj/contest/submission_runner/wire/out/submission.clj new file mode 100644 index 0000000..cc33002 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/wire/out/submission.clj @@ -0,0 +1,5 @@ +(ns codes.clj.contest.submission-runner.wire.out.submission) + +(def SubmissionResult + [:map + [:id uuid?]]) diff --git a/test/integration/codes/clj/contest/submission_runner/db_test.clj b/test/integration/codes/clj/contest/submission_runner/db/db_test.clj similarity index 96% rename from test/integration/codes/clj/contest/submission_runner/db_test.clj rename to test/integration/codes/clj/contest/submission_runner/db/db_test.clj index e2319bd..bcb7795 100644 --- a/test/integration/codes/clj/contest/submission_runner/db_test.clj +++ b/test/integration/codes/clj/contest/submission_runner/db/db_test.clj @@ -1,4 +1,4 @@ -(ns integration.codes.clj.contest.submission-runner.db-test +(ns integration.codes.clj.contest.submission-runner.db.db-test (:require [clojure.test :refer [use-fixtures]] [codes.clj.contest.submission-runner.db :as db] [com.stuartsierra.component :as component] diff --git a/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj new file mode 100644 index 0000000..098860f --- /dev/null +++ b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj @@ -0,0 +1,35 @@ +(ns integration.codes.clj.contest.submission-runner.submission-runner-test + (:require [clojure.test :refer [use-fixtures]] + [integration.codes.clj.contest.submission-runner.util :as util] + [matcher-combinators.matchers :as matchers] + [parenthesin.helpers.malli :as helpers.malli] + [parenthesin.helpers.state-flow.server.pedestal :as state-flow.server] + [state-flow.api :refer [defflow]] + [state-flow.assertions.matcher-combinators :refer [match?]] + [state-flow.core :as state-flow :refer [flow]])) + +(use-fixtures :once helpers.malli/with-intrumentation) + +(defflow + flow-integration-wallet-test + {:init util/start-system! + :cleanup util/stop-system! + :fail-fast? true} + + (flow "should receive an submission" + [:let [submission-input {:code "(ns runner + (:require [clojure.test :refer [use-fixtures]]) + (defn my-sum [a b] (+ a b)))" + :language :clojure + :test-cases {:case-1 {:input "(my-sum 1 2)" + :output 3} + :case-2 {:input "(my-sum 2 3)" + :output 5}}}] + return (state-flow.server/request! {:method :post + :uri "/code/submission" + :body submission-input})] + + (match? (matchers/embeds {:status 201 + :body {:id string?}}) + return))) + diff --git a/test/integration/codes/clj/contest/submission_runner/util.clj b/test/integration/codes/clj/contest/submission_runner/util.clj index 1332414..120fb0a 100644 --- a/test/integration/codes/clj/contest/submission_runner/util.clj +++ b/test/integration/codes/clj/contest/submission_runner/util.clj @@ -1,18 +1,38 @@ (ns integration.codes.clj.contest.submission-runner.util - (:require [com.stuartsierra.component :as component] + (:require [codes.clj.contest.submission-runner.routes :as routes] + [com.stuartsierra.component :as component] + [parenthesin.components.config.aero :as components.config] + [parenthesin.components.db.jdbc-hikari :as components.database] + [parenthesin.components.http.clj-http :as components.http] + [parenthesin.components.router.reitit-malli :as components.router] + [parenthesin.components.server.reitit-pedestal-jetty :as components.webserver] [parenthesin.helpers.logs :as logs] [parenthesin.helpers.migrations :as migrations] [pg-embedded-clj.core :as pg-emb])) +(defn- create-and-start-components! [] + (component/start-system + (component/system-map + :config (components.config/new-config) + :http (components.http/new-http-mock {}) + :router (components.router/new-router routes/routes) + :database (component/using (components.database/new-database) + [:config]) + :webserver (component/using (components.webserver/new-webserver) + [:config :http :router :database])))) + (defn start-system! - [system-start-fn] - (fn [] - (logs/setup :info :auto) - (pg-emb/init-pg) - (migrations/migrate (migrations/configuration-with-db)) - (system-start-fn))) + ([] + ((start-system! create-and-start-components!))) + ([system-start-fn] + (fn [] + (logs/setup :info :auto) + (pg-emb/init-pg) + (migrations/migrate (migrations/configuration-with-db)) + (system-start-fn)))) (defn stop-system! [system] (component/stop-system system) (pg-emb/halt-pg!)) + diff --git a/test/integration/codes/clj/contest/submission_runner/wallet_test.clj b/test/integration/codes/clj/contest/submission_runner/wallet_test.clj index 4c046ac..466a4e5 100644 --- a/test/integration/codes/clj/contest/submission_runner/wallet_test.clj +++ b/test/integration/codes/clj/contest/submission_runner/wallet_test.clj @@ -1,14 +1,7 @@ (ns integration.codes.clj.contest.submission-runner.wallet-test (:require [clojure.test :refer [use-fixtures]] - [codes.clj.contest.submission-runner.routes :as routes] - [com.stuartsierra.component :as component] [integration.codes.clj.contest.submission-runner.util :as util] [matcher-combinators.matchers :as matchers] - [parenthesin.components.config.aero :as components.config] - [parenthesin.components.db.jdbc-hikari :as components.database] - [parenthesin.components.http.clj-http :as components.http] - [parenthesin.components.router.reitit-malli :as components.router] - [parenthesin.components.server.reitit-pedestal-jetty :as components.webserver] [parenthesin.helpers.malli :as helpers.malli] [parenthesin.helpers.state-flow.http :as state-flow.http] [parenthesin.helpers.state-flow.server.pedestal :as state-flow.server] @@ -18,20 +11,9 @@ (use-fixtures :once helpers.malli/with-intrumentation) -(defn- create-and-start-components! [] - (component/start-system - (component/system-map - :config (components.config/new-config) - :http (components.http/new-http-mock {}) - :router (components.router/new-router routes/routes) - :database (component/using (components.database/new-database) - [:config]) - :webserver (component/using (components.webserver/new-webserver) - [:config :http :router :database])))) - (defflow flow-integration-wallet-test - {:init (util/start-system! create-and-start-components!) + {:init util/start-system! :cleanup util/stop-system! :fail-fast? true} (flow "should interact with system" From bcd7cef0aa13ac6a38ee7117f87d90070e2bff73 Mon Sep 17 00:00:00 2001 From: matheusfrancisco Date: Sun, 7 Apr 2024 10:37:36 -0300 Subject: [PATCH 2/5] fix lint --- .../contest/submission_runner/ports/http_in/submission.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj index fb53ec6..82760cc 100644 --- a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj +++ b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj @@ -1,8 +1,8 @@ (ns codes.clj.contest.submission-runner.ports.http-in.submission) (defn submit-code-execution! - [{submission :parameters - components :components}] + [{_submission :parameters + _components :components}] {:status 201 :body {:id (random-uuid)}}) From 60349981af4e84ad1b343cd5f9fd7706869365ec Mon Sep 17 00:00:00 2001 From: matheusfrancisco Date: Mon, 8 Apr 2024 20:53:00 -0300 Subject: [PATCH 3/5] add: adpater, and controller to submit code execution --- deps.edn | 27 ++++++------ .../submission_runner/adapters/submission.clj | 12 +++++ .../controllers/submission.clj | 5 +++ .../ports/http_in/submission.clj | 12 +++-- .../submission_runner/wire/db/submission.clj | 13 ++++++ .../submission_runner/wire/in/submission.clj | 2 + .../submission_runner_test.clj | 11 +++-- .../adapters/submission_test.clj | 44 +++++++++++++++++++ 8 files changed, 106 insertions(+), 20 deletions(-) create mode 100644 src/codes/clj/contest/submission_runner/adapters/submission.clj create mode 100644 src/codes/clj/contest/submission_runner/controllers/submission.clj create mode 100644 src/codes/clj/contest/submission_runner/wire/db/submission.clj create mode 100644 test/unit/codes/clj/contest/submission_runner/adapters/submission_test.clj diff --git a/deps.edn b/deps.edn index b9d15ba..3e1ddb6 100644 --- a/deps.edn +++ b/deps.edn @@ -1,24 +1,25 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.11.2"} + :deps {org.clojure/clojure {:mvn/version "1.11.2"} com.github.parenthesin/components {:mvn/version "0.2.5" :exclusions [prismatic/schema]} - com.github.seancorfield/honeysql {:mvn/version "2.6.1126"} - metosin/malli {:mvn/version "0.15.0"} - metosin/reitit-swagger {:mvn/version "0.6.0"} - org.postgresql/postgresql {:mvn/version "42.7.3"}} + org.clj-commons/digest {:mvn/version "1.4.100"} + com.github.seancorfield/honeysql {:mvn/version "2.6.1126"} + metosin/malli {:mvn/version "0.15.0"} + metosin/reitit-swagger {:mvn/version "0.6.0"} + org.postgresql/postgresql {:mvn/version "42.7.3"}} :aliases {:dev {:extra-paths ["test" "dev"] :extra-deps {org.clojars.bigsy/pg-embedded-clj {:mvn/version "1.0.1"} - lambdaisland/kaocha {:mvn/version "1.88.1376"} - lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"} - nubank/matcher-combinators {:mvn/version "3.9.1"} - nubank/state-flow {:mvn/version "5.15.0"}}} + lambdaisland/kaocha {:mvn/version "1.88.1376"} + lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"} + nubank/matcher-combinators {:mvn/version "3.9.1"} + nubank/state-flow {:mvn/version "5.15.0"}}} :test {:extra-paths ["test"] :extra-deps {org.clojars.bigsy/pg-embedded-clj {:mvn/version "1.0.1"} - lambdaisland/kaocha {:mvn/version "1.88.1376"} - lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"} - nubank/matcher-combinators {:mvn/version "3.9.1"} - nubank/state-flow {:mvn/version "5.15.0"}} + lambdaisland/kaocha {:mvn/version "1.88.1376"} + lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"} + nubank/matcher-combinators {:mvn/version "3.9.1"} + nubank/state-flow {:mvn/version "5.15.0"}} :main-opts ["-m" "kaocha.runner"]} :clojure-lsp {:replace-deps {com.github.clojure-lsp/clojure-lsp-standalone {:mvn/version "2024.03.13-13.11.00"}} diff --git a/src/codes/clj/contest/submission_runner/adapters/submission.clj b/src/codes/clj/contest/submission_runner/adapters/submission.clj new file mode 100644 index 0000000..0078ff7 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/adapters/submission.clj @@ -0,0 +1,12 @@ +(ns codes.clj.contest.submission-runner.adapters.submission + (:require [codes.clj.contest.submission-runner.wire.db.submission :as wire.db.submission] + [codes.clj.contest.submission-runner.wire.in.submission :as wire.in.submission])) + +(defn wire->internal + {:malli/schema [:=> [:cat wire.in.submission/Submission] wire.db.submission/Submission]} + [wire] + {:submission/id (-> wire :id) + :submission/code (-> wire :code) + :submission/code_hash (-> wire :code-hash) + :submission/language (-> wire :language) + :submission/test_cases (-> wire :test-cases)}) diff --git a/src/codes/clj/contest/submission_runner/controllers/submission.clj b/src/codes/clj/contest/submission_runner/controllers/submission.clj new file mode 100644 index 0000000..102a4e7 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/controllers/submission.clj @@ -0,0 +1,5 @@ +(ns codes.clj.contest.submission-runner.controllers.submission) + +(defn submit-code-execution! + [submission] + (random-uuid)) diff --git a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj index 82760cc..0634592 100644 --- a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj +++ b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj @@ -1,8 +1,12 @@ -(ns codes.clj.contest.submission-runner.ports.http-in.submission) +(ns codes.clj.contest.submission-runner.ports.http-in.submission + (:require [codes.clj.contest.submission-runner.adapters.submission :as adapters.submission] + [codes.clj.contest.submission-runner.controllers.submission :as controllers.submission])) (defn submit-code-execution! - [{_submission :parameters + [{{submission :body} :parameters _components :components}] - {:status 201 - :body {:id (random-uuid)}}) + (let [id (-> submission + (adapters.submission/wire->internal) + (controllers.submission/submit-code-execution!))] + {:status 201})) diff --git a/src/codes/clj/contest/submission_runner/wire/db/submission.clj b/src/codes/clj/contest/submission_runner/wire/db/submission.clj new file mode 100644 index 0000000..cc5ec92 --- /dev/null +++ b/src/codes/clj/contest/submission_runner/wire/db/submission.clj @@ -0,0 +1,13 @@ +(ns codes.clj.contest.submission-runner.wire.db.submission) + +(def Submission + [:map + [:submission/id string?] + [:submission/code string?] + [:submission/code_hash string?] + [:submission/language [:enum :clojure]] + [:submission/test_cases + [:map-of :keyword + [:map + [:input :any] + [:output :any]]]]]) diff --git a/src/codes/clj/contest/submission_runner/wire/in/submission.clj b/src/codes/clj/contest/submission_runner/wire/in/submission.clj index 7025ed1..6c33fe2 100644 --- a/src/codes/clj/contest/submission_runner/wire/in/submission.clj +++ b/src/codes/clj/contest/submission_runner/wire/in/submission.clj @@ -2,7 +2,9 @@ (def Submission [:map + [:id string?] [:code string?] + [:code-hash string?] [:language [:enum :clojure]] [:test-cases [:map-of :keyword [:map diff --git a/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj index 098860f..957cd93 100644 --- a/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj +++ b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj @@ -3,6 +3,7 @@ [integration.codes.clj.contest.submission-runner.util :as util] [matcher-combinators.matchers :as matchers] [parenthesin.helpers.malli :as helpers.malli] + [clj-commons.digest :as digest] [parenthesin.helpers.state-flow.server.pedestal :as state-flow.server] [state-flow.api :refer [defflow]] [state-flow.assertions.matcher-combinators :refer [match?]] @@ -17,9 +18,13 @@ :fail-fast? true} (flow "should receive an submission" - [:let [submission-input {:code "(ns runner - (:require [clojure.test :refer [use-fixtures]]) - (defn my-sum [a b] (+ a b)))" + [:let [id (random-uuid) + code "(ns runner + (:require [clojure.string :as str])) + (defn my-sum [a b] (+ a b))" + submission-input {:id id + :code code + :code-hash (digest/md5 code) :language :clojure :test-cases {:case-1 {:input "(my-sum 1 2)" :output 3} diff --git a/test/unit/codes/clj/contest/submission_runner/adapters/submission_test.clj b/test/unit/codes/clj/contest/submission_runner/adapters/submission_test.clj new file mode 100644 index 0000000..15d7f77 --- /dev/null +++ b/test/unit/codes/clj/contest/submission_runner/adapters/submission_test.clj @@ -0,0 +1,44 @@ +(ns unit.codes.clj.contest.submission-runner.adapters.submission-test + (:require [clj-commons.digest :as digest] + [clojure.test :refer [deftest is testing use-fixtures]] + [clojure.test.check.clojure-test :refer [defspec]] + [clojure.test.check.properties :as properties] + [codes.clj.contest.submission-runner.adapters.submission :as adapters.submission] + [codes.clj.contest.submission-runner.wire.db.submission :as wire.db.submission] + [codes.clj.contest.submission-runner.wire.in.submission :as wire.in.submission] + [malli.core :as m] + [malli.generator :as mg] + [matcher-combinators.test :refer [match?]] + [parenthesin.helpers.malli :as helpers.malli])) + +(use-fixtures :once helpers.malli/with-intrumentation) + +(defspec wirer->internal-spec 50 + (properties/for-all [code (mg/generator wire.in.submission/Submission)] + (m/validate wire.db.submission/Submission (adapters.submission/wire->internal code)))) + +(def id (random-uuid)) +(def code "(ns runner + (:require [clojure.string :as str])) + (defn my-sum [a b] (+ a b))") + +(def code-submission {:id (str id) + :code code + :code-hash (digest/md5 code) + :language :clojure + :test-cases {:case-1 {:input "(my-sum 1 2)" + :output 3} + :case-2 {:input "(my-sum 2 3)" + :output 5}}}) + +(deftest wire->internal + (testing "adpater to db submission" + (is (match? {:submission/id (str id) + :submission/code code + :submission/code_hash (digest/md5 code) + :submission/language :clojure + :submission/test_cases {:case-1 {:input "(my-sum 1 2)" + :output 3} + :case-2 {:input "(my-sum 2 3)" + :output 5}}} + (adapters.submission/wire->internal code-submission))))) From 5a07925c6643ba8392c5190d73d64df26d2f4621 Mon Sep 17 00:00:00 2001 From: matheusfrancisco Date: Mon, 8 Apr 2024 21:05:14 -0300 Subject: [PATCH 4/5] fix: integration test --- .../submission_runner/adapters/submission.clj | 12 ++++++------ .../submission_runner/ports/http_in/submission.clj | 2 +- .../submission_runner/submission_runner_test.clj | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/codes/clj/contest/submission_runner/adapters/submission.clj b/src/codes/clj/contest/submission_runner/adapters/submission.clj index 0078ff7..11a6ea4 100644 --- a/src/codes/clj/contest/submission_runner/adapters/submission.clj +++ b/src/codes/clj/contest/submission_runner/adapters/submission.clj @@ -4,9 +4,9 @@ (defn wire->internal {:malli/schema [:=> [:cat wire.in.submission/Submission] wire.db.submission/Submission]} - [wire] - {:submission/id (-> wire :id) - :submission/code (-> wire :code) - :submission/code_hash (-> wire :code-hash) - :submission/language (-> wire :language) - :submission/test_cases (-> wire :test-cases)}) + [{:keys [id code code-hash language test-cases]}] + {:submission/id id + :submission/code code + :submission/code_hash code-hash + :submission/language language + :submission/test_cases test-cases}) diff --git a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj index 0634592..047a98c 100644 --- a/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj +++ b/src/codes/clj/contest/submission_runner/ports/http_in/submission.clj @@ -8,5 +8,5 @@ (let [id (-> submission (adapters.submission/wire->internal) (controllers.submission/submit-code-execution!))] - {:status 201})) + {:status 201 :body {:id id}})) diff --git a/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj index 957cd93..108fd80 100644 --- a/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj +++ b/test/integration/codes/clj/contest/submission_runner/submission_runner_test.clj @@ -1,9 +1,9 @@ (ns integration.codes.clj.contest.submission-runner.submission-runner-test - (:require [clojure.test :refer [use-fixtures]] + (:require [clj-commons.digest :as digest] + [clojure.test :refer [use-fixtures]] [integration.codes.clj.contest.submission-runner.util :as util] [matcher-combinators.matchers :as matchers] [parenthesin.helpers.malli :as helpers.malli] - [clj-commons.digest :as digest] [parenthesin.helpers.state-flow.server.pedestal :as state-flow.server] [state-flow.api :refer [defflow]] [state-flow.assertions.matcher-combinators :refer [match?]] From b7cdb3e1b526703462726fcd2e0b4d585f9d75f2 Mon Sep 17 00:00:00 2001 From: matheusfrancisco Date: Mon, 8 Apr 2024 21:13:44 -0300 Subject: [PATCH 5/5] unused binding --- .../clj/contest/submission_runner/controllers/submission.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codes/clj/contest/submission_runner/controllers/submission.clj b/src/codes/clj/contest/submission_runner/controllers/submission.clj index 102a4e7..2909275 100644 --- a/src/codes/clj/contest/submission_runner/controllers/submission.clj +++ b/src/codes/clj/contest/submission_runner/controllers/submission.clj @@ -1,5 +1,5 @@ (ns codes.clj.contest.submission-runner.controllers.submission) (defn submit-code-execution! - [submission] + [_submission] (random-uuid))