first commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE FUNCTION orm_retrive_json_v2(
|
||||
paras TEXT
|
||||
)
|
||||
RETURNS TEXT
|
||||
DETERMINISTIC
|
||||
/*
|
||||
Function : orm_api_v2 [傳入 json 的資料預處理] 的核心程式, 被 orm_api_v2 呼叫使用
|
||||
Description: 刪除 @para 多餘的內容(amis)
|
||||
如果有特殊元件(如 transfer) 會多 POST 非 orm 所需的資料, 一樣要拿掉
|
||||
picker 如果有設 joinValues:false, 也會多傳一些多餘的資料
|
||||
Build Date : 2024-06-20
|
||||
Modify History:
|
||||
1 Michael 2023/12/16 原始版本
|
||||
2 Michael 2024-06-20 改寫為MariaDB版本並優化
|
||||
*/
|
||||
BEGIN
|
||||
DECLARE result TEXT;
|
||||
DECLARE maxcount INT;
|
||||
DECLARE currid INT;
|
||||
DECLARE trans_data TEXT;
|
||||
DECLARE json_valid BOOLEAN;
|
||||
|
||||
-- 檢查是否為有效JSON,如果是則直接處理,否則按原邏輯處理
|
||||
SET json_valid = JSON_VALID(paras);
|
||||
|
||||
-- 進行一些操作,根據需求修改下面的程式碼
|
||||
SET result = paras;
|
||||
|
||||
-- 處理 config 部分
|
||||
SET maxcount = INSTR(result, '"config":[');
|
||||
IF maxcount > 0 THEN
|
||||
-- 在 config 後可能還有資料
|
||||
SET trans_data = SUBSTRING(result FROM maxcount);
|
||||
SET currid = INSTR(trans_data, '],');
|
||||
SET trans_data = SUBSTRING(trans_data FROM currid + 2);
|
||||
|
||||
SET result = CONCAT(SUBSTRING(result FROM 1 FOR maxcount - 1), ' ', trans_data);
|
||||
END IF;
|
||||
|
||||
-- 處理 token 部分(除非是電子書情況)
|
||||
SET maxcount = INSTR(result, '"token"');
|
||||
IF maxcount > 0 THEN
|
||||
SET result = CONCAT(SUBSTRING(result FROM 1 FOR maxcount - 2), '}');
|
||||
END IF;
|
||||
|
||||
-- 處理換行符
|
||||
IF INSTR(result, '\\n') > 0 THEN
|
||||
SET result = REPLACE(REPLACE(result, '\\r\\n', CHAR(10)), '\\n', CHAR(10));
|
||||
END IF;
|
||||
|
||||
-- 如果是有效JSON,最後再驗證一次
|
||||
IF json_valid THEN
|
||||
IF NOT JSON_VALID(result) THEN
|
||||
-- 如果處理後變無效,返回原始值
|
||||
RETURN paras;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN result;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user