create-chuntianxiaozhu
Version:
春天小猪模板工具
58 lines (50 loc) • 1.44 kB
text/typescript
import { Injectable } from '@nestjs/common';
import { AppUser } from './entity/user.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
()
export class UserService {
constructor(
(AppUser) private userRepository: Repository<AppUser>,
) {}
findUserByEmail(email: string) {
return this.userRepository.findOne({
where: {
email,
},
});
}
save(user: Partial<AppUser>) {
return this.userRepository.save(new AppUser(user));
}
updateById(id: number, user: Partial<AppUser>) {
return this.userRepository.update(id, new AppUser(user));
}
findById(id: number) {
return this.userRepository.findOneBy({
id,
});
}
async addRole(id: number, roleName: string, user?: AppUser) {
if (!user) {
user = await this.findById(id);
}
this.updateById(id, {
roles: user.roles ? `${user.roles},${roleName}` : roleName,
});
}
async removeRole(id: number, roleName: string, user?: AppUser) {
if (!user) {
user = await this.findById(id);
}
const roles = user.roles || '';
const formatRoles = roles + ',';
const formatRoleName = roleName + ',';
if (formatRoles.indexOf(formatRoleName) > -1) {
formatRoles.replaceAll(formatRoleName, '');
}
this.updateById(id, {
roles: formatRoles.slice(0, formatRoles.length - 1),
});
}
}