feat(chalice): update record
feat(chalice): delete record
This commit is contained in:
parent
81c36157da
commit
6bcc383afd
3 changed files with 66 additions and 6 deletions
|
|
@ -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"}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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(...)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue