nestjs-typeorm-crud
v1.0.20
Published
Libreria para nestjs que facilita el crud con typeorm
Downloads
22
Readme
Libreria para facilitar los cruds con nestjs y typeorm
Facilita los cruds con typeorm brindando las siguientes facilidades:
- Reutilizacion de la logica basica de cualquier CRUD (GetAll,GetOne,CreateOne,UpdateOne,DeleteOne,...)
- Mapeo de las entidades de typeorm y generacion de la documentacion con ApenApi(Swagger)
- Mapeo de las entidades de typeorm y generacion de los Pipes para los endpoins de nestjs para validar las entradas de datos
- Generacion de los endpoints en los controllers con su respectiva documentacion
- Brinda opciones de personalizacion mediante parametros para adaptar a diversas soluciones
Ejemplo: http://git.geocuba.cu/atlasjs/nestjs/examples/typeorm-crud.git
Descripción
- Crear la entidad
@Entity({
name: 'roles',
})
export class RolesEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column({ nullable: true })
description: string;
@ManyToOne(() => FunctionalitiesEntity)
default_functionality: FunctionalitiesEntity;
@ManyToMany(() => FunctionalitiesEntity)
@JoinColumn()
functionalities: FunctionalitiesEntity[];
}- Crear provider para describir la entidad y como generar la documentacion para swagger
@TypeOrmEntityService({
model: {
name: 'Roles',
id: 'roles',
type: RolesEntity,
relations: rel<RolesEntity>({
functionalities:{}
}),
},
})
export class RolesService extends TypeOrmService<RolesEntity> {
constructor(@InjectRepository(RolesEntity) repo) {
super(repo);
}
}- Crear el controller
@ApiTags('Security')
@Controller('security')
export class SecurityController {
constructor(private roles: RolesService) {}
@ApiTags('Roles')
@GetAll({
service: RolesService,
})
async getRoles() {}
@ApiTags('Roles')
@GetOne({
service: RolesService,
})
async getRole() {}
@ApiTags('Roles')
@CreateOne({
service: RolesService,
})
async createRole() {}
@ApiTags('Roles')
@UpdateOne({
service: RolesService,
})
async updateRole() {}
@ApiTags('Roles')
@DeleteOne({
service: RolesService,
softDelete: true,
})
async deleteRole() {}
@ApiTags('Roles')
//Los tipos genericos son optionales, los puse solo para el autocompletamiento de las relaciones
@AddRelation<RolesService, RolesEntity>(
{
service: RolesService,
},
'functionalities',
)
async addFunctionality2Role() {}
@ApiTags('Roles')
@DeleteRelation(
{
service: RolesService,
},
'functionalities',
)
async removeFunctionalityInRole() {}
}Ejemplo de la documentacion con swagger
- Endpoints 