Skip to main content

Java/Spring CRUD code generator

Project description

Crudhex

PyPI version

⚠️ Warn: Alpha development stage


CLI tool to generate Java CRUD classes from a spec file. The target for this code generation is a Hexagonal architecture.

Motivation

Adding CRUD operation in a hexagonal project is quite a pain. You can take shortcuts that can be totally legit in cases of just CRUD operations, but most cases if there is already a rich domain/application layer for other use cases CRUD shortcuts can break the consistency of the project.

The target of this CLI is to ease my life and try to give a general solution to CRUD generations in Hexagonal architecture. There are some customizations you can make, but some aspects for now are closed to customization for now.

Getting started

Project config file

Project config file is used to know where things should go in the project. Usually contains a path to the sources folder (src/main/java in regular maven projects) and packages where things are located within that source folder. Here is a basic example:

src: src/main/java # Java source folder for single module apps (where your packages start)

domain-models-pkg: com.salpreh.baseapi.domain.models # domain models package
db-models-pkg: com.salpreh.baseapi.adapers.infrasturcture.db.models # db entities package
rest-models-pkg: com.salpreh.baseapi.adapters.api.models # rest api models

In case of multi-module project you will have to specify src path to each module (domain, rest adapter and db adapter). More examples of config can be found in (doc/examples/config).

The default name for this config file is .crudhex-conf.yaml, located in the root of the project (you can provide the path to config file by cli options, so you can place it anywhere you want)

Spec file

This is the file where you specify the crud model. Class name, attributes and some meta data about DB structure (relations, PK field, column name alias, etc).

An example of spec file:

Person: # Model name
  .meta:
    table-name: persons # OPTIONAL: Table name for entity
  id: # Field name
    type: Long
    id: sequence # PK marker. This field will be the primary key for the entity. 
                 # As value you specify generation strategy available in JPA with lower case.
  birthPlanet: # Field name
    type: Planet
    column: birth_planet # OPTIONAL: Column name alias
    relation: # OPTIONAL: DB relation meta data
      type: many-to-one # Relation type
      join-column: birth_planet_id # Join column for relation
  affiliations:
    type: Faction
    relation:
      type: many-to-many # In case of many-to-many we have a couple of more meta about DB setup
      join-table: person_affiliation 
      join-column: person_id
      inverse-join-column: faction_id
  backup:
    type: Person
    relation:
      type: one-to-one
      join-column: backup_id
  backing:
    type: Person
    relation:
      type: one-to-one
      mapped-by: backup # Mapping attribute for non-owning side of relation

Snippet config comments provide a overview of each relevant section in config. I'll dig further in config details in a dedicated section. For now, you can find some aditional examples in doc/examples/spec.

Installation

Package is published in Pypi public repositories. You can use pip (or another convinient python dependency manager) to install the package:

pip install crudhex

Once installed you should be able to use it as CLI tool:

crudhex --help

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crudhex-0.3.0.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

crudhex-0.3.0-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file crudhex-0.3.0.tar.gz.

File metadata

  • Download URL: crudhex-0.3.0.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for crudhex-0.3.0.tar.gz
Algorithm Hash digest
SHA256 268d2167c1f643a2bfd3f8ae7d6be406b476fe8cc1bba2a5c1052a55710a7c9e
MD5 0d047c9603d127adca87caa72a80de54
BLAKE2b-256 8a34bab20b331ce80a6cc1e79e0d652216ee3df678fdb1e612694af24f4319b0

See more details on using hashes here.

File details

Details for the file crudhex-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: crudhex-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for crudhex-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10fafa7cbf4cee49d99df03144a02a70554144a32848cb146a9c52f7f800e27d
MD5 97dcf7925b17c2c9bb1cf73fe81c3522
BLAKE2b-256 fe2a3ec67043c3e4667ad61d216c94a6e314548d6891551c38492fd832e7bb2c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page