@breadstone/ziegel-data
v0.0.9
Published
Includes a data abstraction layer.
Readme
@breadstone/ziegel-data
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
npm install @breadstone/ziegel-data
# or
yarn add @breadstone/ziegel-data🧩 Features & Usage Examples
Repository Pattern
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
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
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', '[email protected]'));Reactive Repositories
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
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
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.
