@jihyunlab/typeorm-repository
v1.0.8
Published
JihyunLab TypeORM Repository.
Readme
@jihyunlab/typeorm-repository
@jihyunlab/typeorm-repository was developed to make TypeORM easier and more convenient to use.
Installation
npm i @jihyunlab/typeorm-repositoryUsage
@jihyunlab/typeorm-repository can be integrated into NestJS.
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TypeOrmRepository } from '@jihyunlab/typeorm-repository';
@Injectable()
export class UserService {
private readonly userTypeOrmRepository: TypeOrmRepository;
constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>
) {
this.userTypeOrmRepository = new TypeOrmRepository(this.userRepository);
}
}Provides a simple method for inserting entities.
const result = await this.userTypeOrmRepository.insert({
name: 'JihyunLab',
email: '[email protected]',
});Provides a method for retrieving a single entity.
const result = await this.userTypeOrmRepository.findOne({
name: 'JihyunLab',
email: '[email protected]',
});{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}Provides case-sensitivity configuration with a simple mechanism.
const result = await this.userTypeOrmRepository.findOne(
{
name: 'jihyunlab',
},
{ ignoreCase: false }
);nullProvides substring-search functionality with a simple mechanism.
const result = await this.userTypeOrmRepository.findOne(
{
name: 'Jihyun',
email: '[email protected]',
},
{ contains: true }
);{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}Provides IN-based search and sorting capabilities.
The matching options, ignoreCase and contains, do not apply when using the IN operator.
const result = await this.userTypeOrmRepository.find(
{
name: ['JihyunLab'],
},
{ limit: 1, offset: 0, sort: 'created_at', order: ORDER.DESC }
);[
{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}
]Supports negative conditions such as $ne.
const result = await this.userTypeOrmRepository.find(
{
name: { $ne: 'JihyunLab' },
},
{ limit: 1, offset: 0, sort: 'created_at', order: ORDER.DESC }
);[]Supports regex-based search using $regex.
const result = await this.userTypeOrmRepository.find(
{
name: { $regex: '^JIHYUNLAB$', $options: 'i' },
},
{ limit: 1, offset: 0, sort: 'created_at', order: ORDER.DESC }
);[
{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}
]Supports comparison operators including $gt, $gte, $lt and $lte.
const result = await this.userTypeOrmRepository.find({
created_at: { $lte: new Date() },
});[
{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}
]Provides OR-based query functionality by accepting multiple criteria as an array.
const result = await this.userTypeOrmRepository.find([
{
name: 'JihyunLab',
},
{
email: { $regex: '^[email protected]$', $options: 'i' },
},
]);[
{
"id": 1,
"name": "JihyunLab",
"email": "[email protected]",
"created_at": "2025-11-19T03:33:03.231Z"
}
]Provides entity update functionality based on the same conditions used for find queries.
const result = await this.userTypeOrmRepository.update(
{
name: 'Jihyun',
email: '[email protected]',
},
{ name: 'JihyunLab', email: '[email protected]' },
{ contains: true }
);{
"generatedMaps": [],
"raw": [],
"affected": 1
}Provides entity deletion functionality based on the same conditions used for find queries.
const result = await this.userTypeOrmRepository.delete(
{
name: 'Jihyun',
email: '[email protected]',
},
{ contains: true }
);{
"raw": [],
"affected": 1
}Credits
Authored and maintained by JihyunLab <[email protected]>
License
Open source licensed as MIT.
