Files
esengine/packages/framework/database-drivers/CHANGELOG.md
github-actions[bot] 0f5aa633d8 chore: release packages (#413)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-31 18:12:40 +08:00

2.3 KiB

@esengine/database-drivers

1.1.1

Patch Changes

  • #412 85171a0 Thanks @esengine! - fix: include dist directory in npm package

    Previous 1.1.0 release was missing the compiled dist directory.

1.1.0

Minor Changes

  • #410 71022ab Thanks @esengine! - feat: add database layer architecture

    Added new database packages with layered architecture:

    @esengine/database-drivers (Layer 1)

    • MongoDB connection with pool management, auto-reconnect, events
    • Redis connection with auto-reconnect, key prefix
    • Type-safe IMongoCollection<T> interface decoupled from mongodb types
    • Service tokens for dependency injection (MongoConnectionToken, RedisConnectionToken)

    @esengine/database (Layer 2)

    • Generic Repository<T> with CRUD, pagination, soft delete
    • UserRepository with registration, authentication, role management
    • Password hashing utilities using scrypt
    • Query operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $like, $regex

    @esengine/transaction

    • Refactored MongoStorage to use shared connection from @esengine/database-drivers
    • Removed factory pattern in favor of shared connection (breaking change)
    • Simplified API: createMongoStorage(connection, options?)

    Example usage:

    import { createMongoConnection } from '@esengine/database-drivers';
    import { UserRepository } from '@esengine/database';
    import { createMongoStorage, TransactionManager } from '@esengine/transaction';
    
    // Create shared connection
    const mongo = createMongoConnection({
        uri: 'mongodb://localhost:27017',
        database: 'game'
    });
    await mongo.connect();
    
    // Use for database operations
    const userRepo = new UserRepository(mongo);
    await userRepo.register({ username: 'john', password: '123456' });
    
    // Use for transactions (same connection)
    const storage = createMongoStorage(mongo);
    const txManager = new TransactionManager({ storage });