liquid_feedback_frontend
changeset 1852:e593570a23c5
More efficient algorithm
author | bsw |
---|---|
date | Tue Mar 22 10:35:44 2022 +0100 (2022-03-22) |
parents | a01d5c0604de |
children | 9c298b5832e7 |
files | lib/token/sync.lua |
line diff
1.1 --- a/lib/token/sync.lua Tue Mar 22 10:25:35 2022 +0100 1.2 +++ b/lib/token/sync.lua Tue Mar 22 10:35:44 2022 +0100 1.3 @@ -22,14 +22,7 @@ 1.4 1.5 local data = json.import(output) 1.6 1.7 - local privileges = Privilege:new_selector() 1.8 - :add_where{ "unit_id = ?", config.token.unit_id } 1.9 - :exec() 1.10 - 1.11 - for i, privilege in ipairs(privileges) do 1.12 - privilege:destroy() 1.13 - end 1.14 - 1.15 + local privileged_member_ids = {} 1.16 for i, entry in ipairs(data.data.balanceNotificationMany) do 1.17 local member = Member:new_selector() 1.18 :join("member_profile", nil, "member_profile.member_id = member.id") 1.19 @@ -37,9 +30,17 @@ 1.20 :optional_object_mode() 1.21 :exec() 1.22 if member then 1.23 - local privilege = Privilege:new() 1.24 - privilege.unit_id = config.token.unit_id 1.25 - privilege.member_id = member.id 1.26 + privileged_member_ids[member.id] = true 1.27 + local privilege = Privilege:new_selector() 1.28 + :add_where{ "unit_id = ?", config.token.unit_id } 1.29 + :add_where{ "member_id = ?", member.id } 1.30 + :optional_object_mode() 1.31 + :exec() 1.32 + if not privilege then 1.33 + privilege = Privilege:new() 1.34 + privilege.unit_id = config.token.unit_id 1.35 + privilege.member_id = member.id 1.36 + end 1.37 privilege.initiative_right = true 1.38 privilege.voting_right = true 1.39 privilege.weight = entry.amount 1.40 @@ -47,4 +48,16 @@ 1.41 end 1.42 end 1.43 1.44 -end 1.45 \ No newline at end of file 1.46 + local privileges = Privilege:new_selector() 1.47 + :add_where{ "unit_id = ?", config.token.unit_id } 1.48 + :exec() 1.49 + 1.50 + for i, privilege in ipairs(privileges) do 1.51 + if not privileged_member_ids[privilege.member_id] then 1.52 + privilege:destroy() 1.53 + end 1.54 + end 1.55 + 1.56 + 1.57 +end 1.58 +