1
+ import logging
2
+
3
+ from constants import PAYMENT_MODE_FREE_CALL
1
4
from models import UserOrgGroupModel , UsageModel
2
5
from repository .org_service_config_repository import OrgServiceRepo
3
6
from repository .usage_repository import UsageRepository
4
7
from repository .user_org_group_repository import UserOrgGroupRepository
5
8
9
+ logger = logging .getLogger (__name__ )
10
+
6
11
7
12
class Storage (object ):
8
13
@@ -16,47 +21,90 @@ def get_usage_details(self, username, org_id, service_id, group_id=None):
16
21
17
22
18
23
class DatabaseStorage (Storage ):
19
- usage_repo = UsageRepository ()
20
- org_service_config_repo = OrgServiceRepo ()
21
- user_org_group_repo = UserOrgGroupRepository ()
22
24
23
- def get_user_org_group (self , usage_details ):
24
- user_org_group_repo_data = self .user_org_group_repo .get_user_org_group_data (
25
- payment_group_id = usage_details ["group_id" ],
26
- org_id = usage_details ["organization_id" ],
27
- user_name = usage_details ["username" ],
28
- service_id = usage_details ["service_id" ],
29
- resource = usage_details ["service_method" ]
30
- )
25
+ def __init__ (self ):
26
+ self .usage_repo = UsageRepository ()
27
+ self .org_service_config_repo = OrgServiceRepo ()
28
+ self .user_org_group_repo = UserOrgGroupRepository ()
31
29
32
- return user_org_group_repo_data
30
+ def get_user_org_group_id (self , usage_details ):
31
+
32
+ if usage_details ['payment_mode' ] == PAYMENT_MODE_FREE_CALL :
33
+ user_org_group_id = self .user_org_group_repo .get_user_org_group_id_by_username (
34
+ usage_details ['username' ],
35
+ usage_details ['organization_id' ],
36
+ usage_details ['service_id' ],
37
+ usage_details ['service_method' ]
38
+ )
39
+ elif usage_details ['user_address' ] is None :
40
+ user_org_group_id = self .user_org_group_repo .get_user_org_group_id_by_user_address (
41
+ usage_details ['user_address' ],
42
+ usage_details ['organization_id' ],
43
+ usage_details ['service_id' ],
44
+ usage_details ['service_method' ],
45
+ usage_details ['group_id' ]
46
+ )
47
+ else :
48
+ raise Exception ('Unknown user request error' )
49
+
50
+ if user_org_group_id is not None :
51
+ return user_org_group_id .id
52
+ return user_org_group_id
33
53
34
54
def add_usage_data (self , usage_details ):
35
- existing_user_org_group_repo_data = self .get_user_org_group (
36
- usage_details )
55
+ user_org_group_id = self .get_user_org_group_id (usage_details )
37
56
38
- if existing_user_org_group_repo_data is None :
39
- print ("existing_user_org_group_repo_data is None" )
57
+ if user_org_group_id is None :
58
+ logger .info (f"No user org group data found for "
59
+ f"group_id: { usage_details ['group_id' ]} , "
60
+ f"org_id: { usage_details ['organization_id' ]} , "
61
+ f"user_name: { usage_details ['username' ]} , "
62
+ f"user_address: { usage_details ['user_address' ]} , "
63
+ f"service_id: { usage_details ['service_id' ]} , "
64
+ f"resource { usage_details ['service_method' ]} " )
40
65
new_user_org_record = UserOrgGroupModel (
41
66
payment_group_id = usage_details ["group_id" ],
42
67
org_id = usage_details ["organization_id" ],
43
68
user_name = usage_details ["username" ],
69
+ user_address = usage_details ["user_address" ],
44
70
service_id = usage_details ["service_id" ],
45
71
resource = usage_details ["service_method" ]
46
72
)
47
73
self .user_org_group_repo .create_item (new_user_org_record )
74
+ logger .info (f"Added user org group data\n group_id: { usage_details ['group_id' ]} , "
75
+ f"org_id: { usage_details ['organization_id' ]} , "
76
+ f"user_name: { usage_details ['username' ]} , "
77
+ f"user_address: { usage_details ['user_address' ]} , "
78
+ f"service_id: { usage_details ['service_id' ]} , "
79
+ f"resource { usage_details ['service_method' ]} " )
80
+ user_org_group_id = self .get_user_org_group_id (usage_details )
48
81
49
- user_org_group_repo_data = self .get_user_org_group (usage_details )
50
- user_org_group_id = user_org_group_repo_data .id
51
82
usage_record = UsageModel (
83
+ client_type = usage_details ['client_type' ],
84
+ ethereum_json_rpc_endpoint = usage_details ['ethereum_json_rpc_endpoint' ],
85
+ registry_address_key = usage_details ['registry_address_key' ],
52
86
user_org_group_id = user_org_group_id ,
53
87
status = usage_details ['status' ],
88
+ start_time = usage_details ['start_time' ],
89
+ end_time = usage_details ['end_time' ],
90
+ response_time = usage_details ['response_time' ],
91
+ response_code = usage_details ['response_code' ],
92
+ error_message = usage_details ['error_message' ],
93
+ version = usage_details ['version' ],
94
+ channel_id = usage_details ['channel_id' ],
95
+ operation = usage_details ['operation' ],
96
+ group_id = usage_details ["group_id" ],
97
+ org_id = usage_details ["organization_id" ],
54
98
usage_type = usage_details ['usage_type' ],
55
99
usage_value = usage_details ['usage_value' ],
56
- start_time = usage_details ['start_time' ],
57
- end_time = usage_details ['end_time' ]
100
+ user_details = usage_details ['user_details' ],
101
+ user_name = usage_details ["username" ],
102
+ service_id = usage_details ["service_id" ],
103
+ resource = usage_details ["service_method" ],
104
+ request_id = usage_details ["request_id" ]
58
105
)
59
106
self .usage_repo .create_item (usage_record )
107
+ logger .info (f"added usage data for { usage_details } " )
60
108
61
109
def get_usage_details (self , user_name , org_id , service_id , group_id = None ):
62
110
optin_time = self .usage_repo .get_optin_time (
0 commit comments