feat: finish back-end work (untested)
This commit is contained in:
@@ -217,6 +217,14 @@ func AddItemToOrder(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
_, update_order_filled_exec_err := conn.Exec(context.Background(), queries.SET_ORDER_FILLED, false, order_id)
|
||||
|
||||
if update_order_filled_exec_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "AddItemToOrder(): ERROR... failed to set order state")
|
||||
log.Printf("AddItemToOrder(): ERROR... failed to set order state... %s", update_order_filled_exec_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
var order_item_price dto.OrderItemPriceResponse
|
||||
|
||||
price_data_row := conn.QueryRow(context.Background(), queries.GET_ORDER_ITEM_PRICE, item_id, order_id)
|
||||
@@ -281,3 +289,150 @@ func GetOrderItems(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
ctx.JSON(http.StatusOK, items)
|
||||
}
|
||||
}
|
||||
|
||||
func SetItemMade(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
conn, conn_err := pool.Acquire(ctx)
|
||||
if conn_err != nil {
|
||||
log.Printf("SetItemMade(): ERROR: Failed to connect... %s", conn_err.Error())
|
||||
ctx.AbortWithStatus(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer conn.Release()
|
||||
|
||||
var request dto.ItemOrderSetMadeRequest
|
||||
request_read_err := ctx.ShouldBindJSON(&request)
|
||||
if request_read_err != nil {
|
||||
ctx.String(http.StatusBadRequest, "SetItemMade(): ERROR... Error Request in bad format")
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_set_made_err := conn.Exec(context.Background(), queries.SET_MADE, request.Made, request.ItemId, request.OrderId)
|
||||
|
||||
if exec_set_made_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "SetItemMade(): ERROR... Internal server error")
|
||||
log.Printf("SetItemMade(): ERROR... Failed to set item made... %s", exec_set_made_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_update_order_err := conn.Exec(context.Background(), queries.UPDATE_ORDER_FILLED, request.OrderId)
|
||||
if exec_update_order_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "SetItemMade(): ERROR... Failed to update order")
|
||||
log.Printf("SetItemMade(): ERROR... Failed to update order... %s", exec_update_order_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
var order_filled dto.OrderFilledResponse
|
||||
scan_err := conn.QueryRow(context.Background(), queries.GET_ORDER_MADE_DETAILS, request.OrderId).Scan(&order_filled.OrderId, &order_filled.Filled)
|
||||
if scan_err != nil {
|
||||
if scan_err == pgx.ErrNoRows {
|
||||
ctx.String(http.StatusBadRequest, "SetItemMade(): Invalid data")
|
||||
return
|
||||
}
|
||||
ctx.String(http.StatusInternalServerError, "SetItemMade(): ERROR... Error querying result")
|
||||
log.Printf("SetItemMade(): ERROR... Error querying result... %s", scan_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, order_filled)
|
||||
}
|
||||
}
|
||||
func SetItemQuantity(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
conn, conn_err := pool.Acquire(ctx)
|
||||
if conn_err != nil {
|
||||
log.Printf("SetItemMade(): ERROR: Failed to connect... %s", conn_err.Error())
|
||||
ctx.AbortWithStatus(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer conn.Release()
|
||||
|
||||
var request dto.ItemOrderSetQuantityRequest
|
||||
request_read_err := ctx.ShouldBindJSON(&request)
|
||||
if request_read_err != nil {
|
||||
ctx.String(http.StatusBadRequest, "SetItemQuantity(): ERROR... Error Request in bad format")
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_set_quantity_err := conn.Exec(context.Background(), queries.SET_QUANTITY, request.Quantity, request.ItemId, request.OrderId)
|
||||
|
||||
if exec_set_quantity_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "SetItemMade(): ERROR... Internal server error")
|
||||
log.Printf("SetItemQuantity(): ERROR... Failed to set item quantity... %s", exec_set_quantity_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_update_order_err := conn.Exec(context.Background(), queries.UPDATE_ORDER_FILLED, request.OrderId)
|
||||
if exec_update_order_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "SetItemMade(): ERROR... Failed to update order")
|
||||
log.Printf("SetItemQuantity(): ERROR... Failed to update order... %s", exec_update_order_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
var order_filled dto.OrderFilledResponse
|
||||
scan_err := conn.QueryRow(context.Background(), queries.GET_ORDER_MADE_DETAILS, request.OrderId).Scan(&order_filled.OrderId, &order_filled.Filled)
|
||||
if scan_err != nil {
|
||||
if scan_err == pgx.ErrNoRows {
|
||||
ctx.String(http.StatusBadRequest, "SetItemQuantity(): Invalid data")
|
||||
return
|
||||
}
|
||||
ctx.String(http.StatusInternalServerError, "SetItemQuantity(): ERROR... Error querying result")
|
||||
log.Printf("SetItemQuantity(): ERROR... Error querying result... %s", scan_err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, order_filled)
|
||||
}
|
||||
}
|
||||
|
||||
func DeleteOrderItem(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
conn, conn_err := pool.Acquire(ctx)
|
||||
if conn_err != nil {
|
||||
log.Printf("DeleteOrderItem(): ERROR: Failed to connect... %s", conn_err.Error())
|
||||
ctx.AbortWithStatus(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer conn.Release()
|
||||
|
||||
var request dto.DeleteOrderItemRequest
|
||||
request_read_err := ctx.ShouldBindJSON(&request)
|
||||
if request_read_err != nil {
|
||||
ctx.String(http.StatusBadRequest, "DeleteOrderItem(): ERROR... invalid request")
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_err := conn.Exec(context.Background(), queries.REMOVE_ITEM_FROM_ORDER, request.ItemId, request.OrderId)
|
||||
if exec_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "DeleteOrderItem(): ERROR.. Failed to delete item")
|
||||
log.Printf("DeleteOrderItem(): ERROR... Failed to delte item... %s", exec_err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func DeleteItem(pool *pgxpool.Pool) gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
conn, conn_err := pool.Acquire(ctx)
|
||||
if conn_err != nil {
|
||||
log.Printf("DeleteItem(): ERROR: Failed to connect... %s", conn_err.Error())
|
||||
ctx.AbortWithStatus(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer conn.Release()
|
||||
|
||||
item_id := ctx.Query("item_id")
|
||||
item_id_int, parse_err := strconv.ParseInt(item_id, 10, 64)
|
||||
if parse_err != nil || item_id == "" {
|
||||
ctx.String(http.StatusBadRequest, "DeleteItem(): Invalid data entry")
|
||||
return
|
||||
}
|
||||
|
||||
_, exec_err := conn.Exec(context.Background(), "DELETE FROM item WHERE id = $1", item_id_int)
|
||||
if exec_err != nil {
|
||||
ctx.String(http.StatusInternalServerError, "DeleteItem(): Failed to delete item")
|
||||
log.Printf("DeleteItem(): ERROR... Failed to delete item... %s", exec_err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user