@reldens/storage

0.59.0 • Public • Published

Reldens - GitHub - Release

Reldens - Storage

About this package

This package provides standardized database drivers for Reldens projects. It ensures consistent data access methods across different database types and ORM implementations.

Features

ORM Support

  • Objection JS (via Knex) - For SQL databases (recommended)
  • Mikro-ORM - For MongoDB/NoSQL support
  • Prisma - Modern database toolkit

Entity Management

  • 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

CLI Tools

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)

Usage Examples

SQL with Objection JS

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();

MongoDB with Mikro-ORM

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();

Using Prisma

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.

Custom Drivers

You can create custom storage drivers by extending the base classes:

  1. Extend BaseDataServer and BaseDriver
  2. Implement all required methods
  3. 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);

Links


/@reldens/storage/

    Package Sidebar

    Install

    npm i @reldens/storage

    Weekly Downloads

    57

    Version

    0.59.0

    License

    MIT

    Unpacked Size

    161 kB

    Total Files

    32

    Last publish

    Collaborators

    • dpastorini