Common components used on the Parenthesin's service templates.
Reads aero config file on resources/config.edn
.
Gets the current profile on enviroment var SYSTEM_ENV
Depends on config component to read connection info data
In addition, you will need to add dependencies for the JDBC drivers you wish to use for whatever databases you are using. For example:
MySQL: com.mysql/mysql-connector-j {:mvn/version "latest-version"}
PostgreSQL: org.postgresql/postgresql {:mvn/version "latest-version"}
Microsoft SQL Server: com.microsoft.sqlserver/mssql-jdbc {:mvn/version "latest-version"}
Sqlite: org.xerial/sqlite-jdbc {:mvn/version "latest-version"}
(always search for latest version)
Has some mock implementations for tests
Has some presets, handlers and configs to use malli as input/output validations for routes
Has some presets, handlers and configs to use schema as input/output validations for routes
Depends on one of each type of the components [config, db, http, router] and starts a webserver with all components injected in the http context.
Gets the web port from the config file config file or the enviroment var PORT
Extract io.pedestat.http/service-fn
from state-flow context and calls io.pedestat.test/response-for
to simulate and http request on the system server.
Check system integration tests to see how to use this function.
Exposes function to direclty execute sql commands on the state-flow context db.
Check db integration tests to see how to use these functions.
Exposes functions to set/get http mock state.
Check http integration tests to see how to use these functions.
Setup function with preset appender and nice macro to log over timbre/log!
Function to start / stop instrumentation as clojure.test/use-fixtures
Wrapper over migratus to create an CLI based API.
Depends on aero and jdbc to read and connect to the database.
These projects are using the library, they can be used as templates or source of documentation of how use the components.
To run unit tests inside ./test/unit
clj -M:test :unit
To run integration tests inside ./test/integration
clj -M:test :integration
To run all tests inside ./test
clj -M:test
To generate a coverage report
clj -M:test --plugin kaocha.plugin/cloverage
clj -M:clojure-lsp format
clj -M:clojure-lsp clean-ns
clj -M:clojure-lsp diagnostics
# Build
clojure -T:build jar :version '"0.1.0"'
# Deploy
env CLOJARS_USERNAME=username CLOJARS_PASSWORD=clojars-token clojure -T:build deploy :version '"0.1.0"'
- schema Types and Schemas
- malli High-performance Data-Driven Data Specification Library for Clojure/Script.
- component System Lifecycle and Dependencies
- pedestal Http Server
- reitit Http Routes System
- clj-http Http Client
- cheshire JSON encoding
- aero Configuration file and enviroment variables manager
- timbre Logging library
- next-jdbc JDBC-based layer to access databases
- hikaricp A solid, high-performance, JDBC connection pool at last
- tools.build Clojure builds as Clojure programs
- deps-deploy A Clojure library to deploy your stuff to clojars
- kaocha Test runner
- kaocha-cloverage Kaocha plugin for code coverage reports
- schema-generators Data generation and generative testing
- state-flow Testing framework for integration tests
- matcher-combinators Assertions in data structures
- pg-embedded-clj Embedded PostgreSQL for integration tests
- clojure-lsp Code Format, Namespace Check and Diagnosis
Copyright © 2023 Parenthesin
This is free and unencumbered software released into the public domain. For more information, please refer to http://unlicense.org