# Database driver

Database driver's class should extend from EventEmitter (opens new window).

Constructor receives 2 arguments: configuration and configuration name.

Example:

// conf == require('dc-api-core/config').db[confName]
constructor (conf, confName) {
    super();

    this.connection = createDatabaseConnection(options, err => {
        this.emit('connected', err);
    });
}

# Events

# connected

Arguments:

  • error: Error - optional error object, caught during connection to DB

Usage:

This event must be emitted without arguments right after a successful connection to the database, or with an Error argument object when an error occurs during a connection.

# no-model

Arguments:

  • name: String - model name

Usage:

Event is used to tell the user that the database model doesn't exists. Example usage shown in getModel method.

# Methods

# getModel

Arguments:

  • name: String - model name

Usage:

Method will be called for generate database model object by given name.

Example:

const log = require('dc-api-core/log');
const ROOT = process.cwd();

class Driver {
    // ...

    getModel (name) {
        try {
            parseSchema(`${ROOT}/models/${this.confName}/${name}.schema`)
        } catch (err) {
            if (err.code == 'ENOENT') this.emit('no-model', name);
            else log.error('Database model parse error', err);
            return;
        }
    }
}