diff --git a/changelog.md b/changelog.md index 5b2d354..d49f036 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2025-02-03 - 5.2.11 - fix(documentation) +Updated project documentation for accuracy and added advanced feature details + +- Added details for EasyStore, Distributed Coordination, and Real-time Data Watching features. +- Updated database connection setup instructions to include user authentication. +- Re-organized advanced usage section to showcase additional features separately. + ## 2024-09-05 - 5.2.10 - fix(smartdata.classes.doc) Fix issue with array handling in convertFilterForMongoDb function diff --git a/readme.md b/readme.md index 9cc5e58..e6a9495 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,24 @@ # @push.rocks/smartdata -do more with data + +[![npm version](https://badge.fury.io/js/@push.rocks%2Fsmartdata.svg)](https://www.npmjs.com/package/@push.rocks/smartdata) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +A powerful TypeScript-first MongoDB wrapper that provides advanced features for distributed systems, real-time data synchronization, and easy data management. + +## Features + +- **Type-Safe MongoDB Integration**: Full TypeScript support with decorators for schema definition +- **EasyStore**: Simple key-value storage with automatic persistence and sharing between instances +- **Distributed Coordination**: Built-in support for leader election and distributed task management +- **Real-time Data Sync**: Watchers for real-time data changes and synchronization +- **Connection Management**: Automatic connection handling with connection pooling +- **Collection Management**: Type-safe collection operations with automatic indexing + +## Requirements + +- Node.js >= 16.x +- MongoDB >= 4.4 +- TypeScript >= 4.x (for development) ## Install To install `@push.rocks/smartdata`, use npm: @@ -14,20 +33,21 @@ This will add `@push.rocks/smartdata` to your project's dependencies. `@push.rocks/smartdata` enables efficient data handling and operation management with a focus on using MongoDB. It leverages TypeScript for strong typing and ESM syntax for modern JavaScript usage. Below are various scenarios demonstrating how to utilize this package effectively in a project. ### Setting Up and Connecting to the Database -Before interacting with the database, you need to set up and establish a connection. This is done by creating an instance of `SmartdataDb` and calling its `init` method with your MongoDB connection details. +Before interacting with the database, you need to set up and establish a connection. The `SmartdataDb` class handles connection pooling and automatic reconnection. ```typescript import { SmartdataDb } from '@push.rocks/smartdata'; // Create a new instance of SmartdataDb with MongoDB connection details const db = new SmartdataDb({ - mongoDbUrl: 'mongodb://localhost:27017', + mongoDbUrl: 'mongodb://:@localhost:27017/', mongoDbName: 'your-database-name', mongoDbUser: 'your-username', mongoDbPass: 'your-password', }); // Initialize and connect to the database +// This sets up a connection pool with max 100 connections await db.init(); ``` @@ -87,13 +107,67 @@ await user.save(); // Update the user in the database await user.delete(); // Delete the user from the database ``` -### Advanced Usage -`@push.rocks/smartdata` also supports advanced features like watching for real-time changes in the database, handling distributed data coordination, and more. These features utilize MongoDB's capabilities to provide real-time data syncing and distributed systems coordination. +### Advanced Features + +#### EasyStore +EasyStore provides a simple key-value storage system with automatic persistence: + +```typescript +// Create an EasyStore instance +const store = await db.createEasyStore('store-name'); + +// Write and read data +await store.writeKey('key', value); +const value = await store.readKey('key'); +``` + +#### Distributed Coordination +Built-in support for distributed systems with leader election: + +```typescript +// Create a distributed coordinator +const coordinator = new SmartdataDistributedCoordinator(db); + +// Start coordination +await coordinator.start(); + +// Handle leadership changes +coordinator.on('leadershipChange', (isLeader) => { + if (isLeader) { + // This instance is now the leader + } +}); +``` + +#### Real-time Data Watching +Watch for changes in your collections: + +```typescript +const watcher = new SmartdataDbWatcher(collection); + +watcher.on('change', (change) => { + console.log('Document changed:', change); +}); + +await watcher.start(); +``` ### Conclusion With its focus on TypeScript, modern JavaScript syntax, and leveraging MongoDB's features, `@push.rocks/smartdata` offers a powerful toolkit for data handling and operations management in Node.js applications. Its design for ease of use, coupled with advanced features, makes it a versatile choice for developers looking to build efficient and scalable data-driven applications. -For more details on usage and additional features, refer to the [official documentation](https://gitlab.com/push.rocks/smartdata#README) and explore the various classes and methods provided by `@push.rocks/smartdata`. +For more details on usage and additional features, refer to the [official documentation](https://gitlab.com/push.rocks/smartdata/-/blob/master/README.md) and explore the various classes and methods provided by `@push.rocks/smartdata`. + +## Contributing + +We welcome contributions to @push.rocks/smartdata! Here's how you can help: + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +Please make sure to update tests as appropriate and follow our coding standards. ## License and Legal Information diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index da23138..108e826 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartdata', - version: '5.2.10', + version: '5.2.11', description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.' }