This bookkeeping system is a system for A Large Ion Collider Experiment
(ALICE) to keep track of what is happening to the data produced by the detectors. The electric signals produced by the various detectors which
together are the ALICE detector are being reconstructed, calibrated, compressed and used in numerous but specific ways. It is important to register
how this is done to make a reproduction of data possible and thereby a validation of the information produced. The project is also known as the
Jiskefet project.
This is the back-end API for the Jiskefet project.
The front-end UI can be found here: https://github.com/SoftwareForScience/jiskefet-ui
And the Ansible playbook to deploy the application can be found here: https://github.com/SoftwareForScience/sfs-ansible
$ npm install
# Copy template as .env and set your own values.
$ cp ./environments/{YOUR_ENV}.env.template .env
# Running in watch mode (nodemon)
$ npm run dev
$ npm install
# Copy .env.dist as .env and set your own values.
$ cp .env .env.dist
Now the project can be run with $ npm run start
as a background process via a node process manager, e.g. PM2.
We use NestJS as a Node.js framework. NestJS has built in functionality to create a scalable and loosely-coupled architecture.
We use TypeORM as an Object Relational Mapping tool.
Automatic migration generation creates a new migration file and writes all sql queries that must be executed to make a new database or to update the database.
To check what sql queries are going to be made when changes are made in the entities is as follows
npm run typeorm schema:log
To generate a migration file use the following command
npm run typeorm migration:generate -n 'name-of-migration-file'
The file that will be created can be found at the path chosen in ormconfig.json, the default path stated in the dist is src/migration/. The rule of thumb is to generate a migration after each entity change.
To execute all pending migrations use following command
npm run typeorm migration:run
To revert the most recently executed migration use the following command
npm run typeorm migration:revert
We use Jest for testing.
# Run tests
$ npm run test
# Open code coverage stats from latest test run
$ npm run showcoverage
# To run the benchmark first change the target url to the appropriate url. To run the benchmark use:
$ artillery run api_benchmarks.yml