Skip to content

Commit c5ceacc

Browse files
committed
changes with handler-repository integration
1 parent 758ae0c commit c5ceacc

File tree

12 files changed

+62
-55
lines changed

12 files changed

+62
-55
lines changed

metering/alembic.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ script_location = alembic
3535
# are written from script.py.mako
3636
# output_encoding = utf-8
3737

38-
sqlalchemy.url = "db_url"
38+
sqlalchemy.url = mysql+pymysql://url
3939

4040

4141
# Logging configuration

metering/alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
# this is the Alembic Config object, which provides
1010
# access to the values within the .ini file in use.
11-
from metering.models import Base
11+
from models import Base
1212

1313
config = context.config
1414

metering/alembic/versions/699f08a8834e_added_tables.py renamed to metering/alembic/versions/d6ae2a8867cf_added_tables.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
"""added tables
22
3-
Revision ID: 699f08a8834e
3+
Revision ID: d6ae2a8867cf
44
Revises:
5-
Create Date: 2019-08-07 22:55:12.604492
5+
Create Date: 2019-08-08 15:09:48.362244
66
77
"""
88
from alembic import op
99
import sqlalchemy as sa
1010

1111

1212
# revision identifiers, used by Alembic.
13-
revision = '699f08a8834e'
13+
revision = 'd6ae2a8867cf'
1414
down_revision = None
1515
branch_labels = None
1616
depends_on = None
@@ -20,8 +20,8 @@ def upgrade():
2020
# ### commands auto generated by Alembic - please adjust! ###
2121
op.create_table('service_config',
2222
sa.Column('id', sa.Integer(), nullable=False),
23-
sa.Column('row_id', sa.VARCHAR(length=32), nullable=False),
24-
sa.Column('service_id', sa.VARCHAR(length=32), nullable=False),
23+
sa.Column('row_id', sa.VARCHAR(length=225), nullable=False),
24+
sa.Column('service_id', sa.VARCHAR(length=225), nullable=False),
2525
sa.Column('free_calls', sa.Integer(), nullable=False),
2626
sa.Column('effective_start_date', sa.TIMESTAMP(timezone=True), nullable=True),
2727
sa.Column('effective_end_date', sa.TIMESTAMP(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=True),
@@ -30,19 +30,18 @@ def upgrade():
3030
)
3131
op.create_table('user_org_group',
3232
sa.Column('id', sa.Integer(), nullable=False),
33-
sa.Column('group', sa.VARCHAR(length=32), nullable=True),
34-
sa.Column('org_name', sa.VARCHAR(length=32), nullable=False),
35-
sa.Column('user_name', sa.VARCHAR(length=32), nullable=False),
36-
sa.Column('user_id', sa.Integer(), nullable=False),
33+
sa.Column('group', sa.VARCHAR(length=225), nullable=True),
34+
sa.Column('org_name', sa.VARCHAR(length=225), nullable=False),
35+
sa.Column('user_name', sa.VARCHAR(length=225), nullable=False),
3736
sa.Column('created_at', sa.TIMESTAMP(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
38-
sa.Column('service_id', sa.VARCHAR(length=32), nullable=False),
39-
sa.Column('resource', sa.VARCHAR(length=32), nullable=True),
37+
sa.Column('service_id', sa.VARCHAR(length=225), nullable=False),
38+
sa.Column('resource', sa.VARCHAR(length=225), nullable=True),
4039
sa.PrimaryKeyConstraint('id')
4140
)
4241
op.create_table('usage_table',
4342
sa.Column('id', sa.Integer(), nullable=False),
4443
sa.Column('user_org_group_id', sa.Integer(), nullable=False),
45-
sa.Column('usage_type', sa.VARCHAR(length=32), nullable=False),
44+
sa.Column('usage_type', sa.VARCHAR(length=225), nullable=False),
4645
sa.Column('usage_value', sa.Integer(), nullable=False),
4746
sa.Column('start_time', sa.TIMESTAMP(timezone=True), nullable=True),
4847
sa.Column('end_time', sa.TIMESTAMP(timezone=True), nullable=True),

metering/handlers/freecall_handler.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
def get_and_validate_requried_params(event):
1010
try:
11-
org_id = event['queryStringParameters']['org_id']
11+
org_id = event['queryStringParameters']['organisation_id']
1212
service_id = event['queryStringParameters']['service_id']
13-
user_id = event['queryStringParameters']['service_id']
13+
user_id = event['queryStringParameters']['user_id']
1414
except Exception as e:
1515
raise e
1616

@@ -20,4 +20,15 @@ def get_and_validate_requried_params(event):
2020
def main(event, context):
2121
org_id, service_id, user_id = get_and_validate_requried_params(event)
2222
free_call_details = usage_service.get_free_call_details(user_id, org_id, service_id)
23-
return make_response(200, json.dumps(free_call_details))
23+
24+
return_value = {
25+
"statusCode": 200,
26+
"headers": {
27+
"Content-Type": "application/json",
28+
"Access-Control-Allow-Origin": "*",
29+
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
30+
},
31+
"body": json.dumps(free_call_details)
32+
}
33+
34+
return return_value

metering/handlers/usage_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
def get_and_validate_requried_params(event):
1010
try:
1111
body = json.loads(event['body'])
12-
if not check_given_key('org_id'):
12+
if not check_given_key('organization_id', body):
1313
raise Exception("Org id is compulsory parameter in body request")
1414
except Exception as e:
1515
raise e

metering/models.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
class OrgServiceConfigModel(Base):
1010
__tablename__ = 'service_config'
1111
id = Column('id', Integer, primary_key=True)
12-
org_id = Column('row_id', VARCHAR(32), nullable=False)
13-
service_id = Column('service_id', VARCHAR(32), nullable=False)
12+
org_id = Column('row_id', VARCHAR(225), nullable=False)
13+
service_id = Column('service_id', VARCHAR(225), nullable=False)
1414
free_calls = Column('free_calls', Integer, nullable=False)
1515
effective_start_date = Column('effective_start_date', TIMESTAMP(timezone=True))
1616
effective_end_date = Column('effective_end_date', TIMESTAMP(timezone=True), server_default=func.current_timestamp())
@@ -20,20 +20,19 @@ class OrgServiceConfigModel(Base):
2020
class UserOrgGroupModel(Base):
2121
__tablename__ = 'user_org_group'
2222
id = Column('id', Integer, primary_key=True)
23-
payment_group_id = Column('group', VARCHAR(32))
24-
org_id = Column('org_name', VARCHAR(32), nullable=False)
25-
user_name = Column('user_name', VARCHAR(32), nullable=False)
26-
user_id = Column('user_id', Integer, nullable=False)
23+
payment_group_id = Column('group', VARCHAR(225))
24+
org_id = Column('org_name', VARCHAR(225), nullable=False)
25+
user_name = Column('user_name', VARCHAR(225), nullable=False)
2726
created_at = Column('created_at', TIMESTAMP(timezone=True), nullable=False, server_default=func.current_timestamp())
28-
service_id = Column('service_id', VARCHAR(32), nullable=False)
29-
resource = Column('resource', VARCHAR(32))
27+
service_id = Column('service_id', VARCHAR(225), nullable=False)
28+
resource = Column('resource', VARCHAR(225))
3029

3130

3231
class UsageModel(Base):
3332
__tablename__ = 'usage_table'
3433
id = Column('id', Integer, primary_key=True)
3534
user_org_group_id = Column('user_org_group_id', Integer, ForeignKey('user_org_group.id'), nullable=False)
36-
usage_type = Column('usage_type', VARCHAR(32), nullable=False)
35+
usage_type = Column('usage_type', VARCHAR(225), nullable=False)
3736
usage_value = Column('usage_value', Integer, nullable=False)
3837
start_time = Column('start_time', TIMESTAMP(timezone=True))
3938
end_time = Column('end_time', TIMESTAMP(timezone=True))

metering/repository/base_repository.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def get_default_session(self, session=None):
2121
def create_item(self, item, session=None):
2222
session = self.get_default_session(session)
2323
session.add(item)
24+
session.commit()
2425
return item
2526

2627
def remove_item(self, item, session=None):

metering/repository/usage_repository.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ class UsageRepository(BaseRepository):
77

88
def get_total_calls(self, user_name, org_id, service_id):
99
session = self.get_default_session()
10-
query_data = session.query(func.count(UsageModel.id).label('total_calls')).join(UserOrgGroupModel).filter(UserOrgGroupModel.user_name==user_name).filter(UserOrgGroupModel.org_id==org_id).filter(UserOrgGroupModel.service_id==service_id).all()
10+
query_data = session.query(func.count(UsageModel.id).label('total_calls')).join(UserOrgGroupModel) \
11+
.filter(UserOrgGroupModel.user_name == user_name)\
12+
.filter(UserOrgGroupModel.org_id == org_id) \
13+
.filter(UserOrgGroupModel.service_id == service_id).all()
1114
return query_data[0].total_calls
1215

1316
def get_optin_time(self, user_name, org_id, service_id):

metering/serverless.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,6 @@ functions:
7171
- http:
7272
path: /usage
7373
method: post
74-
# authorizer:
75-
# name: user-authorizer
76-
# type: COGNITO_USER_POOLS
77-
# arn: ${file(./config.${self:provider.stage}.json):AUTHORIZER}
78-
# identitySource: method.request.header.Authorization
7974
cors:
8075
origin: ${self:custom.origin.${self:provider.stage}}
8176
headers:

metering/services.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
from metering.storage import DatabaseStorage
1+
from storage import DatabaseStorage
22

33

44
class UsageService(object):
55
storage_service = DatabaseStorage()
66

77
def get_free_call_details(self, user_name, org_id, service_id, group_id=None):
88
free_calls, total_calls = self.storage_service.get_usage_details(user_name, org_id, service_id, group_id)
9-
return {"username": user_name, "org_id": org_id, "service_id": service_id, "total_calls": total_calls,
10-
"free_calls": free_calls}
119

10+
if not free_calls:
11+
free_calls = 0
12+
if not total_calls:
13+
total_calls = 0
1214

15+
return {"username": user_name, "org_id": org_id, "service_id": service_id, "total_calls": total_calls,
16+
"free_calls": free_calls}
1317

1418
def save_usage_details(self, usage_details_dict):
1519
# nedd to introduce entities when we enhance feature to this service right now directly using dicts

0 commit comments

Comments
 (0)