/*Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved. This source code is licensed under the Apache License Version 2.0.*/ package apijson.orm; /**对请求 JSON 的操作 * @author Lemon */ public enum Operation { /** * 必须传的字段,结构是 * "key0,key1,key2..." */ MUST, /** * 不允许传的字段,结构是 * "key0,key1,key2..." */ REFUSE, /**TODO 是否应该把数组类型写成 BOOLEANS, NUMBERS 等复数单词,以便抽取 enum ?扩展用 VERIFY 或 INSERT/UPDATE 远程函数等 * 验证是否符合预设的类型: * BOOLEAN, NUMBER, DECIMAL, STRING, URL, DATE, TIME, DATETIME, OBJECT, ARRAY * 或它们的数组 * BOOLEAN[], NUMBER[], DECIMAL[], STRING[], URL[], DATE[], TIME[], DATETIME[], OBJECT[], ARRAY[] * 结构是 * { * key0: value0, * key1: value1, * key2: value2 * ... * } * 例如 * { * "id": "NUMBER", //id 类型必须为 NUMBER * "pictureList": "URL[]", //pictureList 类型必须为 URL[] * } * @see {@link AbstractVerifier#verifyType(String, String, Object, boolean)} */ TYPE, /** * 验证是否符合预设的条件,结构是 * { * key0: value0, * key1: value1, * key2: value2 * ... * } * 例如 * { * "phone~": "PHONE", //phone 必须满足 PHONE 的格式,配置见 {@link AbstractVerifier#COMPILE_MAP} * "status{}": [1,2,3], //status 必须在给出的范围内 * "content{L}": ">0,<=255", //content的长度 必须在给出的范围内 * "balance&{}":">0,<=10000" //必须满足 balance>0 & balance<=10000 * } */ VERIFY, /** * 验证是否存在,结构是 * "key0,key1,key2..." * 多个字段用逗号隔开,联合校验 */ EXIST, /** * 验证是否不存在,除了本身的记录,结构是 * "key0,key1,key2..." * 多个字段用逗号隔开,联合校验 */ UNIQUE, /** * 添加,当要被添加的对象不存在时,结构是 * { * key0: value0, * key1: value1, * key2: value2 * ... * } */ INSERT, /** * 强行放入,不存在时就添加,存在时就修改,结构是 * { * key0: value0, * key1: value1, * key2: value2 * ... * } */ UPDATE, /** * 替换,当要被替换的对象存在时,结构是 * { * key0: value0, * key1: value1, * key2: value2 * ... * } */ REPLACE, /** * 移除,当要被移除的对象存在时,结构是 * "key0,key1,key2..." */ REMOVE, /** * 监听事件,用于同步到其它表,结构是 * "key0": {} * 例如 "name": { "UPDATE": { "Comment": { "userName@": "/name" } } } * 当 User.name 被修改时,同步修改 Comment.userName * * 例如 "sex != 0 && sex != 1": "throw new Error('sex 必须在 [0, 1] 内!')" * 自定义代码,当满足条件是执行后面的代码 * * 还有 * "ELSE": "" * 自定义代码,不处理,和不传一样 */ IF, // /** 直接用 IF 替代 // * 自定义代码,结构是 "code",例如 // * "var a = 1; // * var b = a + 2; // * if (b % 2 == 0) { // * throw new Error('b % 2 == 0 !'); // * } // * " // * // * 或 { "code": "JS", "code2": "LUA" } // */ // CODE, /** * 允许批量增删改部分失败,结构是 * "Table[],key[],key:alias[]" * 自动 ALLOW_PARTIAL_UPDATE_FAILED_TABLE_MAP.put */ ALLOW_PARTIAL_UPDATE_FAIL; }