Neanderthals Paint Mammals

    TypeScript icon, indicating that this package has built-in type declarations

    0.33.5 • Public • Published

    Book Objects Database



    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: '',
            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]');


    • 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


    • 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
      • The config should look something like the following:
    • Create an SSH tunnel to H-Edu content service (Back Office will work as well) server
      ssh -L -p 14364
    • Run scripts/
      ./scripts/ [remote-db-name] [local-db-name]
      • With no arguments, the script will clone h_edu_sro1252@localhost:5433 to bo-dev@localhost:5432
      • It will drop the target database
      • It will create a .backup file in the current working directory, and name it like remote-db-name_2019-01-10-16-48-19.backup


    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:
      • User: bo
      • Password: bo
    • Root credentials:
      • User: root
      • Password: root


    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




    npm i @heduapp/book-objects-db

    DownloadsWeekly Downloads






    Unpacked Size

    162 kB

    Total Files


    Last publish


    • milanlempera
    • hejny
    • pohy
    • heduapp