@travetto/model-sqlite
v8.0.8
Published
SQLite backing for the travetto model module, with real-time modeling support for SQL schemas.
Maintainers
Readme
SQLite Model Service
SQLite backing for the travetto model module, with real-time modeling support for SQL schemas.
Install: @travetto/model-sqlite
npm install @travetto/model-sqlite
# or
yarn add @travetto/model-sqliteThis module provides a SQLite-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 SqliteModelService 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 serialized TEXT 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 SqliteConnection, SqliteModelService } from '@travetto/model-sqlite';
export class Init {
@InjectableFactory({ primary: true })
static getModelService(connection: SqliteConnection) {
return new SqliteModelService(connection);
}
}where the SqliteModelConfig is defined by:
Code: Structure of SqliteModelConfig
@Config('model.sqlite')
export class SqliteModelConfig {
/**
* Namespace/schema prefix for table names
*/
namespace = '';
/**
* Allow storage modifications (like table auto-creation and schema updates) at runtime
*/
modifyStorage = !Runtime.production;
/**
* SQLite file location
*/
file?: string;
/**
* Custom options
*/
options?: DatabaseSyncOptions;
}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.
