升级
准备工作
在升级之前,您需要做如下的准备工作。
检查更新日志
在更新前,请阅读更新日志 并检查重大变更是否会影响你的 Luwak 实例。
检查过期的配置项
一些配置项可能会在后续版本中过期。如果不解决过期的配置项, Luwak 也许会在升级后无法重启。
备份
Luwak 遵循语义化版本控制规范,版本格式:主版本号.次版本号.修订号。
新版 Luwak 通常会保持向下兼容的情况下增加新功能。
为防止意外,你应该备份 luwak 和 asm.so 插件。
从二进制升级
- 下载最新的 Luwak 二进制文件和插件 .so 文件到临时文件夹中。
- 停止运行中的 Luwak 实例,备份。
- 覆盖旧的 Luwak 二进制文件和插件 .so 文件。
- 启动 Luwak 实例。
从 v1/v2 升级到 v3
API method 后缀
v1/v2 | v3 | description |
---|---|---|
add | add | 创建单条 |
addList | addBatch | 创建多条 |
detail | get | 获取单条 |
detailByUK | getByUK | 获取单条 |
detailBy$ | getBy$ | 获取单条 |
listAll | selectAll | 获取全部 |
listBy$ | selectBy$ | 获取一页 |
listByIdList | getBatchById | 获取所有 |
search | select | 获取一页,分页过滤排序 |
updata | set | 更新单条 |
update$ | set$ By$ | 更新单条,一个字段 |
updateByIdList | setBatchById | 更新多条 |
delete | del | 删除单条 |
deleteByIdList | delBatchById | 删除多条 |
请求参数 params
基本不变,以下除外
update --> set
- 原始
{ id: number|string, ...data }
是一个对象,对象中包含主键信息 - 变更
[ id, data ]
数组第一个是id,第二个是数据对象
响应结果 result
基本不变
Create
- 创建单条返回
{}
其中有ID - 创建多条返回 number 受影响行数
Read
- 获取单条返回
{}
- 获取多条返回
{ data:[], total: number }
Update
- 更新单条返回 number 受影响行数
- 更新多条返回 number 受影响行数
Delete
- 删除单条返回 number 受影响行数
- 删除多条返回 number 受影响行数
脚本内置方法
luwak.returnResult
标记为弃用,改用 globalThis.output = result;
。
luwak.runSql()
增加了 entity 参数,用于在多数据库实例场景时定位到具体的库。
declare namespace luwak {
function begin(entity: string): void;
function commit(entity: string): void;
function rollback(entity: string): void;
function dao(method: string, params: string|number|object): any;
function runSql(entity: string, query: string, params?: object): any;
function returnResult(result: any): void;
function returnError(code: string, message: string): void;
function setSession(id: string, data: object): void;
function sendMessage(subject: string, id: string, additionalData: any): void;
function cache(cmd: 'get'|'set'|'del'|'exists'|'expire', key: string, value?: any, expire?: number): void;
namespace crypto {
function aesEncrypt(secretKey: string, plaintext: string): string;
function aesDecrypt(secretKey: string, encryptedString: string): string;
}
namespace hash {
function md5(text: string): string;
function sha1(text: string): string;
function sha256(text: string): string;
function passwordHash(password: string): string;
function passwordVerify(password: string, cipherPassword: string): boolean;
}
namespace http {
function get(url: string, config?: object): { data: any };
function post(url: string, data: any, config?: object): { data: any };
function apiCall(apiName: string, params: any, metas: object): { data: any };
}
namespace random {
function guid(): string;
function uuid(): string;
function integer(from: number, to: number): number;
function secret(length: number): string;
function numeric(length: number): string;
function alphanumeric(length: number): string;
}
}
declare namespace log {
function debug(...data: any[]): void;
function info(...data: any[]): void;
function warn(...data: any[]): void;
function error(...data: any[]): void;
}