const currentPage = dv.current().file;
const dailyPages = dv.pages('"0-Daily"').sort(k=>k.file.name, "asc");
const currentPageName = currentPage.name;
const index = dailyPages.findIndex((e) => {return e.file.name === currentPageName});
if (index < 1) {
dv.table(["File", "Created", "Size"],[]);
} else {
const lastIndex = index - 1;
const lastPage = dailyPages[lastIndex].file;
const allPages = dv.pages().values;
const searchPages = [];
const lastTime = dv.parse(lastPage.name);
const currentTime = dv.parse(currentPage.name);
for (let page of allPages) {
const pageFile = page.file;
if (pageFile.cday > lastTime && pageFile.cday <= currentTime) {
searchPages.push(pageFile);
}
}
dv.table(["File", "Created", "Size"], searchPages.sort((a, b) => a.ctime > b.ctime ? 1 : -1).map(b => [b.link, b.ctime, b.size]));
}
Jimmer
一套针对Java和Kotlin的革命性ORM,以及一套基于它的完整的集成方案 (包含一套强大的缓存管理机制)。
功能
- 查询任意形状的数据结构 👁 →
- 保存任意数据结构 👁 →
- 快速开发任意复杂的表单保存业务 👁
- 对同一个聚合根类型而言,多种不同表单格式的保存业务可并存
- 缓存及其一致性 →
- 计算属性 →
- 计算逻辑和ORM解耦,可以利用业务信息(如身份权限)计算,允许使用非SQL技术
- 不仅可以是标量属性,还可以是关联属性
- 远程关联 →
- 跨越微服务的数据关联
- 对微服务治理框架不做假设
- 将不同微服务的关系型模型,合并成一个全局的关系模型
- 强类型SQL DSL
- 前后端免对接 👁 →
- 消除后端开发的DTO爆炸,从以传统开发方式(尤其是MyBatis)的重复劳动中解脱出来
- 为前端自动生成TypeScript代码,在前端代码中恢复DTO类型定义,让每个业务接口都有精确的返回类型定义
- 把后端异常映射为前端可理解错误信息
- 全局过滤器 →
- 智能分页 →
- DTO语言 →
- 自动生成DTO类型的Java/Kotlin定义
- 自动生成实体和DTO之间的相互转化逻辑
- 自动生成查询DTO查询逻辑
- 极致性能 👁 →
- ORM本身的映射性能极高,发挥虚拟线程的威力
- 不会如传统 ORM 一样被新手诱导出低性能 SQL