@forgeframework/repository
v0.3.0
Published
Provides the repository pattern for the Forge Framework.
Maintainers
Readme
@forgeframework/repository
Provides the repository pattern for the Forge Framework.
Part of the Forge Framework — a TypeScript framework for backend microservices and web applications.
Installation
npm install @forgeframework/repositoryUsage
import { BaseRepository, ForgeUnitOfWork, CachedRepository } from '@forgeframework/repository';
class OrderRepository extends BaseRepository<Order> {
constructor(em: EntityManager) {
super(Order, em);
}
async findByUserId(userId: string): Promise<Order[]> {
return this.findMany({
where: [{ field: 'userId', operator: '=', value: userId }],
orderBy: [{ field: 'createdAt', direction: 'desc' }],
include: ['items', 'user'],
});
}
async findPending(): Promise<Order[]> {
return this.findMany({
where: [{ field: 'status', operator: '=', value: 'pending' }],
});
}
}
// With caching
const orderRepo = new CachedRepository(new OrderRepository(em), cache.store('redis'), {
ttl: 60,
keyPrefix: 'order',
});
// With unit of work
const uow = new ForgeUnitOfWork(em);
const users = uow.register(new UserRepository(em));
const orders = uow.register(new OrderRepository(em));
await users.update(userId, { lastOrderAt: new Date() });
await orders.create({ userId, items, total: 149.99 });
await uow.commit();Documentation
Full API reference and guides: https://carbonforge.io/framework/docs/db/repository
(Documentation site launching soon.)
License
MIT © Carbon Forge
