datahike-browser-tests 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +405 -0
- package/.circleci/scripts/gen_ci.clj +194 -0
- package/.cirrus.yml +60 -0
- package/.clj-kondo/babashka/sci/config.edn +1 -0
- package/.clj-kondo/babashka/sci/sci/core.clj +9 -0
- package/.clj-kondo/config.edn +95 -0
- package/.dir-locals.el +2 -0
- package/.github/FUNDING.yml +3 -0
- package/.github/ISSUE_TEMPLATE/1-bug-report.yml +68 -0
- package/.github/ISSUE_TEMPLATE/2-feature-request.yml +28 -0
- package/.github/ISSUE_TEMPLATE/config.yml +6 -0
- package/.github/pull_request_template.md +24 -0
- package/.github/workflows/native-image.yml +84 -0
- package/LICENSE +203 -0
- package/README.md +273 -0
- package/bb/deps.edn +9 -0
- package/bb/resources/github-fingerprints +3 -0
- package/bb/resources/native-image-tests/run-bb-pod-tests.clj +162 -0
- package/bb/resources/native-image-tests/run-libdatahike-tests +12 -0
- package/bb/resources/native-image-tests/run-native-image-tests +74 -0
- package/bb/resources/native-image-tests/run-python-tests +22 -0
- package/bb/resources/native-image-tests/testconfig.attr-refs.edn +6 -0
- package/bb/resources/native-image-tests/testconfig.edn +5 -0
- package/bb/resources/template/.settings/org.eclipse.jdt.apt.core.prefs +2 -0
- package/bb/resources/template/.settings/org.eclipse.jdt.core.prefs +9 -0
- package/bb/resources/template/.settings/org.eclipse.m2e.core.prefs +4 -0
- package/bb/resources/template/pom.xml +22 -0
- package/bb/src/tools/build.clj +132 -0
- package/bb/src/tools/clj_kondo.clj +32 -0
- package/bb/src/tools/deploy.clj +26 -0
- package/bb/src/tools/examples.clj +19 -0
- package/bb/src/tools/npm.clj +100 -0
- package/bb/src/tools/python.clj +14 -0
- package/bb/src/tools/release.clj +94 -0
- package/bb/src/tools/test.clj +148 -0
- package/bb/src/tools/version.clj +47 -0
- package/bb.edn +269 -0
- package/benchmark/src/benchmark/cli.clj +195 -0
- package/benchmark/src/benchmark/compare.clj +157 -0
- package/benchmark/src/benchmark/config.clj +316 -0
- package/benchmark/src/benchmark/measure.clj +187 -0
- package/benchmark/src/benchmark/store.clj +190 -0
- package/benchmark/test/benchmark/measure_test.clj +156 -0
- package/build.clj +30 -0
- package/config.edn +49 -0
- package/deps.edn +138 -0
- package/dev/sandbox.clj +82 -0
- package/dev/sandbox.cljs +127 -0
- package/dev/sandbox_benchmarks.clj +27 -0
- package/dev/sandbox_client.clj +87 -0
- package/dev/sandbox_transact_bench.clj +109 -0
- package/dev/user.clj +79 -0
- package/doc/README.md +96 -0
- package/doc/adl/README.md +6 -0
- package/doc/adl/adr-000-adr.org +28 -0
- package/doc/adl/adr-001-attribute-references.org +15 -0
- package/doc/adl/adr-002-build-tooling.org +54 -0
- package/doc/adl/adr-003-db-meta-data.md +52 -0
- package/doc/adl/adr-004-github-flow.md +40 -0
- package/doc/adl/adr-XYZ-template.md +30 -0
- package/doc/adl/index.org +3 -0
- package/doc/assets/datahike-logo.svg +3 -0
- package/doc/assets/datahiking-invoice.org +85 -0
- package/doc/assets/hhtree2.png +0 -0
- package/doc/assets/network_topology.svg +624 -0
- package/doc/assets/perf.png +0 -0
- package/doc/assets/schema_mindmap.mm +132 -0
- package/doc/assets/schema_mindmap.svg +970 -0
- package/doc/assets/temporal_index.mm +74 -0
- package/doc/backend-development.md +78 -0
- package/doc/bb-pod.md +89 -0
- package/doc/benchmarking.md +360 -0
- package/doc/bindings/edn-conversion.md +383 -0
- package/doc/cli.md +162 -0
- package/doc/cljdoc.edn +27 -0
- package/doc/cljs-support.md +133 -0
- package/doc/config.md +406 -0
- package/doc/contributing.md +114 -0
- package/doc/datalog-vs-sql.md +210 -0
- package/doc/datomic_differences.md +109 -0
- package/doc/development/pull-api-ns.md +186 -0
- package/doc/development/pull-frame-state-diagram.jpg +0 -0
- package/doc/distributed.md +566 -0
- package/doc/entity_spec.md +92 -0
- package/doc/gc.md +273 -0
- package/doc/java-api.md +808 -0
- package/doc/javascript-api.md +421 -0
- package/doc/libdatahike.md +86 -0
- package/doc/logging_and_error_handling.md +43 -0
- package/doc/norms.md +66 -0
- package/doc/schema-migration.md +85 -0
- package/doc/schema.md +287 -0
- package/doc/storage-backends.md +363 -0
- package/doc/store-id-refactoring.md +596 -0
- package/doc/time_variance.md +325 -0
- package/doc/unstructured.md +167 -0
- package/doc/versioning.md +261 -0
- package/examples/basic/README.md +19 -0
- package/examples/basic/deps.edn +6 -0
- package/examples/basic/docker-compose.yml +13 -0
- package/examples/basic/src/examples/core.clj +60 -0
- package/examples/basic/src/examples/schema.clj +155 -0
- package/examples/basic/src/examples/store.clj +60 -0
- package/examples/basic/src/examples/time_travel.clj +185 -0
- package/examples/java/.settings/org.eclipse.core.resources.prefs +3 -0
- package/examples/java/.settings/org.eclipse.jdt.apt.core.prefs +2 -0
- package/examples/java/.settings/org.eclipse.jdt.core.prefs +9 -0
- package/examples/java/.settings/org.eclipse.m2e.core.prefs +4 -0
- package/examples/java/README.md +162 -0
- package/examples/java/pom.xml +62 -0
- package/examples/java/src/main/java/examples/QuickStart.java +115 -0
- package/examples/java/src/main/java/examples/SchemaExample.java +148 -0
- package/examples/java/src/main/java/examples/TimeTravelExample.java +121 -0
- package/flake.lock +27 -0
- package/flake.nix +27 -0
- package/http-server/datahike/http/middleware.clj +75 -0
- package/http-server/datahike/http/server.clj +269 -0
- package/java/src/datahike/java/Database.java +274 -0
- package/java/src/datahike/java/Datahike.java +281 -0
- package/java/src/datahike/java/DatahikeGeneratedTest.java +349 -0
- package/java/src/datahike/java/DatahikeTest.java +370 -0
- package/java/src/datahike/java/EDN.java +170 -0
- package/java/src/datahike/java/IEntity.java +11 -0
- package/java/src/datahike/java/Keywords.java +161 -0
- package/java/src/datahike/java/SchemaFlexibility.java +52 -0
- package/java/src/datahike/java/Util.java +219 -0
- package/karma.conf.js +19 -0
- package/libdatahike/compile-cpp +7 -0
- package/libdatahike/src/datahike/impl/LibDatahikeBase.java +203 -0
- package/libdatahike/src/datahike/impl/libdatahike.clj +59 -0
- package/libdatahike/src/test_cpp.cpp +61 -0
- package/npm-package/PUBLISHING.md +140 -0
- package/npm-package/README.md +226 -0
- package/npm-package/package.template.json +34 -0
- package/npm-package/test-isomorphic.ts +281 -0
- package/npm-package/test.js +557 -0
- package/npm-package/typescript-test.ts +70 -0
- package/package.json +16 -0
- package/pydatahike/README.md +569 -0
- package/pydatahike/pyproject.toml +91 -0
- package/pydatahike/setup.py +42 -0
- package/pydatahike/src/datahike/__init__.py +134 -0
- package/pydatahike/src/datahike/_native.py +250 -0
- package/pydatahike/src/datahike/_version.py +2 -0
- package/pydatahike/src/datahike/database.py +722 -0
- package/pydatahike/src/datahike/edn.py +311 -0
- package/pydatahike/src/datahike/py.typed +0 -0
- package/pydatahike/tests/conftest.py +17 -0
- package/pydatahike/tests/test_basic.py +170 -0
- package/pydatahike/tests/test_database.py +51 -0
- package/pydatahike/tests/test_edn_conversion.py +299 -0
- package/pydatahike/tests/test_query.py +99 -0
- package/pydatahike/tests/test_schema.py +55 -0
- package/resources/clj-kondo.exports/io.replikativ/datahike/config.edn +5 -0
- package/resources/example_server.edn +4 -0
- package/shadow-cljs.edn +56 -0
- package/src/data_readers.clj +7 -0
- package/src/datahike/api/impl.cljc +176 -0
- package/src/datahike/api/specification.cljc +633 -0
- package/src/datahike/api/types.cljc +261 -0
- package/src/datahike/api.cljc +41 -0
- package/src/datahike/array.cljc +99 -0
- package/src/datahike/cli.clj +166 -0
- package/src/datahike/cljs.cljs +6 -0
- package/src/datahike/codegen/cli.clj +406 -0
- package/src/datahike/codegen/clj_kondo.clj +291 -0
- package/src/datahike/codegen/java.clj +403 -0
- package/src/datahike/codegen/naming.cljc +33 -0
- package/src/datahike/codegen/native.clj +559 -0
- package/src/datahike/codegen/pod.clj +488 -0
- package/src/datahike/codegen/python.clj +838 -0
- package/src/datahike/codegen/report.clj +55 -0
- package/src/datahike/codegen/typescript.clj +262 -0
- package/src/datahike/codegen/validation.clj +145 -0
- package/src/datahike/config.cljc +294 -0
- package/src/datahike/connections.cljc +16 -0
- package/src/datahike/connector.cljc +265 -0
- package/src/datahike/constants.cljc +142 -0
- package/src/datahike/core.cljc +297 -0
- package/src/datahike/datom.cljc +459 -0
- package/src/datahike/db/interface.cljc +119 -0
- package/src/datahike/db/search.cljc +305 -0
- package/src/datahike/db/transaction.cljc +937 -0
- package/src/datahike/db/utils.cljc +338 -0
- package/src/datahike/db.cljc +956 -0
- package/src/datahike/experimental/unstructured.cljc +126 -0
- package/src/datahike/experimental/versioning.cljc +172 -0
- package/src/datahike/externs.js +31 -0
- package/src/datahike/gc.cljc +69 -0
- package/src/datahike/http/client.clj +188 -0
- package/src/datahike/http/writer.clj +79 -0
- package/src/datahike/impl/entity.cljc +218 -0
- package/src/datahike/index/interface.cljc +93 -0
- package/src/datahike/index/persistent_set.cljc +469 -0
- package/src/datahike/index/utils.cljc +44 -0
- package/src/datahike/index.cljc +32 -0
- package/src/datahike/js/api.cljs +172 -0
- package/src/datahike/js/api_macros.clj +22 -0
- package/src/datahike/js.cljs +163 -0
- package/src/datahike/json.cljc +209 -0
- package/src/datahike/lru.cljc +146 -0
- package/src/datahike/migrate.clj +39 -0
- package/src/datahike/norm/norm.clj +245 -0
- package/src/datahike/online_gc.cljc +252 -0
- package/src/datahike/pod.clj +155 -0
- package/src/datahike/pull_api.cljc +325 -0
- package/src/datahike/query.cljc +1945 -0
- package/src/datahike/query_stats.cljc +88 -0
- package/src/datahike/readers.cljc +62 -0
- package/src/datahike/remote.cljc +218 -0
- package/src/datahike/schema.cljc +228 -0
- package/src/datahike/schema_cache.cljc +42 -0
- package/src/datahike/spec.cljc +101 -0
- package/src/datahike/store.cljc +80 -0
- package/src/datahike/tools.cljc +308 -0
- package/src/datahike/transit.cljc +80 -0
- package/src/datahike/writer.cljc +239 -0
- package/src/datahike/writing.cljc +362 -0
- package/src/deps.cljs +1 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree/insert.cljc +76 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree/upsert.cljc +128 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree.cljc +213 -0
- package/test/datahike/backward_compatibility_test/src/backward_test.clj +37 -0
- package/test/datahike/integration_test/config_record_file_test.clj +14 -0
- package/test/datahike/integration_test/config_record_test.clj +14 -0
- package/test/datahike/integration_test/depr_config_uri_test.clj +15 -0
- package/test/datahike/integration_test/return_map_test.clj +62 -0
- package/test/datahike/integration_test.cljc +67 -0
- package/test/datahike/norm/norm_test.clj +124 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/004-tx-data-and-tx-fn-test.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/01-transact-basic-characters.edn +2 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/02 add occupation.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/checksums.edn +12 -0
- package/test/datahike/norm/resources/simple-test/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/simple-test/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/simple-test/checksums.edn +4 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/checksums.edn +6 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/second/004-tx-data-and-tx-fn-test.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/second/checksums.edn +2 -0
- package/test/datahike/norm/resources/tx-fn-test/first/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/tx-fn-test/first/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/tx-fn-test/first/checksums.edn +4 -0
- package/test/datahike/norm/resources/tx-fn-test/second/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/tx-fn-test/second/checksums.edn +2 -0
- package/test/datahike/test/api_test.cljc +895 -0
- package/test/datahike/test/array_test.cljc +40 -0
- package/test/datahike/test/attribute_refs/datoms_test.cljc +140 -0
- package/test/datahike/test/attribute_refs/db_test.cljc +42 -0
- package/test/datahike/test/attribute_refs/differences_test.cljc +515 -0
- package/test/datahike/test/attribute_refs/entity_test.cljc +89 -0
- package/test/datahike/test/attribute_refs/pull_api_test.cljc +320 -0
- package/test/datahike/test/attribute_refs/query_find_specs_test.cljc +59 -0
- package/test/datahike/test/attribute_refs/query_fns_test.cljc +130 -0
- package/test/datahike/test/attribute_refs/query_interop_test.cljc +47 -0
- package/test/datahike/test/attribute_refs/query_not_test.cljc +193 -0
- package/test/datahike/test/attribute_refs/query_or_test.cljc +137 -0
- package/test/datahike/test/attribute_refs/query_pull_test.cljc +156 -0
- package/test/datahike/test/attribute_refs/query_rules_test.cljc +176 -0
- package/test/datahike/test/attribute_refs/query_test.cljc +241 -0
- package/test/datahike/test/attribute_refs/temporal_search.cljc +22 -0
- package/test/datahike/test/attribute_refs/transact_test.cljc +220 -0
- package/test/datahike/test/attribute_refs/utils.cljc +128 -0
- package/test/datahike/test/cache_test.cljc +38 -0
- package/test/datahike/test/components_test.cljc +92 -0
- package/test/datahike/test/config_test.cljc +158 -0
- package/test/datahike/test/core_test.cljc +105 -0
- package/test/datahike/test/datom_test.cljc +44 -0
- package/test/datahike/test/db_test.cljc +54 -0
- package/test/datahike/test/entity_spec_test.cljc +159 -0
- package/test/datahike/test/entity_test.cljc +103 -0
- package/test/datahike/test/explode_test.cljc +143 -0
- package/test/datahike/test/filter_test.cljc +75 -0
- package/test/datahike/test/gc_test.cljc +159 -0
- package/test/datahike/test/http/server_test.clj +192 -0
- package/test/datahike/test/http/writer_test.clj +86 -0
- package/test/datahike/test/ident_test.cljc +32 -0
- package/test/datahike/test/index_test.cljc +345 -0
- package/test/datahike/test/insert.cljc +125 -0
- package/test/datahike/test/java_bindings_test.clj +6 -0
- package/test/datahike/test/listen_test.cljc +41 -0
- package/test/datahike/test/lookup_refs_test.cljc +266 -0
- package/test/datahike/test/lru_test.cljc +27 -0
- package/test/datahike/test/migrate_test.clj +297 -0
- package/test/datahike/test/model/core.cljc +376 -0
- package/test/datahike/test/model/invariant.cljc +142 -0
- package/test/datahike/test/model/rng.cljc +82 -0
- package/test/datahike/test/model_test.clj +217 -0
- package/test/datahike/test/nodejs_test.cljs +262 -0
- package/test/datahike/test/online_gc_test.cljc +475 -0
- package/test/datahike/test/pod_test.clj +369 -0
- package/test/datahike/test/pull_api_test.cljc +474 -0
- package/test/datahike/test/purge_test.cljc +144 -0
- package/test/datahike/test/query_aggregates_test.cljc +101 -0
- package/test/datahike/test/query_find_specs_test.cljc +52 -0
- package/test/datahike/test/query_fns_test.cljc +523 -0
- package/test/datahike/test/query_interop_test.cljc +47 -0
- package/test/datahike/test/query_not_test.cljc +189 -0
- package/test/datahike/test/query_or_test.cljc +158 -0
- package/test/datahike/test/query_pull_test.cljc +147 -0
- package/test/datahike/test/query_rules_test.cljc +248 -0
- package/test/datahike/test/query_stats_test.cljc +218 -0
- package/test/datahike/test/query_test.cljc +984 -0
- package/test/datahike/test/schema_test.cljc +424 -0
- package/test/datahike/test/specification_test.cljc +30 -0
- package/test/datahike/test/store_test.cljc +78 -0
- package/test/datahike/test/stress_test.cljc +57 -0
- package/test/datahike/test/time_variance_test.cljc +518 -0
- package/test/datahike/test/tools_test.clj +134 -0
- package/test/datahike/test/transact_test.cljc +518 -0
- package/test/datahike/test/tuples_test.cljc +564 -0
- package/test/datahike/test/unstructured_test.cljc +291 -0
- package/test/datahike/test/upsert_impl_test.cljc +205 -0
- package/test/datahike/test/upsert_test.cljc +363 -0
- package/test/datahike/test/utils.cljc +110 -0
- package/test/datahike/test/validation_test.cljc +48 -0
- package/test/datahike/test/versioning_test.cljc +56 -0
- package/test/datahike/test.cljc +66 -0
- package/tests.edn +24 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
(ns sandbox-client
|
|
2
|
+
(:require [datahike.http.client :refer :all]
|
|
3
|
+
[datahike.http.server :refer [start-server stop-server]]))
|
|
4
|
+
|
|
5
|
+
(comment
|
|
6
|
+
(def config {:port 3333
|
|
7
|
+
:join? false
|
|
8
|
+
:dev-mode false
|
|
9
|
+
:token "securerandompassword"})
|
|
10
|
+
|
|
11
|
+
(def server (start-server config))
|
|
12
|
+
|
|
13
|
+
(stop-server server)
|
|
14
|
+
|
|
15
|
+
(def new-config (create-database {:schema-flexibility :read
|
|
16
|
+
:remote-peer {:backend :datahike-server
|
|
17
|
+
:url "http://localhost:3333"
|
|
18
|
+
:token "securerandompassword"
|
|
19
|
+
:format :transit}}))
|
|
20
|
+
|
|
21
|
+
(def conn (connect new-config))
|
|
22
|
+
|
|
23
|
+
(:remote-peer conn)
|
|
24
|
+
|
|
25
|
+
(def test-db @conn)
|
|
26
|
+
|
|
27
|
+
(:remote-peer test-db)
|
|
28
|
+
|
|
29
|
+
(db conn)
|
|
30
|
+
|
|
31
|
+
(history test-db)
|
|
32
|
+
|
|
33
|
+
(:remote-peer (history test-db))
|
|
34
|
+
|
|
35
|
+
(type test-db)
|
|
36
|
+
|
|
37
|
+
(transact conn [{:name "Peter" :age 42}])
|
|
38
|
+
|
|
39
|
+
(def test-db (db conn))
|
|
40
|
+
|
|
41
|
+
(q '[:find ?n ?a
|
|
42
|
+
:in $1 $2 $3
|
|
43
|
+
:where
|
|
44
|
+
[$1 ?e :age ?a]
|
|
45
|
+
[$1 ?e :name ?n]]
|
|
46
|
+
test-db (history test-db) (entity test-db 1))
|
|
47
|
+
|
|
48
|
+
(query-stats '[:find ?n ?a :in $ $2 :where [?e :age ?a] [?e :name ?n]] test-db test-db)
|
|
49
|
+
|
|
50
|
+
(pull test-db '[:*] 1)
|
|
51
|
+
|
|
52
|
+
(pull-many test-db '[:*] [1 2])
|
|
53
|
+
|
|
54
|
+
(datoms test-db :eavt)
|
|
55
|
+
|
|
56
|
+
(seek-datoms test-db :eavt)
|
|
57
|
+
|
|
58
|
+
(metrics test-db)
|
|
59
|
+
|
|
60
|
+
(schema test-db)
|
|
61
|
+
|
|
62
|
+
(reverse-schema test-db)
|
|
63
|
+
|
|
64
|
+
;; no export because of function passing limitation
|
|
65
|
+
(listen conn (fn [x] x))
|
|
66
|
+
|
|
67
|
+
(filter test-db "even?") ;; returns client-db, not filtered DB
|
|
68
|
+
|
|
69
|
+
(is-filtered (filter test-db "even?")) ;; false
|
|
70
|
+
|
|
71
|
+
(entity test-db 1)
|
|
72
|
+
|
|
73
|
+
(entity-db (entity test-db 1))
|
|
74
|
+
|
|
75
|
+
(since test-db (java.util.Date.))
|
|
76
|
+
|
|
77
|
+
(as-of test-db (java.util.Date.))
|
|
78
|
+
|
|
79
|
+
(with test-db [{:name "Petra" :age 43}]) ;; TODO works but returns same DB as input
|
|
80
|
+
|
|
81
|
+
(db-with test-db [{:name "Petra" :age 43}])
|
|
82
|
+
|
|
83
|
+
(tempid test-db)
|
|
84
|
+
|
|
85
|
+
(release conn)
|
|
86
|
+
|
|
87
|
+
(delete-database new-config))
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
(ns sandbox-transact-bench
|
|
2
|
+
(:require [datahike.api :as d]))
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
(comment
|
|
6
|
+
(log/set-level! :warn)
|
|
7
|
+
|
|
8
|
+
;; if profiling
|
|
9
|
+
;;(require '[clj-async-profiler.core :as prof])
|
|
10
|
+
;;
|
|
11
|
+
|
|
12
|
+
;; ;; The resulting flamegraph will be stored in /tmp/clj-async-profiler/results/
|
|
13
|
+
;; ;; You can view the SVG directly from there or start a local webserver:
|
|
14
|
+
;; (prof/serve-files 8080) ; Serve on port 8080
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
(defn bench
|
|
18
|
+
[{:keys [avet? update? decreasing? one-transaction?]} counter]
|
|
19
|
+
(let [schema [{:db/ident :name
|
|
20
|
+
:db/cardinality :db.cardinality/one
|
|
21
|
+
:db/index true
|
|
22
|
+
:db/unique :db.unique/identity
|
|
23
|
+
:db/valueType :db.type/string}
|
|
24
|
+
{:db/ident :sibling
|
|
25
|
+
:db/cardinality :db.cardinality/many
|
|
26
|
+
:db/valueType :db.type/ref}
|
|
27
|
+
{:db/ident :age
|
|
28
|
+
:db/cardinality :db.cardinality/one
|
|
29
|
+
:db/index avet?
|
|
30
|
+
:db/valueType :db.type/long}]
|
|
31
|
+
|
|
32
|
+
cfg {:store {:backend :mem :id "sandbox" :path "/tmp/benchplay"}
|
|
33
|
+
:keep-history? true
|
|
34
|
+
:schema-flexibility :read
|
|
35
|
+
:initial-tx []}
|
|
36
|
+
|
|
37
|
+
_ (d/delete-database cfg)
|
|
38
|
+
_ (d/create-database cfg)
|
|
39
|
+
conn (d/connect cfg)]
|
|
40
|
+
|
|
41
|
+
(d/transact conn schema)
|
|
42
|
+
|
|
43
|
+
(println "==== avet?" avet? "---- update?" update? "---- decreasing?" decreasing? "--- one-transaction?" one-transaction? " iter. num.:" counter)
|
|
44
|
+
(if one-transaction?
|
|
45
|
+
(let [txs (vec (for [i (range counter)]
|
|
46
|
+
[:db/add (if update? 1000 (inc i)) :age (if decreasing? (- counter i) i)]))]
|
|
47
|
+
(time
|
|
48
|
+
(d/transact conn txs)))
|
|
49
|
+
;; Multiple transactions
|
|
50
|
+
(time
|
|
51
|
+
(doall
|
|
52
|
+
(for [i (range counter)]
|
|
53
|
+
(d/transact conn [[:db/add (if update? 1000 (inc i)) :age (if decreasing? (- counter i) i)]])))))))
|
|
54
|
+
|
|
55
|
+
(defn bench-all [counter]
|
|
56
|
+
(bench {:avet? false
|
|
57
|
+
:update? false
|
|
58
|
+
:decreasing? false
|
|
59
|
+
:one-transaction? true}
|
|
60
|
+
counter)
|
|
61
|
+
|
|
62
|
+
(bench {:avet? false
|
|
63
|
+
:update? true
|
|
64
|
+
:decreasing? true
|
|
65
|
+
:one-transaction? true}
|
|
66
|
+
counter)
|
|
67
|
+
|
|
68
|
+
(bench {:avet? true
|
|
69
|
+
:update? false
|
|
70
|
+
:decreasing? false
|
|
71
|
+
:one-transaction? true}
|
|
72
|
+
counter)
|
|
73
|
+
|
|
74
|
+
(bench {:avet? true
|
|
75
|
+
:update? true
|
|
76
|
+
:decreasing? true
|
|
77
|
+
:one-transaction? true}
|
|
78
|
+
counter))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
(for [i (range 3)]
|
|
82
|
+
(do
|
|
83
|
+
(bench-all 100000)
|
|
84
|
+
(prn " ========================== DONE ============")))
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
(doall
|
|
88
|
+
(for [avet [false true]
|
|
89
|
+
decreasing [false true]
|
|
90
|
+
update [true false]
|
|
91
|
+
_ (range 3)]
|
|
92
|
+
(bench {:avet? avet
|
|
93
|
+
:update? update
|
|
94
|
+
:decreasing? decreasing
|
|
95
|
+
:one-transaction? true}
|
|
96
|
+
100000)))
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
;; if profiling
|
|
100
|
+
;; (prof/profile (d/transact conn txs))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
(d/q '[:find ?e ?a
|
|
104
|
+
:in $ ?a
|
|
105
|
+
:where [?e :age ?a]]
|
|
106
|
+
(d/history @conn) ;; use @conn if no history
|
|
107
|
+
35)
|
|
108
|
+
|
|
109
|
+
(d/datoms @conn :eavt 35))
|
package/dev/user.clj
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
(ns user
|
|
2
|
+
(:require [datahike.api :as d]
|
|
3
|
+
[hashp.core]))
|
|
4
|
+
|
|
5
|
+
(comment
|
|
6
|
+
|
|
7
|
+
(def schema [{:db/ident :name
|
|
8
|
+
:db/cardinality :db.cardinality/one
|
|
9
|
+
:db/index true
|
|
10
|
+
:db/unique :db.unique/identity
|
|
11
|
+
:db/valueType :db.type/string}
|
|
12
|
+
{:db/ident :sibling
|
|
13
|
+
:db/cardinality :db.cardinality/many
|
|
14
|
+
:db/valueType :db.type/ref}
|
|
15
|
+
{:db/ident :age
|
|
16
|
+
:db/cardinality :db.cardinality/one
|
|
17
|
+
:db/valueType :db.type/long}])
|
|
18
|
+
|
|
19
|
+
(def cfg {:store {:backend :mem :id "sandbox"}
|
|
20
|
+
:keep-history? true
|
|
21
|
+
:schema-flexibility :write
|
|
22
|
+
:attribute-refs? true})
|
|
23
|
+
|
|
24
|
+
(def conn (do
|
|
25
|
+
(d/delete-database cfg)
|
|
26
|
+
(d/create-database cfg)
|
|
27
|
+
(d/connect cfg)))
|
|
28
|
+
|
|
29
|
+
(d/transact conn schema)
|
|
30
|
+
|
|
31
|
+
(d/datoms @conn :avet)
|
|
32
|
+
(d/datoms @conn :aevt)
|
|
33
|
+
(d/datoms @conn :eavt)
|
|
34
|
+
|
|
35
|
+
(:max-eid @conn)
|
|
36
|
+
|
|
37
|
+
(d/transact conn [{:name "Alice"
|
|
38
|
+
:age 25}])
|
|
39
|
+
|
|
40
|
+
(d/transact conn [{:name "Bob"
|
|
41
|
+
:age 25}])
|
|
42
|
+
|
|
43
|
+
(d/transact conn [{:name "Charlie"
|
|
44
|
+
:age 45
|
|
45
|
+
:sibling [[:name "Alice"] [:name "Bob"]]}])
|
|
46
|
+
|
|
47
|
+
(d/q '[:find ?e ?a ?v ?t
|
|
48
|
+
:in $ ?a
|
|
49
|
+
:where
|
|
50
|
+
[?e :name ?v ?t]
|
|
51
|
+
[?e :age ?a]]
|
|
52
|
+
@conn
|
|
53
|
+
25)
|
|
54
|
+
|
|
55
|
+
(d/q '[:find ?e ?at ?v
|
|
56
|
+
:where
|
|
57
|
+
[?e ?a ?v]
|
|
58
|
+
[?a :db/ident ?at]]
|
|
59
|
+
@conn)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
(d/q '[:find ?e :where [?e :name "Alice"]] @conn)
|
|
63
|
+
|
|
64
|
+
(do (d/transact conn (vec (repeatedly 5000 (fn [] {:age (long (rand-int 1000))
|
|
65
|
+
:name (str (rand-int 1000))}))))
|
|
66
|
+
true)
|
|
67
|
+
|
|
68
|
+
(d/q {:query '[:find ?e ?v
|
|
69
|
+
:in $
|
|
70
|
+
:where [?e :name ?v]]
|
|
71
|
+
:args [@conn]
|
|
72
|
+
:offset 0
|
|
73
|
+
:limit 10})
|
|
74
|
+
|
|
75
|
+
(do (d/q {:query '[:find ?v1 ?v2
|
|
76
|
+
:in $
|
|
77
|
+
:where [?e1 :name ?v1] [?e2 :name ?v2]]
|
|
78
|
+
:args [@conn]})
|
|
79
|
+
nil))
|
package/doc/README.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Datahike Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the Datahike documentation! This index organizes all documentation by topic and user level.
|
|
4
|
+
|
|
5
|
+
## 🚀 Getting Started
|
|
6
|
+
|
|
7
|
+
New to Datahike? Start here:
|
|
8
|
+
|
|
9
|
+
- **[Main README](../README.md)** - Project overview, installation, and quick start
|
|
10
|
+
- **[Why Datalog?](./datalog-vs-sql.md)** - Query comparisons and when to use Datalog
|
|
11
|
+
- **[Configuration](./config.md)** - Database configuration options
|
|
12
|
+
- **[Schema Flexibility](./schema.md)** - Schema-on-read vs schema-on-write
|
|
13
|
+
|
|
14
|
+
## 📚 Core Concepts
|
|
15
|
+
|
|
16
|
+
Essential concepts for working with Datahike:
|
|
17
|
+
|
|
18
|
+
- **[Time Variance](./time_variance.md)** - Time-travel queries (as-of, history, since), audit trails, and GDPR-compliant purging
|
|
19
|
+
- **[Storage Backends](./storage-backends.md)** - Choosing the right backend for your needs (file, memory, PostgreSQL, etc.)
|
|
20
|
+
- **[Garbage Collection](./gc.md)** - Reclaim storage by removing old database snapshots
|
|
21
|
+
- **[Entity Spec](./entity_spec.md)** - Entity API and specifications
|
|
22
|
+
- **[Logging and Error Handling](./logging_and_error_handling.md)** - Debugging and error management
|
|
23
|
+
|
|
24
|
+
## 🔧 Language Bindings (Beta)
|
|
25
|
+
|
|
26
|
+
Datahike supports multiple languages and platforms:
|
|
27
|
+
|
|
28
|
+
### JVM Languages
|
|
29
|
+
- **[Java API](./java-api.md)** - Fluent builder API, automatic collection conversion, comprehensive bindings
|
|
30
|
+
- Examples: [`examples/java/`](../examples/java/)
|
|
31
|
+
- Status: **Beta** - Functional and tested, but may receive breaking changes
|
|
32
|
+
|
|
33
|
+
### JavaScript/TypeScript
|
|
34
|
+
- **[JavaScript API](./javascript-api.md)** - Promise-based API for Node.js and browsers
|
|
35
|
+
- npm: `npm install datahike@next`
|
|
36
|
+
- Status: **Beta** - Functional and tested, but may receive breaking changes
|
|
37
|
+
|
|
38
|
+
### ClojureScript
|
|
39
|
+
- **[ClojureScript Support](./cljs-support.md)** - Async operations, Node.js, IndexedDB, and browser backends
|
|
40
|
+
- Backends: Memory, IndexedDB, TieredStore, File (Node.js)
|
|
41
|
+
- Status: **Beta** - Functional, please try it out and provide feedback
|
|
42
|
+
|
|
43
|
+
### Python
|
|
44
|
+
- **[Python Bindings](../pydatahike/README.md)** - High-level Pythonic API with automatic EDN conversion
|
|
45
|
+
- Status: **Beta** - Functional and tested, but may receive breaking changes
|
|
46
|
+
|
|
47
|
+
### CLI & Shell
|
|
48
|
+
- **[CLI (dthk)](./cli.md)** - Native command-line tool compiled with GraalVM
|
|
49
|
+
- Features: Instant startup, file backend, scriptable
|
|
50
|
+
- Status: **Beta** - Functional and tested, but command structure may change
|
|
51
|
+
|
|
52
|
+
- **[Babashka Pod](./bb-pod.md)** - Shell scripting with Datahike
|
|
53
|
+
- Integration: Native pod for Babashka
|
|
54
|
+
- Status: **Beta** - Functional but not yet used in production
|
|
55
|
+
|
|
56
|
+
### Native Libraries
|
|
57
|
+
- **[libdatahike](./libdatahike.md)** - C/C++ native bindings for embedding in non-JVM applications
|
|
58
|
+
- Use cases: Embedding in C/C++/Rust/Go applications
|
|
59
|
+
- Status: **Beta** - Functional and tested, but API may change
|
|
60
|
+
|
|
61
|
+
- **[EDN Conversion Rules](./bindings/edn-conversion.md)** - How data types map between languages
|
|
62
|
+
|
|
63
|
+
## 🏗️ Advanced Features
|
|
64
|
+
|
|
65
|
+
For experienced users building production systems:
|
|
66
|
+
|
|
67
|
+
- **[Distributed Architecture](./distributed.md)** - Distributed Index Space and real-time sync with Kabel
|
|
68
|
+
- **[Versioning](./versioning.md)** - Git-like branching and merging (beta)
|
|
69
|
+
- **[Norms](./norms.md)** - Database migration system
|
|
70
|
+
- **[Unstructured Input Support](./unstructured.md)** - Schema inference from JSON/EDN (experimental)
|
|
71
|
+
|
|
72
|
+
## 🔍 Reference
|
|
73
|
+
|
|
74
|
+
- **[Differences to Datomic](./datomic_differences.md)** - API compatibility and differences
|
|
75
|
+
- **[Benchmarking](./benchmarking.md)** - Performance testing and optimization
|
|
76
|
+
|
|
77
|
+
## 🛠️ Development
|
|
78
|
+
|
|
79
|
+
Contributing to Datahike:
|
|
80
|
+
|
|
81
|
+
- **[Contributing Guide](./contributing.md)** - How to contribute to the project
|
|
82
|
+
- **[Backend Development](./backend-development.md)** - Creating custom storage backends
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Feature Maturity Levels
|
|
87
|
+
|
|
88
|
+
- **Stable** - Production-ready, API unlikely to change
|
|
89
|
+
- **Beta** - Tested and functional, but API may receive changes
|
|
90
|
+
- **Experimental** - Try it out, API likely to change significantly
|
|
91
|
+
|
|
92
|
+
## Need Help?
|
|
93
|
+
|
|
94
|
+
- 💬 **[Discussions](https://github.com/replikativ/datahike/discussions)** - Ask questions and share ideas
|
|
95
|
+
- 🐛 **[Issues](https://github.com/replikativ/datahike/issues)** - Report bugs or request features
|
|
96
|
+
- 📖 **[API Docs](https://cljdoc.org/d/org.replikativ/datahike)** - Complete API reference on cljdoc
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Architecture Decision List
|
|
2
|
+
This log captures all architectural decisions that are made throughout the
|
|
3
|
+
development process. Have a look [here](https://github.com/joelparkerhenderson/architecture_decision_record) for more information.
|
|
4
|
+
|
|
5
|
+
See [template](./adr-XYZ-template.md) for the record.
|
|
6
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#+TITLE: Architecture Decision Record Template
|
|
2
|
+
* Context
|
|
3
|
+
Datahike enters a stage where architectural decisions have larger consequences
|
|
4
|
+
for the marketing and use since more and more people are integrating it into
|
|
5
|
+
their products. Therefore a documentation for all decisions should be written.
|
|
6
|
+
* Options
|
|
7
|
+
** Write architecture decision records
|
|
8
|
+
Use the approach of [[https://github.com/joelparkerhenderson/architecture_decision_record][Architecture Decsion Records]] to document the decision-making.
|
|
9
|
+
*** Pro
|
|
10
|
+
- transparent decision-making
|
|
11
|
+
- architectural docs
|
|
12
|
+
- recorded discussion on options
|
|
13
|
+
*** Contra
|
|
14
|
+
- overhead of writings
|
|
15
|
+
- longer process for decision-making
|
|
16
|
+
- needs practice
|
|
17
|
+
- needs some supervision in the beginning
|
|
18
|
+
* Status
|
|
19
|
+
Pending
|
|
20
|
+
* Decision
|
|
21
|
+
All architectural decisions have to be recorded in this folder with ascending
|
|
22
|
+
numbering. An overview of sections to be discussed is found in the [[file:./adr-XYZ-template.org][template file]].
|
|
23
|
+
* Consequences
|
|
24
|
+
- all members need to write an ADR for a new feature
|
|
25
|
+
- ADR are the artifacts of our transparent decision-making
|
|
26
|
+
- ADL can be found in the Datahike repository
|
|
27
|
+
- All open discussions on architecutre can be followed and open questions can be
|
|
28
|
+
addressed
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#+TITLE: Attribute References
|
|
2
|
+
* Context
|
|
3
|
+
- attributes in Datoms are represented and stored as keywords
|
|
4
|
+
- in Datomic all of the attributes are stores as references to the schema
|
|
5
|
+
definition of the attribute
|
|
6
|
+
* Options
|
|
7
|
+
** Bootstrap system schema in index
|
|
8
|
+
*** Pro
|
|
9
|
+
*** Contra
|
|
10
|
+
** Create system refs only in record
|
|
11
|
+
*** Pro
|
|
12
|
+
*** Contra
|
|
13
|
+
* Status
|
|
14
|
+
* Decision
|
|
15
|
+
* Consequences
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#+TITLE: Reconsider build and dependency resolution tooling
|
|
2
|
+
#+DATE: 2020-09-22
|
|
3
|
+
|
|
4
|
+
* Status
|
|
5
|
+
|
|
6
|
+
Accepted
|
|
7
|
+
|
|
8
|
+
* Context
|
|
9
|
+
|
|
10
|
+
Embracing Clojurescript support for the replikativ libraries again also means
|
|
11
|
+
that there are some changes to the used tooling for dependency resolution and
|
|
12
|
+
compilation. Shadow CLJS is the current default tool for compiling ClojureScript
|
|
13
|
+
projects. Shadow CLJS supports Leiningen and Clojure CLI Tools.
|
|
14
|
+
|
|
15
|
+
Leiningen was for a long time the default dependency resolution and build tool
|
|
16
|
+
for most people in the Clojure community and still has widespread adoption. All
|
|
17
|
+
the replikativ libraries are using it and it worked fine for a long time. But
|
|
18
|
+
Clojure CLI Tools see a lot of adoption throughout the community and people see
|
|
19
|
+
it as the successor to Leiningen.
|
|
20
|
+
|
|
21
|
+
The Clojurescript build process took some work from the community to figure out
|
|
22
|
+
a simple way. For new projects Clojure CLI Tools and Shadow CLJS are probably
|
|
23
|
+
the defaults for new projects in that space. replikativ has a legacy in using
|
|
24
|
+
Leiningen. Shadow CLJS supports dependency resolution from both tools so
|
|
25
|
+
dependencies only need to be specified once.
|
|
26
|
+
|
|
27
|
+
** Advantages of Clojure CLI tools:
|
|
28
|
+
- simpler
|
|
29
|
+
- faster start (leiningen starts a JVM for itself as well)
|
|
30
|
+
- community is gravitating towards it
|
|
31
|
+
- commit-shas for dependency resolution
|
|
32
|
+
|
|
33
|
+
** Advantages of Leiningen:
|
|
34
|
+
- not alpha
|
|
35
|
+
- uberjar built in
|
|
36
|
+
- deploy built in
|
|
37
|
+
- adoption in replikativ already there
|
|
38
|
+
- no pom.xml needed
|
|
39
|
+
- diversity of plugins available
|
|
40
|
+
|
|
41
|
+
It seems that there is no obstacle in our way to switch to Clojure CLI tools
|
|
42
|
+
but there might be some unknowns on our way. We could stick with Leiningen
|
|
43
|
+
as well and avoid some work that is not yet needed.
|
|
44
|
+
|
|
45
|
+
* Decision
|
|
46
|
+
|
|
47
|
+
The decision is to use Clojure CLI tools in the future and to adopt it step by
|
|
48
|
+
step. First is the hasch library and the other Clojurescript-using libraries
|
|
49
|
+
like konserve, superv.async and incognito.
|
|
50
|
+
|
|
51
|
+
* Consequences
|
|
52
|
+
|
|
53
|
+
Harmonize the build tools and CI across all the replikativ libraries. That means
|
|
54
|
+
there will be built another CircleCI Orb and a change to all the libs is needed.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# DB meta data
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The database record `DB` has no information about its creation date, used versions and no unique identifier. See [discussion](https://github.com/replikativ/datahike/discussions/407).
|
|
6
|
+
|
|
7
|
+
## Options
|
|
8
|
+
|
|
9
|
+
### A: Extension of `:config` in DB record
|
|
10
|
+
|
|
11
|
+
Add the addtional fields to the current `:config` field in the DB record:
|
|
12
|
+
|
|
13
|
+
#### Pro
|
|
14
|
+
|
|
15
|
+
- no refactoring of current record
|
|
16
|
+
- Database ID could be set from outside
|
|
17
|
+
|
|
18
|
+
#### Contra
|
|
19
|
+
- it's bad practice to have a user set internal database data
|
|
20
|
+
- meta data is semantically different from configuration
|
|
21
|
+
|
|
22
|
+
### B: Addtion of new field `meta` in DB record
|
|
23
|
+
|
|
24
|
+
Create new field `:meta` in the DB record containing a hashmap with the attributes:
|
|
25
|
+
|
|
26
|
+
- `:datahike/version`: `String`
|
|
27
|
+
- `:datahike/created-at`: `Date`
|
|
28
|
+
- `:datahike/id`: `UUID`
|
|
29
|
+
- `:konserve/version`: `String`
|
|
30
|
+
- `:hitchhiker.tree/version`: `String`
|
|
31
|
+
|
|
32
|
+
#### Pro
|
|
33
|
+
|
|
34
|
+
- clean semantic
|
|
35
|
+
- extensible
|
|
36
|
+
|
|
37
|
+
#### Contra
|
|
38
|
+
|
|
39
|
+
- extra implementation work
|
|
40
|
+
- migration might be needed
|
|
41
|
+
|
|
42
|
+
## Status
|
|
43
|
+
|
|
44
|
+
**OPEN**
|
|
45
|
+
|
|
46
|
+
## Decision
|
|
47
|
+
|
|
48
|
+
**NONE**
|
|
49
|
+
|
|
50
|
+
## Consequences
|
|
51
|
+
|
|
52
|
+
- older databases need to be migrated
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Github Flow
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
[GitHub Flow](https://githubflow.github.io/)
|
|
6
|
+
|
|
7
|
+
We want to release more often. Therefore we are considering the GitHub Flow as an alternative to
|
|
8
|
+
our current Gitflow. Everytime a merge-request gets merged a new release should be created after
|
|
9
|
+
running the pipeline. That means features and bugfixes are propagated faster. Apart from that
|
|
10
|
+
the flow is just simpler and sufficient for our and our users' needs.
|
|
11
|
+
|
|
12
|
+
[Discussion](https://github.com/replikativ/datahike/discussions/447)
|
|
13
|
+
|
|
14
|
+
## Options
|
|
15
|
+
|
|
16
|
+
[4 branching workflows for Git](https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf)
|
|
17
|
+
|
|
18
|
+
## Status
|
|
19
|
+
|
|
20
|
+
**Proposed**
|
|
21
|
+
|
|
22
|
+
## Decision
|
|
23
|
+
|
|
24
|
+
We are switching to the GitHub Flow with [PR #445](https://github.com/replikativ/datahike/pull/445).
|
|
25
|
+
|
|
26
|
+
## Consequences
|
|
27
|
+
|
|
28
|
+
When the PR is merged into the newly created `main`-branch we are from then on only branching off
|
|
29
|
+
of main for feature- and bugfix-branches. `main` needs to be the new default branch where everyone
|
|
30
|
+
is landing on by default. Everytime a PR is merged there will be a new release on GitHub with the
|
|
31
|
+
patch-level set to the overall commit-count. To make a new minor or major release the number
|
|
32
|
+
needs to be adjusted manually in the build.clj-file.
|
|
33
|
+
|
|
34
|
+
This change needs to be announced properly so that everyone working on Datahike knows about this
|
|
35
|
+
new way of working. In the future all replikativ-libraries will be switched so everyone needs to
|
|
36
|
+
know that there will not be any long-living-branches any more.
|
|
37
|
+
|
|
38
|
+
Another consequence to consider is that CircleCI then has permission to write to our GitHub-repo.
|
|
39
|
+
Since it is necessary to write to the git-repo when tagging a commit CircleCI needs the full
|
|
40
|
+
write access. It already has the ability to release a jar to Clojars.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Architecture Decision Record Template XYZ
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
Add related entry in [discussions](https://github.com/replikativ/datahike/discussions) where possible.
|
|
5
|
+
|
|
6
|
+
## Options
|
|
7
|
+
|
|
8
|
+
### Option A
|
|
9
|
+
|
|
10
|
+
#### Pro
|
|
11
|
+
|
|
12
|
+
#### Contra
|
|
13
|
+
|
|
14
|
+
### Option B
|
|
15
|
+
|
|
16
|
+
#### Pro
|
|
17
|
+
|
|
18
|
+
#### Contra
|
|
19
|
+
|
|
20
|
+
## Status
|
|
21
|
+
|
|
22
|
+
**OPEN**
|
|
23
|
+
|
|
24
|
+
## Decision
|
|
25
|
+
|
|
26
|
+
**NONE**
|
|
27
|
+
|
|
28
|
+
## Consequences
|
|
29
|
+
|
|
30
|
+
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="160" height="86" viewBox="0 0 160 86" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M79.3077 3.36008C79.3662 3.14037 79.3973 2.90952 79.3973 2.67139C79.3973 1.19602 78.2013 0 76.7259 0C75.2506 0 74.0545 1.19602 74.0545 2.67139C74.0545 2.99687 74.1127 3.30876 74.2193 3.59721L54.3496 25.7595C54.1043 25.6853 53.8441 25.6454 53.5746 25.6454C53.1085 25.6454 52.6703 25.7647 52.2889 25.9745L41.9647 18.2313C41.9865 18.0939 41.9978 17.9529 41.9978 17.8093C41.9978 16.3339 40.8018 15.1379 39.3264 15.1379C37.8511 15.1379 36.655 16.3339 36.655 17.8093C36.655 18.1211 36.7085 18.4204 36.8067 18.6987L19.4756 37.474C19.2738 37.4253 19.0632 37.3995 18.8465 37.3995C17.3711 37.3995 16.1751 38.5955 16.1751 40.0709C16.1751 41.5463 17.3711 42.7423 18.8465 42.7423C20.3218 42.7423 21.5178 41.5463 21.5178 40.0709C21.5178 39.7376 21.4568 39.4186 21.3453 39.1244L38.6376 20.391C38.8574 20.4495 39.0883 20.4807 39.3264 20.4807C39.7347 20.4807 40.1217 20.3891 40.4678 20.2253L50.9153 28.0609C50.9073 28.1451 50.9032 28.2305 50.9032 28.3168C50.9032 29.7921 52.0992 30.9882 53.5746 30.9882C55.0499 30.9882 56.2459 29.7921 56.2459 28.3168C56.2459 28.0377 56.2032 27.7686 56.1238 27.5157L76.0746 5.26283C76.2831 5.31505 76.5013 5.34278 76.7259 5.34278C77.0378 5.34278 77.3372 5.28935 77.6154 5.19112L85.7198 12.6721C85.6621 12.8907 85.6313 13.1202 85.6313 13.357C85.6313 14.8323 86.8273 16.0284 88.3027 16.0284C89.778 16.0284 90.9741 14.8323 90.9741 13.357C90.9741 13.0812 90.9323 12.8152 90.8547 12.565L93.4222 9.99751C93.7614 10.1534 94.1388 10.2403 94.5366 10.2403C94.9832 10.2403 95.4043 10.1307 95.7742 9.93697L111.538 24.2673C111.483 24.4801 111.454 24.7032 111.454 24.933C111.454 26.4084 112.65 27.6044 114.125 27.6044C115.601 27.6044 116.797 26.4084 116.797 24.933C116.797 24.8669 116.794 24.8014 116.79 24.7365L127.029 18.3371C127.424 18.5676 127.883 18.6997 128.374 18.6997C128.855 18.6997 129.306 18.5725 129.696 18.3497L143.547 27.1637C143.523 27.3071 143.511 27.4543 143.511 27.6044C143.511 29.0798 144.707 30.2758 146.182 30.2758C147.658 30.2758 148.854 29.0798 148.854 27.6044C148.854 26.129 147.658 24.933 146.182 24.933C145.784 24.933 145.407 25.02 145.067 25.176L131.036 16.2469C131.042 16.1748 131.045 16.1019 131.045 16.0284C131.045 14.553 129.849 13.357 128.374 13.357C126.898 13.357 125.702 14.553 125.702 16.0284C125.702 16.0934 125.704 16.1579 125.709 16.2217L115.467 22.6227C115.073 22.3931 114.615 22.2616 114.125 22.2616C113.805 22.2616 113.498 22.318 113.214 22.4213L97.1927 7.85684C97.2028 7.76227 97.208 7.66622 97.208 7.56896C97.208 6.09359 96.012 4.89756 94.5366 4.89756C93.0612 4.89756 91.8652 6.09359 91.8652 7.56896C91.8652 7.71385 91.8767 7.85606 91.8989 7.9947L89.0901 10.8035C88.8412 10.7268 88.5767 10.6856 88.3027 10.6856C87.9894 10.6856 87.6887 10.7395 87.4094 10.8386L79.3077 3.36008ZM116.368 53.9439C116.368 55.4054 115.183 56.5902 113.722 56.5902C112.26 56.5902 111.076 55.4054 111.076 53.9439C111.076 52.4823 112.26 51.2976 113.722 51.2976C115.183 51.2976 116.368 52.4823 116.368 53.9439ZM9.45341 85.4846C12.7511 85.4846 14.8177 84.0776 15.9609 82.3627H16.1368L16.7084 85.0888H21.1493V52.5515H16.1368V65.1268H15.9609C14.8177 63.412 12.7511 62.0049 9.45341 62.0049C3.34167 62.0049 0.0439694 66.9735 0 73.7008C0.0439694 80.8238 3.60549 85.4846 9.45341 85.4846ZM10.6846 81.0437C6.5954 81.0437 5.10044 77.702 5.10044 73.7008C5.10044 69.7875 6.55143 66.4458 10.6846 66.4458C14.7297 66.4458 16.3126 69.7875 16.3126 73.7008C16.3126 77.658 14.6858 81.0437 10.6846 81.0437ZM32.01 85.4846C35.0439 85.4846 37.3743 84.3414 38.6934 82.4067H38.8693L39.221 85.0888H43.6179V69.9634C43.6179 65.4785 40.2323 62.0049 34.2525 62.0049C28.5365 62.0049 25.1508 65.2147 25.1508 69.5237H29.8995C29.9435 67.677 31.3945 66.1381 34.1645 66.1381C37.3303 66.1381 38.6494 67.8968 38.6494 70.0074V72.1179C37.4622 71.7661 35.4396 71.3704 33.3731 71.3704C26.8656 71.3704 24.0955 74.4483 24.0955 78.4055C24.0955 82.4067 26.9975 85.4846 32.01 85.4846ZM33.1532 81.4834C30.4271 81.4834 29.1081 80.0763 29.1081 78.2296C29.1081 76.207 30.691 74.9759 33.7248 74.9759C35.3957 74.9759 36.9786 75.1957 38.6494 75.7673V76.5148C38.6494 79.197 36.4949 81.4834 33.1532 81.4834ZM60.5417 85.0009C59.8382 85.2207 58.3872 85.4846 56.6724 85.4846C51.8357 85.4846 49.9451 82.8024 49.9451 78.8892V66.6657H46.2077V62.4007H50.1649V57.608L54.5179 56.3769H54.9576V62.4007H60.4537V66.6657H54.9576V78.0098C54.9576 80.1643 55.8809 81.0876 57.9035 81.0876C58.8269 81.0876 59.5304 80.9557 60.102 80.7798H60.5417V85.0009ZM70.6258 85.4846C73.6597 85.4846 75.99 84.3414 77.3091 82.4067H77.485L77.8367 85.0888H82.2337V69.9634C82.2337 65.4785 78.848 62.0049 72.8682 62.0049C67.1522 62.0049 63.7666 65.2147 63.7666 69.5237H68.5152C68.5592 67.677 70.0102 66.1381 72.7803 66.1381C75.9461 66.1381 77.2651 67.8968 77.2651 70.0074V72.1179C76.078 71.7661 74.0554 71.3704 71.9888 71.3704C65.4814 71.3704 62.7113 74.4483 62.7113 78.4055C62.7113 82.4067 65.6133 85.4846 70.6258 85.4846ZM71.769 81.4834C69.0429 81.4834 67.7238 80.0763 67.7238 78.2296C67.7238 76.207 69.3067 74.9759 72.3406 74.9759C74.0114 74.9759 75.5943 75.1957 77.2651 75.7673V76.5148C77.2651 79.197 75.1106 81.4834 71.769 81.4834ZM91.111 85.0888H87.4176V52.5515H91.111V66.1381H91.2869C92.4741 63.8516 94.6725 62.2248 98.1461 62.2248C103.115 62.2248 106.105 65.3466 106.105 70.491V85.0888H102.411V71.0626C102.411 67.5451 100.696 65.5225 97.1348 65.5225C93.4854 65.5225 91.111 68.2486 91.111 72.7774V85.0888ZM112.028 85.0888H115.722V62.6205H112.028V85.0888ZM121.654 85.0888V52.5515H125.347V72.4696V85.0888H121.654ZM125.347 72.4696L134.844 62.6205H139.197V63.0602L130.096 72.4696L139.461 84.6491V85.0888H135.196L125.347 72.4696ZM150.327 85.4846C155.119 85.4846 159.077 82.7145 159.692 78.5814H155.999C155.383 80.9557 153.273 82.1869 150.327 82.1869C146.15 82.1869 143.995 79.2409 143.995 74.9759H160V73.1731C160 66.9295 156.614 62.2248 150.283 62.2248C143.336 62.2248 140.126 67.3692 140.126 73.8767C140.126 80.4721 143.687 85.4846 150.327 85.4846ZM144.039 71.898C144.171 68.3805 146.062 65.5225 150.283 65.5225C154.284 65.5225 156.175 68.3365 156.175 71.898H144.039Z" fill="#2E3D51"/>
|
|
3
|
+
</svg>
|