| rev | line source | 
| bsw@1850 | 1 function _G.sync_token() | 
| bsw@1850 | 2   local request = [[ | 
| bsw@1850 | 3     { | 
| bsw@1850 | 4       "query": "query balanceNotificationMany($tokenSymbol: String) { | 
| bsw@1850 | 5         balanceNotificationMany(filter: { token_symbol: $tokenSymbol }) { | 
| bsw@1850 | 6             _id | 
| bsw@1850 | 7             account_pk | 
| bsw@1850 | 8             name | 
| bsw@1850 | 9             token_symbol | 
| bsw@1850 | 10             amount | 
| bsw@1850 | 11             contractAddress | 
| bsw@1850 | 12             owner | 
| bsw@1850 | 13         } | 
| bsw@1850 | 14       }", | 
| bsw@1850 | 15       "variables": { | 
| bsw@1850 | 16         "tokenSymbol": "]] .. config.token.token_name .. [[" | 
| bsw@1850 | 17       } | 
| bsw@1850 | 18     } | 
| bsw@1850 | 19   ]] | 
| bsw@1850 | 20 | 
| bsw@1850 | 21   local output, err, status = extos.pfilter(request, "curl", "--insecure", "-X", "POST", "-H", "Content-Type: application/json", "-H", "X-REQUEST-TYPE: GraphQL", "-d", "@-", config.token.graphql_url) | 
| bsw@1850 | 22 | 
| bsw@1850 | 23   local data = json.import(output) | 
| bsw@1850 | 24 | 
| bsw@1852 | 25   local privileged_member_ids = {} | 
| bsw@1850 | 26   for i, entry in ipairs(data.data.balanceNotificationMany) do | 
| bsw@1850 | 27     local member = Member:new_selector() | 
| bsw@1850 | 28       :join("member_profile", nil, "member_profile.member_id = member.id") | 
| bsw@1850 | 29       :add_where{ "member_profile.profile->>'" .. config.token.key_profile_field .."' = ?", entry.account_pk } | 
| bsw@1850 | 30       :optional_object_mode() | 
| bsw@1850 | 31       :exec() | 
| bsw@1850 | 32     if member then | 
| bsw@1852 | 33       privileged_member_ids[member.id] = true | 
| bsw@1852 | 34       local privilege = Privilege:new_selector() | 
| bsw@1852 | 35         :add_where{ "unit_id = ?", config.token.unit_id } | 
| bsw@1852 | 36         :add_where{ "member_id = ?", member.id } | 
| bsw@1852 | 37         :optional_object_mode() | 
| bsw@1852 | 38         :exec() | 
| bsw@1852 | 39       if not privilege then | 
| bsw@1852 | 40         privilege = Privilege:new() | 
| bsw@1852 | 41         privilege.unit_id = config.token.unit_id | 
| bsw@1852 | 42         privilege.member_id = member.id | 
| bsw@1852 | 43       end | 
| bsw@1850 | 44       privilege.initiative_right = true | 
| bsw@1850 | 45       privilege.voting_right = true | 
| bsw@1850 | 46       privilege.weight = entry.amount | 
| bsw@1850 | 47       privilege:save() | 
| bsw@1850 | 48     end | 
| bsw@1850 | 49   end | 
| bsw@1850 | 50 | 
| bsw@1852 | 51   local privileges = Privilege:new_selector() | 
| bsw@1852 | 52     :add_where{ "unit_id = ?", config.token.unit_id } | 
| bsw@1852 | 53     :exec() | 
| bsw@1852 | 54 | 
| bsw@1852 | 55   for i, privilege in ipairs(privileges) do | 
| bsw@1852 | 56     if not privileged_member_ids[privilege.member_id] then | 
| bsw@1852 | 57       privilege:destroy() | 
| bsw@1852 | 58     end | 
| bsw@1852 | 59   end | 
| bsw@1852 | 60 | 
| bsw@1852 | 61 | 
| bsw@1852 | 62 end | 
| bsw@1852 | 63 |