public async Task <IList <AppRoleModel> > SearchAsync(AppRoleSearchModel model) { using (var session = factory.OpenSession()) { var conn = session.Connection; var sql = new StringBuilder(); sql.AppendLine("select ar.id, ir.name, ar.description, ar.is_default, ar.is_anonymous, count(ur.*) as user_count"); sql.AppendLine("from public.aspnet_roles ir"); sql.AppendLine("inner join public.app_roles ar on ar.id = ir.id"); sql.AppendLine("left join public.aspnet_user_roles ur on ir.id = ur.role_id"); sql.AppendLine("group by ar.id, ir.name, ar.description, ar.is_default"); sql.AppendLine("order by ar.id;"); var data = await conn.QueryAsync <AppRoleModel>(sql.ToString()); return(data.ToList()); } }
public async Task <ActionResult <PaginatedResponseModel <AppRoleModel> > > GetAll( [FromQuery] AppRoleSearchModel model ) { try { var data = await identityRepo.SearchAsync(model); var result = new PaginatedResponseModel <AppRoleModel> { Skip = model.Skip, Take = model.Take, Total = data.Count, Data = data }; return(result); } catch (Exception ex) { logger.LogError(ex, $"Can not search roles with {model.ToJson()}"); return(this.InternalServerError(ex)); } }