Amplication Data Service Generator
DSG (Data Service Generator) is the component responsible for the generation of source code by Amplication, and allows the integration of plugins into the code generation process.
Technologies
- Node.js: the generated code is human-editable Node.js code.
- TypeScript: the generator code and the generated code are both strictly typed TypeScript code.
- Nest.js: is used for defining the API.
- Express: is used as the base web framework for Nest.js.
- Passport: is used for providing Basic authentication.
- AccessControl: is used for providing ABAC and RBAC authorization.
- PostgreSQL: is used for storing the application data.
- Prisma: is used to interact with Postgres and define data migrations.
- Docker: the generated code includes a Dockerfile for building containers.
- Morgan: is used for logging calls to the API.
- Recast: is used for generating the TypeScript code.
- Jest: is used for testing the generator code and for testing in the generated code.
Development
-
node -v
Should be:
v14.0.0
or newer -
npm -v
Should be:
7.0.0
or newer -
docker -v
Should start with:
Docker version
-
git version
Should start with:
git version
One time set up
After cloning the repository open its root directory and run the following commands:
-
Install dependencies of the monorepo (execute in root directory):
npm install npm run bootstrap
-
Build the Data Service Generator and its dependencies:
npm run build -- --scope @amplication/data-service-generator --include-dependencies
-
Open the data service generator directory
cd packages/data-service-generator
-
Generate the test data service app
npm run generate-test-data-service
Workflow
Make sure you are in the data service generator directory (packages/data-service-generator
).
Once you are done making changes, run the following commands:
-
Format files (editors like VSCode can do it for you automatically)
npm run format
-
Lint files (editors like VSCode come with integration to display those continuously)
npm run lint
-
Run unit tests
npm test
-
(Optional) Rebuild the package
npm run build
Testing
Generate test data service application
Generate an application according to the test data definitions. Once generated you can install its dependencies and start it with npm and spin a database with Docker.
npm run generate-test-data-service
E2E test data service application creation
The test will generate code according to the test data definitions, run a Docker container with it, run a database docker container, and try to call the API endpoints. Make sure to build the library before executing it.
npm run test:e2e
Generated Application Dependency Management
Add a dependency to the server template
npx lerna add --scope server-template $NAME_OF_DEPENDENCY
Add a dependency to the client template
npx lerna add --scope admin-template $NAME_OF_DEPENDENCY