Skip to content

Commit

Permalink
wip (case list): query efficiency
Browse files Browse the repository at this point in the history
  • Loading branch information
HeitorMatt committed Apr 28, 2021
1 parent 840214a commit 13e4f70
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 20 deletions.
13 changes: 9 additions & 4 deletions src/adonisjs/app/Controllers/Http/GroupController.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ class GroupController {
let countCases = await Database
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('permissions.entity', 'group')
Expand All @@ -95,7 +97,9 @@ class GroupController {
.distinct('cases.id')
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('permissions.entity', 'group')
Expand All @@ -121,9 +125,10 @@ class GroupController {
const groupId = request.input('groupId')
if(await Group.find(groupId)){
const result = await Database
.select('user_id','group_id','groups.title as group_title')
.select('users.username','user_id','group_id','groups.title as group_title')
.from('users_groups')
.join('groups','users_groups.group_id','groups.id')
.join('users', 'users_groups.user_id', 'users.id')
.where ('users_groups.group_id', groupId)

return response.json(result)
Expand Down Expand Up @@ -170,7 +175,7 @@ class GroupController {
}

async listGroups ({request, auth, response}){

try {
const groupId = request.input('groupId')

Expand Down
24 changes: 16 additions & 8 deletions src/adonisjs/app/Controllers/Http/v1/CategoryController.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,10 @@ class CategoryController {
.join('case_properties', 'case_properties.case_id', 'cases.id')
.join('properties', 'properties.id', 'case_properties.property_id')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.category_id', category.id)
Expand Down Expand Up @@ -143,7 +146,6 @@ class CategoryController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down Expand Up @@ -177,7 +179,10 @@ class CategoryController {
.join('case_properties', 'case_properties.case_id', 'cases.id')
.join('properties', 'properties.id', 'case_properties.property_id')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.category_id', category.id)
Expand Down Expand Up @@ -211,7 +216,6 @@ class CategoryController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand All @@ -232,7 +236,10 @@ class CategoryController {
let countCases = await Database
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.category_id', category.id)
Expand Down Expand Up @@ -264,7 +271,6 @@ class CategoryController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down Expand Up @@ -292,7 +298,10 @@ class CategoryController {
.distinct('cases.id')
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.category_id', category.id)
Expand Down Expand Up @@ -324,7 +333,6 @@ class CategoryController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down
24 changes: 16 additions & 8 deletions src/adonisjs/app/Controllers/Http/v1/UserController.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,10 @@ class UserController {
.join('case_properties', 'case_properties.case_id', 'cases.id')
.join('properties', 'properties.id', 'case_properties.property_id')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('properties.title', propertyFilter)
Expand Down Expand Up @@ -251,7 +254,6 @@ class UserController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down Expand Up @@ -289,7 +291,10 @@ class UserController {
.join('case_properties', 'case_properties.case_id', 'cases.id')
.join('properties', 'properties.id', 'case_properties.property_id')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('properties.title', propertyFilter)
Expand Down Expand Up @@ -322,7 +327,6 @@ class UserController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand All @@ -343,7 +347,10 @@ class UserController {
let countCases = await Database
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.published', '>=', publishedFilter)
Expand Down Expand Up @@ -374,7 +381,6 @@ class UserController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down Expand Up @@ -406,7 +412,10 @@ class UserController {
.distinct('cases.id')
.from('cases')
.leftJoin('permissions', 'cases.id', 'permissions.table_id')
.join('users_groups')
.leftJoin('users_groups', function() {
this.on('permissions.subject', '=', 'users_groups.group_id')
.andOn('users_groups.user_id', '=', Database.raw('?', [user.id]));
})
.join('users', 'cases.author_id','users.id')
.join('institutions', 'users.institution_id', 'institutions.id')
.where('cases.published', '>=', publishedFilter)
Expand Down Expand Up @@ -437,7 +446,6 @@ class UserController {
.orWhere(function() {
this
.where('permissions.entity', 'group')
.whereRaw('permissions.subject = users_groups.group_id')
.where('users_groups.user_id', user.id)
})
})
Expand Down

0 comments on commit 13e4f70

Please sign in to comment.