refactor(firm): performance foreign-supervisor filter

This commit is contained in:
Steffen Jost 2023-11-10 17:00:10 +01:00
parent 674f6fd81f
commit 71c290996d

View File

@ -298,17 +298,29 @@ mkFirmAllTable isAdmin uid = do
) )
) )
, single ("foreign-supervisor", FilterColumn $ \row (getLast -> criterion) -> , single ("foreign-supervisor", FilterColumn $ \row (getLast -> criterion) ->
-- let checkSuper = do
-- usrSpr <- E.from $ E.table @UserSupervisor
-- E.where_ $ E.notExists (do
-- spr <- E.from $ E.table @UserCompany
-- E.where_ $ spr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
-- E.&&. spr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
-- ) E.&&. E.exists (do
-- usr <- E.from $ E.table @UserCompany
-- E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
-- E.&&. usr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorUser
-- )
let checkSuper = do let checkSuper = do
usrSpr <- E.from $ E.table @UserSupervisor usr <- E.from $ E.table @UserCompany
E.where_ $ E.notExists (do E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
spr <- E.from $ E.table @UserCompany E.&&. E.exists (do
E.where_ $ spr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId usrSpr <- E.from $ E.table @UserSupervisor
E.&&. spr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor E.where_ $ usrSpr E.^. UserSupervisorUser E.==. usr E.^. UserCompanyUser
) E.&&. E.exists (do E.&&. E.notExists (do
usr <- E.from $ E.table @UserCompany sprCmp <- E.from $ E.table @UserCompany
E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId E.where_ $ sprCmp E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
E.&&. usr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorUser E.&&. sprCmp E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
) )
)
in case criterion of in case criterion of
Nothing -> E.true Nothing -> E.true
Just True -> E.exists checkSuper Just True -> E.exists checkSuper