diff --git a/package.json b/package.json index 147e158..172f071 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yizhi/postgres", - "version": "1.0.16", + "version": "1.0.17", "main": "dist/index.js", "types": "typing/index.d.ts", "scripts": {}, diff --git a/src/entity.ts b/src/entity.ts index 976e44c..475a0ca 100644 --- a/src/entity.ts +++ b/src/entity.ts @@ -313,6 +313,30 @@ export function IntArrayColumn(name?: any, option?: any) { }, option?.virtual ?? false, { bytes }); } +/** + * 定义浮点数组,可以通过option.bytes来设置浮点数长度,默认为4 + * @param name 字段名称 + * @param option 字段选项 + */ +export function FloatArrayColumn(name: string, option?: { bytes?: 4 | 8, virtual?: boolean }): Decorators.PropDecorator +export function FloatArrayColumn(option?: { bytes?: 4 | 8, virtual?: boolean }): Decorators.PropDecorator +export function FloatArrayColumn(name?: any, option?: any) { + if (typeof name != "string") { + option = name + name = undefined + } + const bytes = option?.bytes ?? 4; + return _Array("float", name, `float${bytes}[]`, item => { + item = parseFloat(item); + if (isNaN(item) || !isFinite(item)) return null; + return item.toString(); + }, item => { + item = parseFloat(item); + if (isNaN(item) || !isFinite(item)) return null; + return item; + }, option?.virtual ?? false, { bytes }); +} + /** * 定义字符串数组 * @param name 字段名称 diff --git a/src/index.ts b/src/index.ts index 9eba66e..c8344c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,7 +3,7 @@ import "./types"; export { Table, Field, IntColumn, FloatColumn, StringColumn, BooleanColumn, DateColumn, DateTimeColumn, JsonColumn, - IntArrayColumn, StringArrayColumn, + IntArrayColumn, FloatArrayColumn, StringArrayColumn, TSVectorColumn, Int4RangeColumn, FloatRangeColumn, DateRangeColumn, DateTimeRangeColumn, JoinOne, JoinMany,