Skip to content

MIT LicenseTypeScriptnpm

A robust abstraction layer for data access and entity management in the ziegel framework. Provides repository pattern, entity framework, reactive data access, and transaction management for enterprise applications.

Data Layer: Powerful data abstraction with repository pattern, entity framework, and RxJS-based reactivity for scalable TypeScript projects.

🚀 Overview ​

@breadstone/ziegel-data offers:

  • Repository Pattern: Generic repositories with query, reader, and writer abstractions
  • Entity Framework: Base classes for entities, identification, and converters
  • Unit of Work: Transaction management and change tracking
  • Repository Hub & Pool: Centralized management and pooling of repositories
  • Reactive Repositories: RxJS-based data access with change events
  • Context Resolution: Dependency injection for data contexts
  • Query System: Flexible queries with operators and sorting

📦 Installation ​

bash
npm install @breadstone/ziegel-data
# or
yarn add @breadstone/ziegel-data

🧩 Features & Usage Examples ​

Repository Pattern ​

typescript
import { IRepository, RepositoryBase } from '@breadstone/ziegel-data';

interface User { id: string; name: string; email: string; }
class UserRepository extends RepositoryBase<any, string, User> implements IRepository<string, User> {
  async getById(id: string) { return await this.findSingle(u => u.id === id); }
  async getAll() { return await this.findAll(); }
}

const userRepo = new UserRepository();
const user = await userRepo.getById('123');

Entity Framework ​

typescript
import { EntityBase } from '@breadstone/ziegel-data';
class User extends EntityBase<string> {
  constructor(public name: string, public email: string, id?: string) {
    super(id || crypto.randomUUID());
  }
}

Unit of Work ​

typescript
import { UnitOfWork } from '@breadstone/ziegel-data';
class MyUoW extends UnitOfWork<any> {
  users = new UserRepository();
}
const uow = new MyUoW();
await uow.users.add(new User('Max', 'max@example.com'));

Reactive Repositories ​

typescript
import { ReactiveRepositoryBase, IEntity } from '@breadstone/ziegel-data';
class RxUserRepo extends ReactiveRepositoryBase<any, string, User> {}
const rxRepo = new RxUserRepo();
rxRepo.changes.subscribe(change => console.log(change));

📚 Package import points ​

typescript
import {
    // Context Resolution
    ContextResolver, IContextResolver,

    // Entity Conversion
    IEntityConverter,

    // Decorators
    Repository,

    // Entities
    EntityBase, IEntity,

    // Exceptions
    RepositoryException,

    // Identification
    IdentificatorBase, GuidIdentificator, IIdentificator,

    // Repositories
    RepositoryBase, IRepository, IRepositoryQuery,
    IRepositoryReader, IRepositoryWriter,

    // Repository Hub & Pool
    IRepositoryHub, RepositoryHub,
    IRepositoryPool, RepositoryPool, RepositoryPoolLocator,

    // Repository Query System
    RepositoryConditionOperator, RepositoryQueryOrderDirection,
    RepositoryResponse,

    // Reactive Repositories
    ReactiveRepositoryBase, IReactiveRepository, IReactiveRepositoryChanges,

    // Unit of Work
    IUnitOfWork, UnitOfWork
} from '@breadstone/ziegel-data';

import { RepositoryConditionOperator } from '@breadstone/ziegel-data'; // Use RepositoryConditionOperator for advanced filtering and sorting


### Repository Hub & Pool

```typescript
import { RepositoryHub, RepositoryPool } from '@breadstone/ziegel-data';
const hub = new RepositoryHub();
const pool = new RepositoryPool();
// Register and resolve repositories centrally

📚 Package import points ​

typescript
import {
    // Repository Pattern
    IRepository, RepositoryBase, ReactiveRepositoryBase,

    // Entity Framework
    EntityBase, IEntity,

    // Unit of Work
    UnitOfWork,

    // Repository Management
    RepositoryHub, RepositoryPool,

    // Query System
    RepositoryConditionOperator,

    // Data Context
    IDataContext, DataContextResolver
} from '@breadstone/ziegel-data';

📚 API Documentation ​

For full details, see the generated API docs or browse the source code.

License ​

MIT

Issues ​

Please report bugs and feature requests in the Issue Tracker.

Released under the MIT License.