feat(chalice): update record

feat(chalice): delete record
This commit is contained in:
Taha Yassine Kraiem 2022-11-17 13:25:55 +01:00
parent 81c36157da
commit 6bcc383afd
3 changed files with 66 additions and 6 deletions

View file

@ -24,7 +24,8 @@ def search_records(project_id, data: schemas_ee.AssistRecordSearchPayloadSchema,
conditions = ["projects.tenant_id=%(tenant_id)s",
"projects.deleted_at ISNULL",
"assist_records.created_at>=%(startDate)s",
"assist_records.created_at<=%(endDate)s"]
"assist_records.created_at<=%(endDate)s",
"assist_records.deleted_at ISNULL"]
params = {"tenant_id": context.tenant_id, "project_id": project_id,
"startDate": data.startDate, "endDate": data.endDate,
"p_start": (data.page - 1) * data.limit, "p_limit": data.limit,
@ -53,12 +54,13 @@ def search_records(project_id, data: schemas_ee.AssistRecordSearchPayloadSchema,
def get_record(project_id, record_id, context: schemas_ee.CurrentContext):
conditions = ["projects.tenant_id=%(tenant_id)s",
"projects.deleted_at ISNULL",
"assist_records.record_id=%(record_id)s"]
"assist_records.record_id=%(record_id)s",
"assist_records.deleted_at ISNULL"]
params = {"tenant_id": context.tenant_id, "project_id": project_id, "record_id": record_id}
with pg_client.PostgresClient() as cur:
query = cur.mogrify(f"""SELECT record_id, user_id, session_id, assist_records.created_at,
assist_records.name, duration, users.name AS created_by,
file_key
assist_records.name, duration, users.name AS created_by,
file_key
FROM assist_records
INNER JOIN projects USING (project_id)
LEFT JOIN users USING (user_id)
@ -73,3 +75,41 @@ def get_record(project_id, record_id, context: schemas_ee.CurrentContext):
ExpiresIn=config("PRESIGNED_URL_EXPIRATION", cast=int, default=900)
)
return result
def update_record(project_id, record_id, data: schema_ee.AssistRecordUpdatePayloadSchema,
context: schemas_ee.CurrentContext):
conditions = ["assist_records.record_id=%(record_id)s", "assist_records.deleted_at ISNULL"]
params = {"tenant_id": context.tenant_id, "project_id": project_id, "record_id": record_id, "name": data.name}
with pg_client.PostgresClient() as cur:
query = cur.mogrify(f"""UPDATE assist_records
SET name= %(name)s
WHERE {" AND ".join(conditions)}
RETURNING record_id, user_id, session_id, assist_records.created_at,
assist_records.name, duration, users.name AS created_by,
file_key;""", params)
cur.execute(query)
result = helper.dict_to_camel_case(cur.fetchone())
if not result:
return {"errors": ["record not found"]}
result["URL"] = s3.client.generate_presigned_url(
'get_object',
Params={'Bucket': config("ASSIST_RECORDS_BUCKET"), 'Key': result.pop("fileKey")},
ExpiresIn=config("PRESIGNED_URL_EXPIRATION", cast=int, default=900)
)
return result
def delete_record(project_id, record_id, context: schemas_ee.CurrentContext):
conditions = ["assist_records.record_id=%(record_id)s"]
params = {"tenant_id": context.tenant_id, "project_id": project_id, "record_id": record_id}
with pg_client.PostgresClient() as cur:
query = cur.mogrify(f"""UPDATE assist_records
SET deleted_at= (now() at time zone 'utc')
WHERE {" AND ".join(conditions)}
RETURNING 1;""", params)
cur.execute(query)
result = helper.dict_to_camel_case(cur.fetchone())
if not result:
return {"errors": ["record not found"]}
return {"state": "success"}

View file

@ -92,3 +92,20 @@ def search_records(projectId: int, data: schemas_ee.AssistRecordSearchPayloadSch
@app.get('/{projectId}/assist/records/{recordId}', tags=["assist"])
def get_record(projectId: int, recordId: int, context: schemas_ee.CurrentContext = Depends(OR_context)):
return {"data": assist_records.get_record(project_id=projectId, record_id=recordId, context=context)}
@app.post('/{projectId}/assist/records/{recordId}', tags=["assist"])
def update_record(projectId: int, recordId: int, data: schemas_ee.AssistRecordUpdatePayloadSchema = Body(...),
context: schemas_ee.CurrentContext = Depends(OR_context)):
result = assist_records.update_record(project_id=projectId, record_id=recordId, data=data, context=context)
if "errors" in result:
return result
return {"data": result}
@app.delete('/{projectId}/assist/records/{recordId}', tags=["assist"])
def delete_record(projectId: int, recordId: int, context: schemas_ee.CurrentContext = Depends(OR_context)):
result = assist_records.delete_record(project_id=projectId, record_id=recordId, context=context)
if "errors" in result:
return result
return {"data": result}

View file

@ -83,8 +83,11 @@ class SessionModel(BaseModel):
metadata: dict = Field(default={})
class AssistRecordPayloadSchema(BaseModel):
name: str = Field(...)
class AssistRecordUpdatePayloadSchema(BaseModel):
name: str = Field(..., min_length=1)
class AssistRecordPayloadSchema(AssistRecordUpdatePayloadSchema):
duration: int = Field(...)
session_id: int = Field(...)