refactor(firm): performance foreign-supervisor filter
This commit is contained in:
parent
674f6fd81f
commit
71c290996d
@ -298,18 +298,30 @@ mkFirmAllTable isAdmin uid = do
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
, single ("foreign-supervisor", FilterColumn $ \row (getLast -> criterion) ->
|
, single ("foreign-supervisor", FilterColumn $ \row (getLast -> criterion) ->
|
||||||
let checkSuper = do
|
-- let checkSuper = do
|
||||||
usrSpr <- E.from $ E.table @UserSupervisor
|
-- usrSpr <- E.from $ E.table @UserSupervisor
|
||||||
E.where_ $ E.notExists (do
|
-- E.where_ $ E.notExists (do
|
||||||
spr <- E.from $ E.table @UserCompany
|
-- spr <- E.from $ E.table @UserCompany
|
||||||
E.where_ $ spr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
-- E.where_ $ spr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||||
E.&&. spr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
|
-- E.&&. spr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
|
||||||
) E.&&. E.exists (do
|
-- ) E.&&. E.exists (do
|
||||||
usr <- E.from $ E.table @UserCompany
|
-- usr <- E.from $ E.table @UserCompany
|
||||||
E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
-- E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||||
E.&&. usr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorUser
|
-- E.&&. usr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorUser
|
||||||
)
|
-- )
|
||||||
in case criterion of
|
let checkSuper = do
|
||||||
|
usr <- E.from $ E.table @UserCompany
|
||||||
|
E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||||
|
E.&&. E.exists (do
|
||||||
|
usrSpr <- E.from $ E.table @UserSupervisor
|
||||||
|
E.where_ $ usrSpr E.^. UserSupervisorUser E.==. usr E.^. UserCompanyUser
|
||||||
|
E.&&. E.notExists (do
|
||||||
|
sprCmp <- E.from $ E.table @UserCompany
|
||||||
|
E.where_ $ sprCmp E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||||
|
E.&&. sprCmp E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
|
||||||
|
)
|
||||||
|
)
|
||||||
|
in case criterion of
|
||||||
Nothing -> E.true
|
Nothing -> E.true
|
||||||
Just True -> E.exists checkSuper
|
Just True -> E.exists checkSuper
|
||||||
Just False -> E.notExists checkSuper
|
Just False -> E.notExists checkSuper
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user