This package provides standardized database drivers for Reldens projects. It ensures consistent data access methods across different database types and ORM implementations.
- Objection JS (via Knex) - For SQL databases (recommended)
- Mikro-ORM - For MongoDB/NoSQL support
- Prisma - Modern database toolkit
- Standardized CRUD operations
- Automatic entity generation from database schemas
- Type mapping between database and JavaScript
- Foreign key relationship handling
- ENUM field support with formatted values
Generate entity files directly from your database structure:
npx reldens-storage generateEntities --user=[dbuser] --pass=[dbpass] --database=[dbname] --driver=[objection-js]
Options:
-
--user=[username]
- Database username -
--pass=[password]
- Database password -
--host=[host]
- Database host (default: localhost) -
--port=[port]
- Database port (default: 3306) -
--database=[name]
- Database name -
--driver=[driver]
- ORM driver (objection-js|mikro-orm|prisma) -
--client=[client]
- Database client (mysql|mysql2|mongodb) -
--path=[path]
- Project path for output files -
--override
- Regenerate all files even if they exist
Generate Prisma schema:
npx reldens-generate-prisma-schema --host=[host] --port=[port] --user=[dbuser] --password=[dbpass] --database=[dbname]
Options:
-
--host=[host]
- Database host (required) -
--port=[port]
- Database port (required) -
--user=[username]
- Database username (required) -
--password=[password]
- Database password (required) -
--database=[name]
- Database name (required) -
--client=[client]
- Database client (default: mysql) -
--debug
- Enable debug mode -
--dataProxy
- Enable data proxy -
--checkInterval=[ms]
- Check interval in milliseconds (default: 1000) -
--maxWaitTime=[ms]
- Max wait time in milliseconds (default: 30000) -
--prismaSchemaPath=[path]
- Path to Prisma schema directory -
--clientOutputPath=[path]
- Client output path (if not set, uses Prisma default) -
--generateBinaryTargets=[targets]
- Comma-separated binary targets (default: native)
const { ObjectionJsDataServer } = require('@reldens/storage');
const server = new ObjectionJsDataServer({
client: 'mysql2',
config: {
user: 'reldens',
password: 'reldens',
database: 'reldens',
host: 'localhost',
port: 3306
}
});
await server.connect();
const entities = server.generateEntities();
const { MikroOrmDataServer } = require('@reldens/storage');
const server = new MikroOrmDataServer({
client: 'mongodb',
config: {
user: 'reldens',
password: 'reldens',
database: 'reldens',
host: 'localhost',
port: 27017
},
connectStringOptions: 'authSource=reldens&readPreference=primary&ssl=false',
rawEntities: yourEntities
});
await server.connect();
const entities = server.generateEntities();
First, generate your Prisma schema:
npx reldens-generate-prisma-schema --host=localhost --port=3306 --user=dbuser --password=dbpass --database=dbname
Then, use the PrismaDataServer in your code:
const { PrismaDataServer } = require('@reldens/storage');
const server = new PrismaDataServer({
client: 'mysql',
config: {
user: 'reldens',
password: 'reldens',
database: 'reldens',
host: 'localhost',
port: 3306
},
rawEntities: yourEntities
});
await server.connect();
const entities = server.generateEntities();
Note: The PrismaDataServer requires the Prisma schema to be generated first. Make sure to run the reldens-generate-prisma-schema
command before using PrismaDataServer.
You can create custom storage drivers by extending the base classes:
- Extend
BaseDataServer
andBaseDriver
- Implement all required methods
- Pass your custom server instance to Reldens ServerManager:
const { ServerManager } = require('@reldens/server');
const YourCustomDriver = require('./your-custom-driver');
const customDriver = new YourCustomDriver(options);
const appServer = new ServerManager(serverConfig, eventsManager, customDriver);