fix
Some checks failed
Deploy Dev / Build (pull_request) Successful in 5s
Deploy Dev / Push (pull_request) Successful in 8s
Deploy Dev / Deploy dev (pull_request) Failing after 5s

This commit is contained in:
2024-11-24 11:00:54 +03:00
parent c286106a7c
commit f5f55bc8cf
7 changed files with 59 additions and 19 deletions

View File

@@ -20,6 +20,12 @@ class RequestDeleteBody(pydantic.BaseModel):
id: str
class Config(pydantic.BaseModel):
id: str
name: str
value: dict
router = fastapi.APIRouter()
@@ -40,3 +46,15 @@ async def delete(body: RequestDeleteBody):
changed = await configs.delete(id=bson.ObjectId(body.id))
if not changed:
raise fastapi.HTTPException(404)
@router.get('/api/v1/configs')
async def get(stage: str, project: str) -> list[Config]:
return [
Config(
id=str(config._id),
name=config.name,
value=config.value,
)
for config in await configs.get(project=project, stage=stage)
]

View File

@@ -11,9 +11,18 @@ class RequestPostBody(pydantic.BaseModel):
class RequestPutBody(pydantic.BaseModel):
id: str
enabled: bool
condition: str
class RequestDeleteBody(pydantic.BaseModel):
id: str
class Experiment(pydantic.BaseModel):
id: str
name: str
stage: str
project: str
enabled: bool
condition: str
@@ -28,13 +37,26 @@ async def post(body: RequestPostBody):
@router.put('/api/v1/experiments', status_code=fastapi.status.HTTP_202_ACCEPTED, responses={404: {'description': 'Not found'}})
async def put(body: RequestPutBody):
changed = await experiments.update(project=body.project, stage=body.stage, name=body.name, enabled=body.enabled, condition=body.condition)
changed = await experiments.update(id=body.id, enabled=body.enabled, condition=body.condition)
if not changed:
raise fastapi.HTTPException(404)
@router.delete('/api/v1/experiments', status_code=fastapi.status.HTTP_202_ACCEPTED, responses={404: {'description': 'Not found'}})
async def delete(body: RequestPostBody):
changed = await experiments.delete(project=body.project, stage=body.stage, name=body.name)
async def delete(body: RequestDeleteBody):
changed = await experiments.delete(id=body.id)
if not changed:
raise fastapi.HTTPException(404)
@router.get('/api/v1/experiments')
async def get(stage: str, project: str) -> list[Experiment]:
return [
Experiment(
id=str(experiment._id),
name=experiment.name,
enabled=experiment.enabled,
condition=experiment.condition,
)
for experiment in await experiments.get(project=project, stage=stage)
]

View File

@@ -21,13 +21,13 @@ async def create(config: Config) -> str:
return result.inserted_id
async def update_data(project: str, stage: str, name: str, value: dict) -> bool:
result = await collection.update_one({'project': project, 'stage': stage, 'name': name}, {'$set': {'value': value}})
async def update_data(id: bson.ObjectId, value: dict) -> bool:
result = await collection.update_one({'_id': id}, {'$set': {'value': value}})
return result.modified_count != 0
async def delete(project: str, stage: str, name: str) -> bool:
result = await collection.delete_one({'project': project, 'stage': stage, 'name': name})
async def delete(id: bson.ObjectId) -> bool:
result = await collection.delete_one({'_id': id})
return result.deleted_count != 0

View File

@@ -22,13 +22,13 @@ async def create(experiment: Experiment) -> str:
return result.inserted_id
async def update(project: str, stage: str, name: str, enabled: bool, condition: str) -> bool:
result = await collection.update_one({'project': project, 'stage': stage, 'name': name}, {'$set': {'enabled': enabled, 'condition': condition}})
async def update(id: bson.ObjectId, enabled: bool, condition: str) -> bool:
result = await collection.update_one({'_id': id}, {'$set': {'enabled': enabled, 'condition': condition}})
return result.modified_count != 0
async def delete(project: str, stage: str, name: str) -> bool:
result = await collection.delete_one({'project': project, 'stage': stage, 'name': name})
async def delete(id: bson.ObjectId) -> bool:
result = await collection.delete_one({'_id': id})
return result.deleted_count != 0