@nzod/prisma v0.1.0
Template Features
- 🚀 Blazingly fast and easy installation
- 💡 CI workflows configured for changelogs and release/prerelease cycles
- 🧱 Perfect and easy-to-support tooling setup without any conflicts with CI environment
- 📚 Well-documented conventions for project maintaining (commits, pull-requests, branches)
Before you start
The README on main branch may contain some unreleased changes.
Go to release/latest branch to see the actual README for the latest version from NPM.
Navigation
Installation
yarn add @nzod/prisma
npm install @nzod/prismaUsage
generator nzod {
provider = "nzod-prisma"
output = "../src/generated/nzod"
}What will be generated?
For each model:
{ModelName}SchemaExact
prisma->nzodmapping.{ModelName}InputSchemaThe same as the regular schema, but nullable fields are optional.
{ModelName}RelatedSchemaIf the model has relations, the related schema will be generated.
It contains all fields from the regular schema plus relations.{ModelName}RelatedInputSchemaIf the model has relations, the related schema will be generated.
It contains all fields from the input schema plus relations (optional when nullable).{ModelName}Dto(whengenerateDtois set totrue)The DTO constructor for the regular schema.
{ModelName}InputDto(whengenerateDtois set totrue)The DTO constructor for the regular schema.
Creating DTOs
Install N'Zod DTO library:
yarn add @nzod/dto
npm install @nzod/dtoSet generateDto to true:
generator nzod {
provider = "nzod-prisma"
output = "../src/generated/nzod"
generateDto = true
}Using decimal.js for Decimal fields
Install decimal.js:
yarn add decimal.js
npm install decimal.jsSet useDecimalJs to true:
generator nzod {
provider = "nzod-prisma"
output = "../src/generated/nzod"
useDecimalJs = true
}Contributing
- Fork this repo
- Use the Regular flow
Please follow Conventions
Maintenance
The dev branch is main - any developer changes is merged in there.
Also, there is a release/latest branch. It always contains the actual source code for release published with latest tag.
All changes is made using Pull Requests - push is forbidden. PR can be merged only after successfull test-and-build workflow checks.
When PR is merged, release-drafter workflow creates/updates a draft release. The changelog is built from the merged branch scope (feat, fix, etc) and PR title. When release is ready - we publish the draft.
Then, the release workflow handles everything:
- It runs tests, builds a package, and publishes it
- It synchronizes released tag with
release/latestbranch
Regular flow
- Create feature branch
- Make changes in your feature branch and commit
- Create a Pull Request from your feature branch to
main
The PR is needed to test the code before pushing to release branch - If your PR contains breaking changes, don't forget to put a
BREAKING CHANGESlabel - Merge the PR in
main - All done! Now you have a drafted release - just publish it when ready
Prerelease flow
- Assume your prerelease tag is
beta - Create
release/betabranch - Create feature branch
- Make changes in your feature branch and commit
- Create a Pull Request from your feature branch to
release/beta
The PR is needed to test the code before pushing to release branch - Create Github release with tag like
v1.0.0-beta, pointing torelease/betabranch
For nextbetaversions use semver build syntax:v1.0.0-beta+1 - After that, the
releaseworkflow will publish your package with thebetatag - When the
betaversion is ready to becomelatest- create a Pull Request fromrelease/betatomainbranch - Continue from the Regular flow's #5 step
Conventions
Feature branches:
- Should start with
feat/,fix/,docs/,refactor/, and etc., depending on the changes you want to propose (see pr-labeler.yml for a full list of scopes)
Commits:
- Should follow the Conventional Commits specification
- You can find supported types and scopes into
.cz-config.js
Pull requests:
- Should have human-readable name, for example: "Add a TODO list feature"
- Should describe changes
- Should have correct labels (handled by PR Labeler in most cases)
3 years ago