@aequum/crudl
Version:
aequum CRUD/CRUDL operations common components
56 lines (37 loc) • 1.99 kB
Markdown
aequum CRUD/CRUDL operations common components
==============================================
A set of abstract class for application services having hexagonal
architecture in mind to facilitate CRUD/CRUDL operations (**C**reate, **R**ead, **U**pdate, **D**elete, **L**ist).
Components
----------
## Services
- [`BaseCRUDLService`](https://github.com/fbuccioni/aequum/blob/main/packages/crudl/services/base-crudl.service.ts):
Abstract class/interface for CRUDL methods, return types and some more.
- [`BaseCRUDLPaginatedService`](https://github.com/fbuccioni/aequum/blob/main/packages/crudl/services/base-crudl-paginated.service.ts):
Abstract class/interface extended from `BaseCRUDLService` with a pagination method and return types.
Current implementations in the `` packages
-------------------------------------------------
2. [Mongoose abstract implementation of CRUDL with pagination service via `/mongoose` on GitHub](https://github.com/fbuccioni/aequum/blob/main/packages/mongoose/services/paginated/base-crudl-mongoose-paginated.service.ts)
3. [TypeORM abstract implementation of CRUDL service via `/typeorm`on GitHub](https://github.com/fbuccioni/aequum/blob/main/packages/typeorm/services/base-crudl-typeorm.service.ts)
4. [Users NestJS Implementation in aequum boilerplate on GitHub](https://github.com/fbuccioni/aequum-nestjs-hexa/blob/base%2Bauth%2Bmongoose/src/application/services/users.service.ts)
Example
--------
Example for a simple CRUDL service:
```typescript
import { BaseCRUDLService } from '/crudl';
import { UserRepository } from 'src/infrastructure/database/repositories/user.repository';
class UserService extends BaseCRUDLService<User> {
constructor(
protected repository: UserRepository,
) { }
}
const usersService = new UserService(
new UserRepository(),
);
await usersService.create({
name: 'John Doe',
email: 'john.nothing',
password: 'password',
});
await userService.list();
```