軟刪除這件小事,背後的細節卻不小
軟刪除這件小事,背後的細節卻不小
原本只想補一個產品刪除 API。硬刪除直覺又乾脆,但總會有人手滑、客服就會來敲門。最後還是加了 deletedAt 欄位,用軟刪除留個回頭路。
一做下去才發現沒那麼單純:所有產品查詢都要顧到「未刪除」的狀態,沒有 WHERE deletedAt IS NULL 就會漏風。服務層邏輯跟 API 文件也都得跟著調,免得前端看到回傳數量不對又一臉問號。
刪除做完,回頭補分類查詢。前一晚還在想:「分類過濾真的有人用嗎?」如果首頁只放「最近分析的產品」,確實沒什麼意思。乾脆把首頁改成分類區塊,產品頁也補上分類過濾。React 端只是狀態篩選,沒太多問題;後端就麻煩了。
一開始用判斷 categoryId 的單層過濾,寫到一半才想到還有子分類。只好改成遞迴,把子分類的產品一併撈進來,測試也補齊,避免邊界情境漏掉。
今天接前端馬上踩坑:原本只有一層下拉,後端已經支援子分類,前端卻還是平面結構。