feature(api) - api for projects all, single, create (#89)

This commit is contained in:
Shekar Siri 2021-07-14 20:55:39 +05:30 committed by GitHub
parent 67886ffa4c
commit 55608791b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 4 deletions

View file

@ -95,3 +95,33 @@ def cancel_job(projectKey, jobId, context):
return {
'data': jobs.update(job_id=jobId, job=job)
}
@app.route('/v1/projects', methods=['GET'], authorizer=bp_authorizers.api_key_authorizer)
def get_projects(context):
records = projects.get_projects(tenant_id=context['tenantId'])
for record in records:
del record['projectId']
return {
'data': records
}
@app.route('/v1/projects/{projectKey}', methods=['GET'], authorizer=bp_authorizers.api_key_authorizer)
def get_project(projectKey, context):
return {
'data': projects.get_project_by_key(tenant_id=context['tenantId'], project_key=projectKey)
}
@app.route('/v1/projects', methods=['POST'], authorizer=bp_authorizers.api_key_authorizer)
def create_project(context):
data = app.current_request.json_body
record = projects.create(
tenant_id=context['tenantId'],
user_id=None,
data=data,
skip_authorization=True
)
del record['data']['projectId']
return record

View file

@ -95,11 +95,32 @@ def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=
row = cur.fetchone()
return helper.dict_to_camel_case(row)
def get_project_by_key(tenant_id, project_key, include_last_session=False, include_gdpr=None):
with pg_client.PostgresClient() as cur:
query = cur.mogrify(f"""\
SELECT
s.project_key,
s.name
{",(SELECT max(ss.start_ts) FROM public.sessions AS ss WHERE ss.project_key = %(project_key)s) AS last_recorded_session_at" if include_last_session else ""}
{',s.gdpr' if include_gdpr else ''}
FROM public.projects AS s
where s.project_key =%(project_key)s
AND s.deleted_at IS NULL
LIMIT 1;""",
{"project_key": project_key})
def create(tenant_id, user_id, data):
admin = users.get(user_id=user_id, tenant_id=tenant_id)
if not admin["admin"] and not admin["superAdmin"]:
return {"errors": ["unauthorized"]}
cur.execute(
query=query
)
row = cur.fetchone()
return helper.dict_to_camel_case(row)
def create(tenant_id, user_id, data, skip_authorization=False):
if not skip_authorization:
admin = users.get(user_id=user_id, tenant_id=tenant_id)
if not admin["admin"] and not admin["superAdmin"]:
return {"errors": ["unauthorized"]}
return {"data": __create(tenant_id=tenant_id, name=data.get("name", "my first project"))}