1
+ from constants import PAYMENT_MODE_FREE_CALL
1
2
from models import UserOrgGroupModel , UsageModel
2
3
from repository .org_service_config_repository import OrgServiceRepo
3
4
from repository .usage_repository import UsageRepository
4
5
from repository .user_org_group_repository import UserOrgGroupRepository
5
6
6
7
8
+ def is_free_call (usage_details_dict ):
9
+ if not usage_details_dict ['payment_mode' ] == 'free_call' :
10
+ return True
11
+ return False
12
+
13
+
7
14
class Storage (object ):
8
15
9
16
# Interface to raad write data fom cache or database
@@ -16,38 +23,56 @@ def get_usage_details(self, username, org_id, service_id, group_id=None):
16
23
17
24
18
25
class DatabaseStorage (Storage ):
19
- usage_repo = UsageRepository ()
20
- org_service_config_repo = OrgServiceRepo ()
21
- user_org_group_repo = UserOrgGroupRepository ()
22
26
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
- )
27
+ def __init__ (self ):
28
+ self .usage_repo = UsageRepository ()
29
+ self .org_service_config_repo = OrgServiceRepo ()
30
+ self .user_org_group_repo = UserOrgGroupRepository ()
31
+
32
+ def get_user_org_group_id (self , usage_details ):
31
33
32
- return user_org_group_repo_data
34
+ if usage_details ['payment_mode' ] == PAYMENT_MODE_FREE_CALL :
35
+ user_org_group_id = self .user_org_group_repo .get_user_org_group_id_by_username (
36
+ usage_details ['username' ],
37
+ usage_details ['organization_id' ],
38
+ usage_details ['service_id' ],
39
+ usage_details ['service_method' ]
40
+ )
41
+ elif usage_details ['user_address' ] is None :
42
+ user_org_group_id = self .user_org_group_repo .get_user_org_group_id_by_user_address (
43
+ usage_details ['user_address' ],
44
+ usage_details ['organization_id' ],
45
+ usage_details ['service_id' ],
46
+ usage_details ['service_method' ],
47
+ usage_details ['group_id' ]
48
+ )
49
+ else :
50
+ raise Exception ('Unknown user request error' )
51
+
52
+ if user_org_group_id is not None :
53
+ return user_org_group_id .id
54
+ return user_org_group_id
55
+
56
+ def add_user_org_group (self , username , user_address , service_id , group_id ):
57
+ pass
33
58
34
59
def add_usage_data (self , usage_details ):
35
- existing_user_org_group_repo_data = self .get_user_org_group (
36
- usage_details )
60
+ user_org_group_id = self .get_user_org_group_id (usage_details )
37
61
38
- if existing_user_org_group_repo_data is None :
39
- print ("existing_user_org_group_repo_data is None " )
62
+ if user_org_group_id is None :
63
+ print (f"No user org group data found for user " )
40
64
new_user_org_record = UserOrgGroupModel (
41
65
payment_group_id = usage_details ["group_id" ],
42
66
org_id = usage_details ["organization_id" ],
43
67
user_name = usage_details ["username" ],
68
+ user_address = usage_details ["user_address" ],
44
69
service_id = usage_details ["service_id" ],
45
70
resource = usage_details ["service_method" ]
46
71
)
47
72
self .user_org_group_repo .create_item (new_user_org_record )
48
73
49
- user_org_group_repo_data = self .get_user_org_group (usage_details )
50
- user_org_group_id = user_org_group_repo_data . id
74
+ user_org_group_id = self .get_user_org_group_id (usage_details )
75
+
51
76
usage_record = UsageModel (
52
77
client_type = usage_details ['client_type' ],
53
78
ethereum_json_rpc_endpoint = usage_details ['ethereum_json_rpc_endpoint' ],
@@ -70,8 +95,7 @@ def add_usage_data(self, usage_details):
70
95
user_name = usage_details ["username" ],
71
96
service_id = usage_details ["service_id" ],
72
97
resource = usage_details ["service_method" ],
73
- request_id = usage_details ["request_id" ],
74
-
98
+ request_id = usage_details ["request_id" ]
75
99
)
76
100
self .usage_repo .create_item (usage_record )
77
101
@@ -82,4 +106,4 @@ def get_usage_details(self, user_name, org_id, service_id, group_id=None):
82
106
org_id , service_id , optin_time )
83
107
total_calls = self .usage_repo .get_total_calls (
84
108
user_name , org_id , service_id )
85
- return total_calls , free_calls
109
+ return total_calls , free_calls
0 commit comments