Skip to content

Commit

Permalink
feat: same mongo filters added to sql repositories, alias was added t… (
Browse files Browse the repository at this point in the history
#81)

* feat: same mongo filters added to sql repositories, alias was added to paginator

* feat: filter user enable, aslias prefix added to queries
  • Loading branch information
SmartNetAR committed Jan 14, 2022
1 parent a0409bf commit 96fc638
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 12 deletions.
3 changes: 2 additions & 1 deletion src/App/Presentation/Shared/Paginator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class Paginator implements IPaginator
let order = value.toUpperCase();
order = (order === 'DESC') ? 'DESC' : 'ASC';

this.queryBuilder.addOrderBy(key, order as any);
const { alias } = this.queryBuilder;
this.queryBuilder.addOrderBy(`${alias}.${key}`, order as any);
});
}

Expand Down
6 changes: 4 additions & 2 deletions src/File/Infrastructure/Repositories/FileSqlRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ class FileSqlRepository extends BaseSqlRepository<IFileDomain> implements IFileR

if (filter.has(FileFilter.NAME))
{
queryBuilder.andWhere(`i.${ FileFilter.NAME } like :${ FileFilter.NAME}`);
queryBuilder.setParameter(FileFilter.NAME, `%${filter.get(FileFilter.NAME)}%`);
const name = filter.get(FileFilter.NAME);

queryBuilder.andWhere(`i.${FileFilter.NAME} ilike :${FileFilter.NAME}`);
queryBuilder.setParameter(FileFilter.NAME, `%${name}%`);
}

return new Paginator(queryBuilder, criteria);
Expand Down
12 changes: 8 additions & 4 deletions src/Item/Infrastructure/Repositories/ItemSqlRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,18 @@ class ItemSqlRepository extends BaseSqlRepository<Item> implements IItemReposito

if (filter.has(ItemFilter.TYPE))
{
queryBuilder.andWhere(`i.${ ItemFilter.TYPE } = :${ ItemFilter.TYPE }`);
queryBuilder.setParameter(ItemFilter.TYPE, filter.get(ItemFilter.TYPE));
const type = filter.get(ItemFilter.TYPE);

queryBuilder.andWhere(`i.${ItemFilter.TYPE} = :${ItemFilter.TYPE}`);
queryBuilder.setParameter(ItemFilter.TYPE, type);
}

if (filter.has(ItemFilter.NAME))
{
queryBuilder.andWhere(`i.${ ItemFilter.NAME } like :${ ItemFilter.NAME }`);
queryBuilder.setParameter(ItemFilter.NAME, `%${filter.get(ItemFilter.NAME)}%`);
const name = filter.get(ItemFilter.NAME);

queryBuilder.andWhere(`i.${ItemFilter.NAME} ilike :${ItemFilter.NAME}`);
queryBuilder.setParameter(ItemFilter.NAME, `%${name}%`);
}

queryBuilder.leftJoinAndSelect('i.createdBy', 'createdBy');
Expand Down
26 changes: 24 additions & 2 deletions src/Role/Infrastructure/Repositories/RoleSqlRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Role from '../../Domain/Entities/Role';
import RoleSchema from '../Schemas/RoleTypeORM';
import RoleOfSystemNotDeletedException from '../../Domain/Exceptions/RoleOfSystemNotDeletedException';
import NotFoundException from '../../../Shared/Exceptions/NotFoundException';
import Roles from '../../../Config/Roles';

@injectable()
class RoleSqlRepository extends BaseSqlRepository<IRoleDomain> implements IRoleRepository
Expand All @@ -32,12 +33,33 @@ class RoleSqlRepository extends BaseSqlRepository<IRoleDomain> implements IRoleR

queryBuilder.where('1 = 1');

if (filter.has(RoleFilter.ENABLE))
{
const _enable = filter.get(RoleFilter.ENABLE);
const enable: boolean = _enable !== 'false';

queryBuilder.andWhere(`i.${RoleFilter.ENABLE} = :${RoleFilter.ENABLE}`);
queryBuilder.setParameter(RoleFilter.ENABLE, enable);
}

if (filter.has(RoleFilter.NAME))
{
queryBuilder.andWhere(`i.${ RoleFilter.NAME } like :${ RoleFilter.NAME}`);
queryBuilder.setParameter(RoleFilter.NAME, `%${filter.get(RoleFilter.NAME)}%`);
const name = filter.get(RoleFilter.NAME);

queryBuilder.andWhere(`i.${RoleFilter.NAME} ilike :${RoleFilter.NAME}`);
queryBuilder.setParameter(RoleFilter.NAME, `%${name}%`);
}

if (filter.has(RoleFilter.SLUG))
{
const slug = filter.get(RoleFilter.SLUG);

queryBuilder.andWhere(`i.${RoleFilter.SLUG} ilike :${RoleFilter.SLUG}`);
queryBuilder.setParameter(RoleFilter.SLUG, `%${slug}%`);
}

queryBuilder.andWhere(`i.${RoleFilter.SLUG} != '${Roles.SUPER_ADMIN.toLowerCase()}'`);

return new Paginator(queryBuilder, criteria);
}

Expand Down
19 changes: 16 additions & 3 deletions src/User/Infrastructure/Repositories/UserSqlRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,27 @@ class UserSqlRepository extends BaseSqlRepository<IUserDomain> implements IUserR

if (filter.has(UserFilter.ENABLE))
{
const _enable = filter.get(UserFilter.ENABLE);
const enable: boolean = _enable !== 'false';

queryBuilder.andWhere(`i.${UserFilter.ENABLE} = :${UserFilter.ENABLE}`);
queryBuilder.setParameter(UserFilter.ENABLE, filter.get(UserFilter.ENABLE));
queryBuilder.setParameter(UserFilter.ENABLE, enable);
}

if (filter.has(UserFilter.EMAIL))
{
queryBuilder.andWhere(`i.${UserFilter.EMAIL} like :${UserFilter.EMAIL}`);
queryBuilder.setParameter(UserFilter.EMAIL, `%${filter.get(UserFilter.EMAIL)}%`);
const email = filter.get(UserFilter.EMAIL);

queryBuilder.andWhere(`i.${UserFilter.EMAIL} ilike :${UserFilter.EMAIL}`);
queryBuilder.setParameter(UserFilter.EMAIL, `%${email}%`);
}

if (filter.has(UserFilter.IS_SUPER_ADMIN))
{
const isSuperAdmin = filter.get(UserFilter.IS_SUPER_ADMIN);

queryBuilder.andWhere(`i.${UserFilter.IS_SUPER_ADMIN} = :${UserFilter.IS_SUPER_ADMIN}`);
queryBuilder.setParameter(UserFilter.IS_SUPER_ADMIN, isSuperAdmin);
}

queryBuilder.leftJoinAndSelect('i.roles', 'role');
Expand Down

0 comments on commit 96fc638

Please sign in to comment.