UNPKG

@reldens/storage

Version:
156 lines (124 loc) 4.97 kB
[![Reldens - GitHub - Release](https://www.dwdeveloper.com/media/reldens/reldens-mmorpg-platform.png)](https://www.reldens.com/) # 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: ```bash 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: ```bash 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 ```javascript 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 ```javascript 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: ```bash npx reldens-generate-prisma-schema --host=localhost --port=3306 --user=dbuser --password=dbpass --database=dbname ``` Then, use the PrismaDataServer in your code: ```javascript 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: ```javascript 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 Website](https://www.reldens.com/) - [GitHub Repository](https://github.com/damian-pastorini/reldens/tree/master) --- ### [Reldens](https://www.reldens.com/ "Reldens") ##### [By DwDeveloper](https://www.dwdeveloper.com/ "DwDeveloper")