定义

1. 全局定义

示例代码

import { setup } from 'oor';
import { logger } from './custom_loggers'
// 全局定义
setup({
    provider: () => ClientBase | Pool,
    pageSize: 10,
    showSQL: logger.debug;
    strict: true,
})

参数说明

定义 类型 说明 默认
provider () => ClientBase | Pool 数据源,建议使用 Pool 必选
pageSize number 分页查询时,每页的长度 10
showSQL (sql:string,param:any)=>void SQL语句打印方法,用于调试 null
strict boolean, 支持单独指定 query : 严格查询 ,entity : 严格插入/修改
开户时 : 有参数错误将抛出异常
关闭时 : 有参数错误将忽略错误参数
false

2. 表定义

示例代码

const User = new Table('public.user', UserSchema, {
    key: 'id',                  // 主键, 默认为 'id'
    sortOrder: 'lastModify',    // 默认排序字段, 默认为 ${主键}
    sortBy: 'desc';             // 默认排序方法,默认为 'desc'
    pageSize: 10,               // 默认分页大小,默认先取全局
    globalCondition: [          // 查询过滤条件,将应用到所有查询上
        { field: 'id', condition: '!=', 'value': 1 }
    ]
});

参数说明

定义 类型 说明 默认
key string 主键, 默认为 'id' id
sort Sort 默认排序字段
pageSize number 默认分页大小 10
globalCondition WhereItem[] 查询过滤条件,将应用到所有查询上

3. 字段定义

示例代码

const UserSchema = UType.Table({
    // 字段定义 遵循基础 typebox 定义
    // 可用于验证,创建默认值等
    // 参见 https://github.com/sinclairzx81/typebox
    id: UType.Integer(),
    // 使用 UType 等同于使用 Type, 但只提供了五种类型 :
    // String, Number, Interger, Boolean, Boolean
    // UType.Table 等同于 Parital<Object>
    name: UType.String({ maxLength: 32 }),
    sex: UType.Boolean(),
    // 以上有点废话,以下是正文
    // 定义 ignore: true ,可以使 sql 查询 时,不查以字段
    // 建议 在长文本等不需要显示给用户的列进行定义
    profile: UType.String({ ignore: true }),
    // 当 字段名 和 数据表列名称 不同时
    // 需要定义 column : string
    phoneNo: UType.String({ column: 'phone_no' }),
    // 如果使用逻辑删除,即通过标记数据状态来定义数据删除时
    // 可定义 delMark,定义后:
    //     1. 删除操作将会更新字段为指定的指
    //     2. 查询,修改,删除将会 过滤掉此值,比如 WHERE status != 999 
    // delMark 不支持 Boolean, Date 类型
    // 一个 Table 仅支持一个 delMark
    status:  UType.Integer({ delMark: 999 }),
    // 如果一个 Date,创建记录时给定当时时间,后面不能变动
    // 可定义 isCreate: true , 仅在 Date 类型有效
    registerDate: UType.Date({ column: 'register_date', isCreate: true }),
    // 如果一个 Date,每次修改时都会更新时间
    // 可定义 isModify: true , 仅在 Date 类型有效
    lastModify: UType.Date({ column: 'last_modify', isModify: true })
});

参数说明

定义 支持类型 说明 默认
ignore 全部 不要出现在 SELECT 子句内: SELECT {fields} FROM false
column 全部 数据表实际列名,与字段名不同时需要指定 与字段名相同
delMark String, Number 逻辑删除标记,一个 Table 仅能定义一个字段
isCreate Date isCreate = true 时,创建时自动赋值为服务器日志,修改时会过滤此字段 false
isModify Date isModify = true 时,每次修改都会更新此字段 false