diff --git a/backend/project.clj b/backend/project.clj index 037e744..f360ae8 100644 --- a/backend/project.clj +++ b/backend/project.clj @@ -1,4 +1,4 @@ -(defproject formswizard "0.2.1" #_"-SNAPSHOT" +(defproject formswizard "0.2.4" #_"-SNAPSHOT" :description "FormsWizard backend based on clojure+reitit+xtdb" :url "https://github.com/FormsWizard/formswizard" :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" diff --git a/backend/src/formswizard/lib/uuid.clj b/backend/src/formswizard/lib/uuid.clj new file mode 100644 index 0000000..a4a2474 --- /dev/null +++ b/backend/src/formswizard/lib/uuid.clj @@ -0,0 +1,4 @@ +(ns formswizard.lib.uuid) + +(defn uuid [] + (str (java.util.UUID/randomUUID))) diff --git a/backend/src/formswizard/model/project_state/cryptedData.clj b/backend/src/formswizard/model/project_state/cryptedData.clj index 155d64f..4aa8287 100644 --- a/backend/src/formswizard/model/project_state/cryptedData.clj +++ b/backend/src/formswizard/model/project_state/cryptedData.clj @@ -2,9 +2,10 @@ (:require [clojure.spec.alpha :as s])) (s/def ::data string?) ;; ArmoredPGPMessage -(s/def ::uuid string?) ;; UUID (s/def ::keyId string?) ;; PGPID (s/def ::armoredPublicKey string?) ;; ArmoredPubKey +(s/def ::id string?) -(s/def ::cryptedDatum (s/keys :req-un [::data ::uuid ::keyId ::armoredPublicKey])) -(s/def ::cryptedData (s/coll-of ::cryptedDatum)) +(s/def ::cryptedDatum (s/keys :req-un [::data ::keyId ::armoredPublicKey])) +(s/def ::cryptedDatumWithId (s/keys :req-un [::data ::keyId ::armoredPublicKey ::id])) +(s/def ::cryptedData (s/coll-of ::cryptedDatumWithId)) diff --git a/backend/src/formswizard/resolver/openapi/openapi.clj b/backend/src/formswizard/resolver/openapi/openapi.clj index cb33538..079d350 100644 --- a/backend/src/formswizard/resolver/openapi/openapi.clj +++ b/backend/src/formswizard/resolver/openapi/openapi.clj @@ -5,7 +5,7 @@ {:get {:no-doc true :openapi {:info {:title "FormsWizard OpenAPI" :description "openapi3-docs of FormsWizard backend" - :version "0.2.0"} + :version "0.2.4"} ;; used in /secure APIs below :components {:securitySchemes {"auth" {:type :apiKey :in :header diff --git a/backend/src/formswizard/resolver/openapi/swagger.clj b/backend/src/formswizard/resolver/openapi/swagger.clj index e370ba1..7ff5408 100644 --- a/backend/src/formswizard/resolver/openapi/swagger.clj +++ b/backend/src/formswizard/resolver/openapi/swagger.clj @@ -5,7 +5,7 @@ {:get {:no-doc true :swagger {:info {:title "FormsWizard SwaggerAPI" :description "swagger-docs of FormsWizard backend" - :version "0.2.0"} + :version "0.2.4"} ;; used in /secure APIs below :securityDefinitions {"auth" {:type :apiKey :in :header diff --git a/backend/src/formswizard/resolver/project_state/cryptedData.clj b/backend/src/formswizard/resolver/project_state/cryptedData.clj index e5616fd..0592b92 100644 --- a/backend/src/formswizard/resolver/project_state/cryptedData.clj +++ b/backend/src/formswizard/resolver/project_state/cryptedData.clj @@ -5,13 +5,18 @@ [formswizard.state :as state] [formswizard.lib.http :as http])) +(defn xt->id [m] + (-> (assoc m :id (:xt/id m)) + (dissoc :xt/id))) + (def route {:get {:summary "get project-state.cryptedData" :parameters {:query (s/keys :req-un [::api/formId])} :responses {200 {:body (s/keys :opt-un [::cryptedData/cryptedData])}} :handler (fn [{{{:keys [formId]} :query} :parameters}] {:status 200 - :body (state/getCryptedData formId)})} + :body (-> (state/getCryptedData formId) + (update :cryptedData #(map xt->id %)))})} :post {:summary "add project-state.cryptedData" :parameters {:body (s/keys :req-un [::api/formId ::cryptedData/cryptedDatum])} :responses http/ok-response diff --git a/backend/src/formswizard/state.clj b/backend/src/formswizard/state.clj index 0987eb9..9ec0607 100644 --- a/backend/src/formswizard/state.clj +++ b/backend/src/formswizard/state.clj @@ -1,5 +1,6 @@ (ns formswizard.state (:require [formswizard.db.state :refer [db_ctx]] + [formswizard.lib.uuid :refer [uuid]] [formswizard.model.project-state.keys :as keys] [formswizard.model.project-state.schema :as schema] [formswizard.model.project-state.cryptedData :as cryptedData] @@ -63,7 +64,7 @@ (defn addCryptedDatum! [formId cryptedDatum] ;(swap! state update-in [formId :cryptedData] conj cryptedDatum) ((:tx db_ctx) [[:xtdb.api/put (assoc cryptedDatum - :xt/id (str "cryptedDatum_" (:uuid cryptedDatum)) + :xt/id (str "cryptedDatum_" (uuid)) :xt/spec ::cryptedData/cryptedDatum :formId formId)]])) diff --git a/flake.lock b/flake.lock index 4ec6ef8..ae7c864 100644 --- a/flake.lock +++ b/flake.lock @@ -42,11 +42,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694304580, - "narHash": "sha256-5tIpNodDpEKT8mM/F5zCzWEAnidOg8eb1/x3SRaaBLs=", + "lastModified": 1694426803, + "narHash": "sha256-osusXQo0zkEqs502SNMffsKp1O9evpDM54A37MuyT2Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c8cf44c5b9481a4f093f1df3b8b7ba997a7c760", + "rev": "9a74ffb2ca1fc91c6ccc48bd3f8cbc1501bf7b8a", "type": "github" }, "original": { @@ -63,11 +63,11 @@ ] }, "locked": { - "lastModified": 1694458216, - "narHash": "sha256-3fXPJXTcAbhbvgZfwyKCx7I53a1nLy4Ghyc9uRq8/D0=", + "lastModified": 1694562434, + "narHash": "sha256-xI4+mqIJ+AgirJdxiyMP7prTuLxkasD2V1ri1HxE45Y=", "owner": "FormsWizard", "repo": "processing", - "rev": "be031eefdb73f684de41b77efbeac4902b077560", + "rev": "13a23fcdadc764d4cadec5f8049a87fdb7ae3c9c", "type": "github" }, "original": { diff --git a/frontend/package.json b/frontend/package.json index 4cc1d64..b5c77c0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,12 +1,11 @@ { "name": "@formswizard/app", - "version": "0.2.1", + "version": "0.2.4", "scripts": { "build": "turbo run build", "dev": "turbo run dev --concurrency 50", "lint": "turbo run lint", - "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "codegen": "npx openapi-typescript-codegen --input http://localhost:4000/openapi.json --output ./packages/api/codegen" + "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "devDependencies": { "@turbo/gen": "^1.10.13", diff --git a/frontend/packages/api/codegen/core/OpenAPI.ts b/frontend/packages/api/codegen/core/OpenAPI.ts index 8cf8c8c..a1b39ea 100644 --- a/frontend/packages/api/codegen/core/OpenAPI.ts +++ b/frontend/packages/api/codegen/core/OpenAPI.ts @@ -21,7 +21,7 @@ export type OpenAPIConfig = { export const OpenAPI: OpenAPIConfig = { BASE: '', - VERSION: '0.2.0', + VERSION: '0.2.4', WITH_CREDENTIALS: false, CREDENTIALS: 'include', TOKEN: undefined, diff --git a/frontend/packages/api/codegen/services/DefaultService.ts b/frontend/packages/api/codegen/services/DefaultService.ts index 0d92eb1..60f0690 100644 --- a/frontend/packages/api/codegen/services/DefaultService.ts +++ b/frontend/packages/api/codegen/services/DefaultService.ts @@ -155,9 +155,9 @@ export class DefaultService { ): CancelablePromise<{ cryptedData?: Array<{ data: string; - uuid: string; keyId: string; armoredPublicKey: string; + id: string; }>; }> { return __request(OpenAPI, { @@ -180,7 +180,6 @@ export class DefaultService { formId: string; cryptedDatum: { data: string; - uuid: string; keyId: string; armoredPublicKey: string; }; diff --git a/frontend/packages/api/package.json b/frontend/packages/api/package.json index 6747420..76956dd 100644 --- a/frontend/packages/api/package.json +++ b/frontend/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@formswizard/api", - "version": "0.2.1", + "version": "0.2.4", "description": "Typescript client for OpenAPI specification of FormsWizard-REST-API (using openapi-typescript-codegen)", "keywords": ["openapi", "swagger", "rest", "api", "typescript", "codegen", "forms", "wizard", "json", "schema", "jsonschema", "uischema"], "license": "MIT", @@ -16,7 +16,8 @@ "scripts": { "build": "tsup index.ts --format esm,cjs --dts --external react", "dev": "npm run build --watch", - "lint": "eslint \"**/*.ts*\"" + "lint": "eslint \"**/*.ts*\"", + "codegen": "npx openapi-typescript-codegen --input http://localhost:4000/openapi.json --output ./codegen" }, "devDependencies": { "eslint": "^8.48.0", diff --git a/frontend/packages/submit/Submit.tsx b/frontend/packages/submit/Submit.tsx index ae139a1..cc57847 100644 --- a/frontend/packages/submit/Submit.tsx +++ b/frontend/packages/submit/Submit.tsx @@ -71,7 +71,6 @@ function Form() { if (encrypted && keyId && armoredPublicKey) { const cryptedDatum = { data: encrypted, - uuid: crypto.randomUUID(), keyId, armoredPublicKey }; api.postProjectStateCryptedData({formId, cryptedDatum}) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 72067d3..97f7171 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1004,7 +1004,7 @@ importers: packages-processing/import: dependencies: '@formswizard/api': - specifier: ^0.2.1 + specifier: ^0.2.4 version: link:../../packages/api '@types/react': specifier: ^18.2.21