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 +

Impressum / About Us