fix(delete): update delete operations to return affected rows for cabinets, rooms, and warehouses

This commit is contained in:
Tran Anh Tuan
2026-05-08 15:54:28 +07:00
parent 58cfe890a1
commit 4382c53aac
15 changed files with 75 additions and 36 deletions

View File

@@ -24,6 +24,6 @@ SET name = CASE WHEN sqlc.arg(name) = '' THEN name ELSE sqlc.arg(name) END,
WHERE id = sqlc.arg(id) WHERE id = sqlc.arg(id)
RETURNING *; RETURNING *;
-- name: DeleteCabinet :exec -- name: DeleteCabinet :execrows
DELETE FROM cabinets DELETE FROM cabinets
WHERE id = sqlc.arg(id); WHERE id = sqlc.arg(id);

View File

@@ -21,6 +21,6 @@ SET name = sqlc.arg(name),
WHERE id = sqlc.arg(id) WHERE id = sqlc.arg(id)
RETURNING *; RETURNING *;
-- name: DeleteRole :exec -- name: DeleteRole :execrows
DELETE FROM roles DELETE FROM roles
WHERE id = sqlc.arg(id); WHERE id = sqlc.arg(id);

View File

@@ -24,6 +24,6 @@ SET name = CASE WHEN sqlc.arg(name) = '' THEN name ELSE sqlc.arg(name) END,
WHERE id = sqlc.arg(id) WHERE id = sqlc.arg(id)
RETURNING *; RETURNING *;
-- name: DeleteRoom :exec -- name: DeleteRoom :execrows
DELETE FROM rooms DELETE FROM rooms
WHERE id = sqlc.arg(id); WHERE id = sqlc.arg(id);

View File

@@ -25,6 +25,6 @@ SET name = CASE WHEN sqlc.arg(name) = '' THEN name ELSE sqlc.arg(name) END,
WHERE id = sqlc.arg(id) WHERE id = sqlc.arg(id)
RETURNING *; RETURNING *;
-- name: DeleteWarehouse :exec -- name: DeleteWarehouse :execrows
DELETE FROM warehouses DELETE FROM warehouses
WHERE id = sqlc.arg(id); WHERE id = sqlc.arg(id);

View File

@@ -43,6 +43,10 @@ func UpdateCabinet(ctx context.Context, queries *db.Queries, body models.Cabinet
return *mapper.ToDomainCabinet(result), nil return *mapper.ToDomainCabinet(result), nil
} }
func DeleteCabinet(ctx context.Context, queries *db.Queries, id int64) error { func DeleteCabinet(ctx context.Context, queries *db.Queries, id int64) (rowAffected int64, err error) {
return queries.DeleteCabinet(ctx, id) rowsAffected, err := queries.DeleteCabinet(ctx, id)
if err != nil {
return rowAffected, err
}
return rowsAffected, nil
} }

View File

@@ -43,6 +43,10 @@ func UpdateRoom(ctx context.Context, queries *db.Queries, body models.Room) (mod
return *mapper.ToDomainRoom(result), nil return *mapper.ToDomainRoom(result), nil
} }
func DeleteRoom(ctx context.Context, queries *db.Queries, id int64) error { func DeleteRoom(ctx context.Context, queries *db.Queries, id int64) (int64, error) {
return queries.DeleteRoom(ctx, id) rowsAffected, err := queries.DeleteRoom(ctx, id)
if err != nil {
return rowsAffected, err
}
return rowsAffected, nil
} }

View File

@@ -43,6 +43,10 @@ func UpdateWarehouse(ctx context.Context, queries *db.Queries, body models.Wareh
return *mapper.ToDomainWarehouse(result), nil return *mapper.ToDomainWarehouse(result), nil
} }
func DeleteWarehouse(ctx context.Context, queries *db.Queries, id int64) error { func DeleteWarehouse(ctx context.Context, queries *db.Queries, id int64) (int64, error) {
return queries.DeleteWarehouse(ctx, id) rowsAffected, err := queries.DeleteWarehouse(ctx, id)
if err != nil {
return rowsAffected, err
}
return rowsAffected, nil
} }

View File

@@ -171,11 +171,16 @@ func CabinetDelete(c *gin.Context) error {
response.BadRequestError(c, http.StatusBadRequest, "Invalid ID") response.BadRequestError(c, http.StatusBadRequest, "Invalid ID")
return nil return nil
} }
err = repositories.DeleteCabinet(c.Request.Context(), global.Queries, id) rowsAffected, err := repositories.DeleteCabinet(c.Request.Context(), global.Queries, id)
if err != nil { if err != nil {
if rowsAffected == 0 {
response.NotFoundError(c, http.StatusNotFound, "Cabinet not found")
return nil
}
response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete cabinet") response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete cabinet")
return nil return nil
} }
response.Ok(c, "Đã xóa thành công", nil)
response.Ok(c, "Delete Success", nil)
return nil return nil
} }

View File

@@ -172,12 +172,16 @@ func RoomDelete(c *gin.Context) error {
response.BadRequestError(c, http.StatusBadRequest, "Invalid ID") response.BadRequestError(c, http.StatusBadRequest, "Invalid ID")
return nil return nil
} }
err = repositories.DeleteRoom(c.Request.Context(), global.Queries, id) rowsAffected, err := repositories.DeleteRoom(c.Request.Context(), global.Queries, id)
if err != nil { if err != nil {
log.Error().Err(err).Msgf("Failed to delete room with ID: %d", id) log.Error().Err(err).Msgf("Failed to delete room with ID: %d", id)
if rowsAffected == 0 {
response.NotFoundError(c, http.StatusNotFound, "Room not found")
return nil
}
response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete room") response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete room")
return nil return nil
} }
response.Ok(c, "Đã xóa thành công", nil) response.Ok(c, "Delete Success", nil)
return nil return nil
} }

View File

@@ -13,6 +13,7 @@ import (
"wm-backend/response" "wm-backend/response"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/rs/zerolog/log"
) )
// WareHouseCreate creates a new warehouse. // WareHouseCreate creates a new warehouse.
@@ -161,11 +162,16 @@ func WareHouseDelete(c *gin.Context) error {
response.BadRequestError(c, http.StatusBadRequest, "Invalid ID") response.BadRequestError(c, http.StatusBadRequest, "Invalid ID")
return nil return nil
} }
err = repositories.DeleteWarehouse(c.Request.Context(), global.Queries, id) rowsAffected, err := repositories.DeleteWarehouse(c.Request.Context(), global.Queries, id)
if err != nil { if err != nil {
log.Error().Err(err).Msgf("Failed to delete warehouse with ID: %d", id)
if rowsAffected == 0 {
response.NotFoundError(c, http.StatusNotFound, "Warehouse not found")
return nil
}
response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete warehouse") response.InternalServerError(c, http.StatusInternalServerError, "Failed to delete warehouse")
return nil return nil
} }
response.Ok(c, "Đã xóa thành công", nil) response.Ok(c, "Delete Success", nil)
return nil return nil
} }

View File

@@ -49,14 +49,17 @@ func (q *Queries) CreateCabinet(ctx context.Context, arg CreateCabinetParams) (C
return i, err return i, err
} }
const deleteCabinet = `-- name: DeleteCabinet :exec const deleteCabinet = `-- name: DeleteCabinet :execrows
DELETE FROM cabinets DELETE FROM cabinets
WHERE id = $1 WHERE id = $1
` `
func (q *Queries) DeleteCabinet(ctx context.Context, id int64) error { func (q *Queries) DeleteCabinet(ctx context.Context, id int64) (int64, error) {
_, err := q.db.Exec(ctx, deleteCabinet, id) result, err := q.db.Exec(ctx, deleteCabinet, id)
return err if err != nil {
return 0, err
}
return result.RowsAffected(), nil
} }
const getCabinetByID = `-- name: GetCabinetByID :one const getCabinetByID = `-- name: GetCabinetByID :one

View File

@@ -18,10 +18,10 @@ type Querier interface {
CreateRoom(ctx context.Context, arg CreateRoomParams) (Room, error) CreateRoom(ctx context.Context, arg CreateRoomParams) (Room, error)
CreateUser(ctx context.Context, arg CreateUserParams) (uuid.UUID, error) CreateUser(ctx context.Context, arg CreateUserParams) (uuid.UUID, error)
CreateWarehouse(ctx context.Context, arg CreateWarehouseParams) (Warehouse, error) CreateWarehouse(ctx context.Context, arg CreateWarehouseParams) (Warehouse, error)
DeleteCabinet(ctx context.Context, id int64) error DeleteCabinet(ctx context.Context, id int64) (int64, error)
DeleteRole(ctx context.Context, id uuid.UUID) error DeleteRole(ctx context.Context, id uuid.UUID) (int64, error)
DeleteRoom(ctx context.Context, id int64) error DeleteRoom(ctx context.Context, id int64) (int64, error)
DeleteWarehouse(ctx context.Context, id int64) error DeleteWarehouse(ctx context.Context, id int64) (int64, error)
GetCabinetByID(ctx context.Context, id int64) (Cabinet, error) GetCabinetByID(ctx context.Context, id int64) (Cabinet, error)
GetRoleByID(ctx context.Context, id uuid.UUID) (Role, error) GetRoleByID(ctx context.Context, id uuid.UUID) (Role, error)
GetRoomByID(ctx context.Context, id int64) (Room, error) GetRoomByID(ctx context.Context, id int64) (Room, error)

View File

@@ -40,14 +40,17 @@ func (q *Queries) CreateRole(ctx context.Context, arg CreateRoleParams) (Role, e
return i, err return i, err
} }
const deleteRole = `-- name: DeleteRole :exec const deleteRole = `-- name: DeleteRole :execrows
DELETE FROM roles DELETE FROM roles
WHERE id = $1 WHERE id = $1
` `
func (q *Queries) DeleteRole(ctx context.Context, id uuid.UUID) error { func (q *Queries) DeleteRole(ctx context.Context, id uuid.UUID) (int64, error) {
_, err := q.db.Exec(ctx, deleteRole, id) result, err := q.db.Exec(ctx, deleteRole, id)
return err if err != nil {
return 0, err
}
return result.RowsAffected(), nil
} }
const getRoleByID = `-- name: GetRoleByID :one const getRoleByID = `-- name: GetRoleByID :one

View File

@@ -49,14 +49,17 @@ func (q *Queries) CreateRoom(ctx context.Context, arg CreateRoomParams) (Room, e
return i, err return i, err
} }
const deleteRoom = `-- name: DeleteRoom :exec const deleteRoom = `-- name: DeleteRoom :execrows
DELETE FROM rooms DELETE FROM rooms
WHERE id = $1 WHERE id = $1
` `
func (q *Queries) DeleteRoom(ctx context.Context, id int64) error { func (q *Queries) DeleteRoom(ctx context.Context, id int64) (int64, error) {
_, err := q.db.Exec(ctx, deleteRoom, id) result, err := q.db.Exec(ctx, deleteRoom, id)
return err if err != nil {
return 0, err
}
return result.RowsAffected(), nil
} }
const getRoomByID = `-- name: GetRoomByID :one const getRoomByID = `-- name: GetRoomByID :one

View File

@@ -49,14 +49,17 @@ func (q *Queries) CreateWarehouse(ctx context.Context, arg CreateWarehouseParams
return i, err return i, err
} }
const deleteWarehouse = `-- name: DeleteWarehouse :exec const deleteWarehouse = `-- name: DeleteWarehouse :execrows
DELETE FROM warehouses DELETE FROM warehouses
WHERE id = $1 WHERE id = $1
` `
func (q *Queries) DeleteWarehouse(ctx context.Context, id int64) error { func (q *Queries) DeleteWarehouse(ctx context.Context, id int64) (int64, error) {
_, err := q.db.Exec(ctx, deleteWarehouse, id) result, err := q.db.Exec(ctx, deleteWarehouse, id)
return err if err != nil {
return 0, err
}
return result.RowsAffected(), nil
} }
const getWarehouseByID = `-- name: GetWarehouseByID :one const getWarehouseByID = `-- name: GetWarehouseByID :one