@heduapp/book-objects-db
v0.33.5
Published
## Usage ### Install - Configure [SSH Config](http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/) to access GitHub. - Pick your version, from [releases](https://github.com/HeduApp/book-objects/releases). ``` npm install git+ssh://
Downloads
5
Readme
Book Objects Database
Usage
Install
- Configure SSH Config to access GitHub.
- Pick your version, from releases.
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();
// Encoder can return either inserted ContentGroup or ContentLeaf
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
- Rollback all migrations
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
- Create new seed
npx knex --knexfile src/knexfile.ts --cwd ./ seed:make xxx-seed_name
Copying remote databases to local
- Create a
pgpass
config file- On unix based systems:
~/.pgpass
- On Windows
%APPDATA%\postgresql\pgpass.conf
- Add database logins and passwords, one per line
hostname:port:database:username:password
- The config should look something like the following:
localhost:5433:h_edu_sro1252:h_edu_sro1252:password localhost:5432:bo-dev:bo:bo
- On unix based systems:
- Create an SSH tunnel to H-Edu content service (Back Office will work as well) server
ssh -L 5433:store4.rosti.cz:5432 -p 14364 [email protected]
- Run
scripts/copy-db.sh
./scripts/copy-db.sh [remote-db-name] [local-db-name]
- With no arguments, the script will clone
h_edu_sro1252@localhost:5433
tobo-dev@localhost:5432
- It will drop the target database
- It will create a
.backup
file in the current working directory, and name it likeremote-db-name_2019-01-10-16-48-19.backup
- With no arguments, the script will clone
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 DB3306
MySQL
- Database:
bo-dev
- Credentials:
- User:
bo
- Password:
bo
- User:
- Root credentials:
- User:
root
- Password:
root
- User:
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
- [ ] Are all tests passing?
- [ ] Have you ran prettier?
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
- Create a new release from the generated tag