Book Objects Database
Usage
Install
npm install git+ssh://ssh-config-name:HeduApp/book-objects-db.git#v0.1.0
DB Codec prerequisites
npm install objection knex mysql
import { DBCodec } from '@heduapp/book-objects-db';
const dbCodec = new DBCodec({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'bo',
password: 'bo',
database: 'bo-dev',
},
seeds: {
directory: './seeds/production',
}
});
Decode business object from DB
import * as BO from '@heduapp/book-objects/business-object'
import { DBCodec } form '@heduapp/book-objects-db'
const dbCodec = new DBCodec();
const book = (await dbCodec.decode(bookUUID)) as BO.Book;
Encode business object into DB
import { DBCodec, Model } form '@heduapp/book-objects-db'
const dbCodec = new DBCodec();
const insertedBook = (await dbCodec.encode(book)) as Model.ContentGroup;
await insertedBook.$loadRelated('[children.[contentLeafs.[locale], locale], locale]');
Migrations
- Apply the latest migration
npx cross-env NODE_ENV=development knex --knexfile src/knexfile.ts --cwd ./ migrate:latest
npx knex --knexfile src/knexfile.ts --cwd ./ migrate:rollback
- Create new migration
- Migration file is created in
migrations/
directory
npx knex --knexfile src/knexfile.ts --cwd ./ migrate:make migration_name
Seed
- Insert necessary data into the database (locales, etc...)
npx knex --knexfile src/knexfile.ts --cwd ./ seed:run
npx knex --knexfile src/knexfile.ts --cwd ./ seed:make xxx-seed_name
Copying remote databases to local
Contributing
Running dev DB
Start the containers:
docker-compose -f docker/db-dev.yml up -d
Stop the containers:
docker-compose -f docker/db-dev.yml down
- Exposed ports:
8080
Adminer for managing the DB
3306
MySQL
- Database:
bo-dev
- Credentials:
- Root credentials:
- User:
root
- Password:
root
Tests
Alsatian is used as a testing framework and test runner.
To run tests:
npm run test
npm run test-watch
Code style
Code style is enforced by prettier
To prettify code:
npm run prettier
npm run prettier-watch
Before pushing to master
Release new version
git checkout dist
git merge master # Resolve conflicts, accepting changes from master
npm run build
git add --all
git commit -m "Add vX.X.X build"
npm version major|minor|patch # Should be same as the version in the commit message
git push origin dist