mock sync group editing: edit, save, and delete listings
This commit is contained in:
@@ -58,8 +58,17 @@ func Routes(
|
||||
mockSyncGroups := syncGroups.Group("/mock")
|
||||
mockSyncGroups.POST("", pub.Publish("/:acctID/inventory/sync-groups/mock"), response.Handler(as.saveNewMockSyncGroup))
|
||||
mockSyncGroups.DELETE("/:syncGroupID", pub.Publish("/:acctID/inventory/sync-groups/mock"), response.Handler(as.deleteMockSyncGroup))
|
||||
mockSyncGroups.PUT("/editing", pub.Publish("/:acctID/inventory/sync-groups/mock/editing"), response.Handler(as.selectMockSyncGroupForEditing))
|
||||
mockSyncGroups.DELETE("/editing", pub.Publish("/:acctID/inventory/sync-groups/mock/editing"), response.Handler(as.cancelMockSyncGroupEdits))
|
||||
|
||||
setMockSyncGroupForEditingEndpoints := mockSyncGroups.Group("/editing", pub.Publish("/:acctID/inventory/sync-groups/mock/editing"))
|
||||
setMockSyncGroupForEditingEndpoints.PUT("", response.Handler(as.selectMockSyncGroupForEditing))
|
||||
setMockSyncGroupForEditingEndpoints.POST("", response.Handler(as.saveMockSyncGroupBeingEdited))
|
||||
setMockSyncGroupForEditingEndpoints.DELETE("", response.Handler(as.cancelMockSyncGroupEdits))
|
||||
setMockSyncGroupForEditingEndpoints.POST("/listings", response.Handler(as.addListingToMockSyncGroupBeingEdited))
|
||||
|
||||
mockSyncGroupBeingEdited := mockSyncGroups.Group("/:syncGroupID/editing", pub.Publish("/:acctID/inventory/sync-groups/mock/:syncGroupID/editing"))
|
||||
mockSyncGroupBeingEdited.PUT("/listings/:orderIndex/shop", response.Handler(as.setShopInListingInMockSyncGroupBeingEdited))
|
||||
mockSyncGroupBeingEdited.PUT("/listings/:orderIndex/listing", response.Handler(as.setListingInListingInMockSyncGroupBeingEdited))
|
||||
mockSyncGroupBeingEdited.DELETE("/listings/:orderIndex", response.Handler(as.deleteListingInListingInMockSyncGroupBeingEdited))
|
||||
|
||||
mockDraftListings := mockSyncGroups.Group("/draft/listings", pub.Publish("/:acctID/inventory/sync-groups/mock/draft/listings"))
|
||||
mockDraftListings.POST("", response.Handler(as.createMockSyncGroupListingDraft))
|
||||
@@ -571,6 +580,31 @@ func (s *accountSubrouter) selectMockSyncGroupForEditing(c *gin.Context) (respon
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
// POST /:acctID/inventory/sync-groups/mock/editing
|
||||
func (s *accountSubrouter) saveMockSyncGroupBeingEdited(c *gin.Context) (response.Response, error) {
|
||||
r := c.Request
|
||||
ctx := r.Context()
|
||||
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||
|
||||
syncGroupID, err := s.accts.SaveMockSyncGroupBeingEdited(ctx, acctID)
|
||||
if err != nil {
|
||||
return nil, response.Errorf("failed to save mock sync group being edited: %w", response.ErrorFromConstant(err))
|
||||
}
|
||||
|
||||
// emit events indicating sync groups being edited and no longer being edited
|
||||
|
||||
if err := s.pub.Push(
|
||||
c,
|
||||
acctID,
|
||||
fmt.Sprintf("accounts_%d_inventory_sync-groups_mock_%d", acctID, syncGroupID),
|
||||
fmt.Sprintf("accounts_%d_inventory_sync-groups_mock_%d_editing", acctID, syncGroupID),
|
||||
); err != nil {
|
||||
s.log.Errorf("failed to publish mock sync group editing events: %v", err)
|
||||
}
|
||||
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
// DELETE /:acctID/inventory/sync-groups/mock/editing
|
||||
func (s *accountSubrouter) cancelMockSyncGroupEdits(c *gin.Context) (response.Response, error) {
|
||||
r := c.Request
|
||||
@@ -593,6 +627,89 @@ func (s *accountSubrouter) cancelMockSyncGroupEdits(c *gin.Context) (response.Re
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
// POST /:acctID/inventory/sync-groups/mock/editing/listings
|
||||
func (s *accountSubrouter) addListingToMockSyncGroupBeingEdited(c *gin.Context) (response.Response, error) {
|
||||
r := c.Request
|
||||
ctx := r.Context()
|
||||
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||
|
||||
if _, _, err := s.accts.AddListingToMockSyncGroupBeingEdited(ctx, acctID); err != nil {
|
||||
return nil, response.Errorf("failed to add listing to mock sync group being edited: %w", response.ErrorFromConstant(err))
|
||||
}
|
||||
|
||||
return response.StatusCreated(), nil
|
||||
}
|
||||
|
||||
// PUT /:acctID/inventory/sync-groups/mock/editing/listings/:orderIndex/shop
|
||||
func (s *accountSubrouter) setShopInListingInMockSyncGroupBeingEdited(c *gin.Context) (response.Response, error) {
|
||||
acctID := auth.GetIdentity(c).Account.AccountID
|
||||
|
||||
var (
|
||||
syncGroupID int64
|
||||
orderIndex int
|
||||
platform accounts.Platform
|
||||
shopID string
|
||||
)
|
||||
|
||||
if err := param.Path("syncGroupID", param.Int64(&syncGroupID)).
|
||||
Path("orderIndex", param.Int(&orderIndex)).
|
||||
Form("platform", param.Platform(&platform)).
|
||||
Form("shop-id", param.Text(&shopID)).
|
||||
Unmarshal(c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := s.accts.SetShopInListingInMockSyncGroupBeingEdited(c, acctID, syncGroupID, orderIndex, platform, shopID); err != nil {
|
||||
return nil, response.Errorf("failed to set shop in listing in mock sync group being edited: %w", response.ErrorFromConstant(err))
|
||||
}
|
||||
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
// PUT /:acctID/inventory/sync-groups/mock/editing/listings/:orderIndex/listing
|
||||
func (s *accountSubrouter) setListingInListingInMockSyncGroupBeingEdited(c *gin.Context) (response.Response, error) {
|
||||
acctID := auth.GetIdentity(c).Account.AccountID
|
||||
|
||||
var (
|
||||
syncGroupID int64
|
||||
orderIndex int
|
||||
listingID string
|
||||
)
|
||||
|
||||
if err := param.Path("syncGroupID", param.Int64(&syncGroupID)).
|
||||
Path("orderIndex", param.Int(&orderIndex)).
|
||||
Form("listing-id", param.Text(&listingID)).
|
||||
Unmarshal(c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := s.accts.SetListingInListingInMockSyncGroupBeingEdited(c, acctID, syncGroupID, orderIndex, listingID); err != nil {
|
||||
return nil, response.Errorf("failed to set listing in listing in mock sync group being edited: %w", response.ErrorFromConstant(err))
|
||||
}
|
||||
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
// DELETE /:acctID/inventory/sync-groups/mock/editing/listings/:orderIndex
|
||||
func (s *accountSubrouter) deleteListingInListingInMockSyncGroupBeingEdited(c *gin.Context) (response.Response, error) {
|
||||
acctID := auth.GetIdentity(c).Account.AccountID
|
||||
|
||||
var (
|
||||
orderIndex int
|
||||
)
|
||||
|
||||
if err := param.Path("orderIndex", param.Int(&orderIndex)).
|
||||
Unmarshal(c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := s.accts.DeleteListingInListingInMockSyncGroupBeingEdited(c, acctID, orderIndex); err != nil {
|
||||
return nil, response.Errorf("failed to delete listing in mock sync group being edited: %w", response.ErrorFromConstant(err))
|
||||
}
|
||||
|
||||
return response.StatusOK(), nil
|
||||
}
|
||||
|
||||
func lowerSnakeCase(s accounts.Platform) string {
|
||||
return strings.ToLower(strings.Join(strings.Split(string(s), " "), "_"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user