Merge pull request #95 from bugout-dev/edit-subscription-endpoint

Add update subscription.
pull/96/head
Neeraj Kashyap 2021-08-10 09:49:07 -07:00 zatwierdzone przez GitHub
commit 5eee300537
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 57 dodań i 22 usunięć

Wyświetl plik

@ -2,7 +2,7 @@
Pydantic schemas for the Moonstream HTTP API Pydantic schemas for the Moonstream HTTP API
""" """
from enum import Enum from enum import Enum
from typing import List, Optional from typing import List, Optional, Dict, Any
from sqlalchemy.sql.operators import notendswith_op from sqlalchemy.sql.operators import notendswith_op
@ -25,8 +25,8 @@ class SubscriptionTypesListResponce(BaseModel):
class SubscriptionResourceData(BaseModel): class SubscriptionResourceData(BaseModel):
id: str id: str
address: str address: str
color: str color: Optional[str]
label: str label: Optional[str]
user_id: str user_id: str
subscription_type_id: str subscription_type_id: str
@ -54,21 +54,9 @@ class VersionResponse(BaseModel):
version: str version: str
class SubscriptionRequest(BaseModel): class SubscriptionUpdate(BaseModel):
""" update: Dict[str, Any]
Schema for data retrieving from frontend about subscription. drop_keys: List[str] = Field(default_factory=list)
"""
blockchain: str
class SubscriptionResponse(BaseModel):
"""
User subscription storing in Bugout resources.
"""
user_id: str
blockchain: str
class SubscriptionsListResponse(BaseModel): class SubscriptionsListResponse(BaseModel):

Wyświetl plik

@ -2,7 +2,7 @@
The Moonstream subscriptions HTTP API The Moonstream subscriptions HTTP API
""" """
import logging import logging
from typing import Dict, List from typing import Dict, List, Optional
from bugout.data import BugoutResource, BugoutResources from bugout.data import BugoutResource, BugoutResources
from bugout.exceptions import BugoutResponseException from bugout.exceptions import BugoutResponseException
@ -180,6 +180,54 @@ async def get_subscriptions_handler(request: Request) -> data.SubscriptionsListR
) )
@app.put(
"/{subscription_id}",
tags=["subscriptions"],
response_model=data.SubscriptionResourceData,
)
async def update_subscriptions_handler(
request: Request,
subscription_id: str,
color: Optional[str] = Form(None),
label: Optional[str] = Form(None),
) -> data.SubscriptionResourceData:
"""
Get user's subscriptions.
"""
token = request.state.token
update = {}
if color:
update["color"] = color
if label:
update["label"] = label
try:
resource: BugoutResource = bc.update_resource(
token=token,
resource_id=subscription_id,
resource_data=data.SubscriptionUpdate(
update=update,
).dict(),
)
except BugoutResponseException as e:
raise HTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise HTTPException(status_code=500)
return data.SubscriptionResourceData(
id=str(resource.id),
user_id=resource.resource_data["user_id"],
address=resource.resource_data["address"],
color=resource.resource_data["color"],
label=resource.resource_data["label"],
subscription_type_id=resource.resource_data["subscription_type_id"],
)
@app.get( @app.get(
"/types", tags=["subscriptions"], response_model=data.SubscriptionTypesListResponce "/types", tags=["subscriptions"], response_model=data.SubscriptionTypesListResponce
) )

Wyświetl plik

@ -66,10 +66,9 @@ export const modifySubscription =
const data = new FormData(); const data = new FormData();
color && data.append("color", color); color && data.append("color", color);
label && data.append("label", label); label && data.append("label", label);
data.append("id", id);
return http({ return http({
method: "POST", method: "PUT",
url: `${API}/subscription/${id}`, url: `${API}/subscriptions/${id}`,
data, data,
}); });
}; };