@travetto/model-mysql
v8.0.8
Published
MySQL backing for the travetto model module, with real-time modeling support for SQL schemas.
Downloads
1,794
Maintainers
Readme
MySQL Model Service
MySQL backing for the travetto model module, with real-time modeling support for SQL schemas.
Install: @travetto/model-mysql
npm install @travetto/model-mysql
# or
yarn add @travetto/model-mysqlThis module provides a MySQL-based implementation for the Data Modeling Support module. This source allows the Data Modeling Support module to read, write and query against SQL databases. In development mode, the MysqlModelService will also modify the database schema in real time to minimize impact to development.
The schema generated will not generally map to existing tables as it is attempting to produce a document store like experience on top of a SQL database. Every table generated maps to a model, with simple fields mapped as individual columns and complex fields/arrays mapped as native JSON columns.
Supported features:
Out of the box, by installing the module, everything should be wired up by default.If you need to customize any aspect of the source or config, you can override and register it with the Dependency Injection module.
Code: Wiring up a custom Model Source
import { InjectableFactory } from '@travetto/di';
import { type MysqlConnection, MysqlModelService } from '@travetto/model-mysql';
export class Init {
@InjectableFactory({ primary: true })
static getModelService(connection: MysqlConnection) {
return new MysqlModelService(connection);
}
}where the MysqlModelConfig is defined by:
Code: Structure of MysqlModelConfig
@Config('model.mysql')
export class MysqlModelConfig {
/**
* Database host to connect to
*/
host = '127.0.0.1';
/**
* Database port to connect to
*/
port = 0;
/**
* Database username
*/
user = Runtime.production ? '' : 'travetto';
/**
* Database password
*/
password = Runtime.production ? '' : 'travetto';
/**
* Namespace/schema prefix for table names
*/
namespace = '';
/**
* Database name
*/
database = 'app';
/**
* Allow storage modifications (like table auto-creation and schema updates) at runtime
*/
modifyStorage = !Runtime.production;
/**
* Extended client options
*/
options?: PoolOptions;
}Additionally, you can see that the class is registered with the @Config annotation, and so these values can be overridden using the standard Configuration resolution paths.
