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
|