imodel 0.20.1 → 0.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * imodel v0.20.1
2
+ * imodel v0.20.2
3
3
  * (c) 2019-2026 猛火Fierflame
4
4
  * @license MIT
5
5
  */
@@ -272,6 +272,27 @@ interface Environment<T extends object> extends BaseEnvironment {
272
272
  readonly transaction: T | null;
273
273
  }
274
274
 
275
+ declare const Destroy: unique symbol;
276
+ interface Destroy {
277
+ [Destroy](connection: Connection, run: (data: any) => Promise<object | null>, table: TableDefine<Fields<MainFieldType>>): PromiseLike<this | null>;
278
+ }
279
+ declare const PseudoDestroy: unique symbol;
280
+ interface PseudoDestroy {
281
+ [PseudoDestroy](connection: Connection, update: Record<string, SetValue>, run: (data: any) => Promise<object | null>, table: TableDefine<Fields<MainFieldType>>): PromiseLike<this | null>;
282
+ }
283
+ declare const Save: unique symbol;
284
+ interface Save {
285
+ [Save](connection: Connection, run: (data: any, newData?: any) => Promise<object | null>, newData: Record<string, any> | null, table: TableDefine): PromiseLike<this | null>;
286
+ }
287
+ declare const Create: unique symbol;
288
+ interface Create<T = unknown> {
289
+ [Create](connection: Connection, data: object, run: (data: any, that: any) => Promise<object>, table: TableDefine): PromiseLike<T>;
290
+ }
291
+ declare const Build: unique symbol;
292
+ interface Build<T = unknown> {
293
+ [Build](data: object, others: object | boolean): T;
294
+ }
295
+
275
296
  type TableType = '' | 'table' | 'view';
276
297
  interface FindArg {
277
298
  /** 排序配置,true 表示逆序 */
@@ -341,6 +362,15 @@ interface Savepoint {
341
362
  [Symbol.asyncDispose](): Promise<void>;
342
363
  }
343
364
  interface ConnectionInterface {
365
+ build<T extends Fields>(build: Build<T>, data: object, saved?: boolean): T;
366
+ build<T extends Fields>(table: TableDefine<T>, data: object, saved?: boolean): FieldValue<T>;
367
+ build(p: Build | TableDefine, data: object, saved?: boolean): any;
368
+ build<T extends Fields>(build: Build<T>, data: object, unsaved?: object): T;
369
+ build<T extends Fields>(table: TableDefine<T>, data: object, unsaved?: object): FieldValue<T>;
370
+ build(p: Build | TableDefine, data: object, unsaved?: object): any;
371
+ build<T extends Fields>(build: Build<T>, data: object, saved?: object | boolean): T;
372
+ build<T extends Fields>(table: TableDefine<T>, data: object, saved?: object | boolean): FieldValue<T>;
373
+ build(p: Build | TableDefine, data: object, saved?: object | boolean): any;
344
374
  dbType(): Promise<string>;
345
375
  dbVersion(): Promise<string>;
346
376
  query(...values: any[]): Promise<any[]>;
@@ -1655,27 +1685,6 @@ declare class Where {
1655
1685
  #private;
1656
1686
  }
1657
1687
 
1658
- declare const Destroy: unique symbol;
1659
- interface Destroy {
1660
- [Destroy](connection: Connection, run: (data: any) => Promise<object | null>, table: TableDefine<Fields<MainFieldType>>): PromiseLike<this | null>;
1661
- }
1662
- declare const PseudoDestroy: unique symbol;
1663
- interface PseudoDestroy {
1664
- [PseudoDestroy](connection: Connection, update: Record<string, SetValue>, run: (data: any) => Promise<object | null>, table: TableDefine<Fields<MainFieldType>>): PromiseLike<this | null>;
1665
- }
1666
- declare const Save: unique symbol;
1667
- interface Save {
1668
- [Save](connection: Connection, run: (data: any, newData?: any) => Promise<object | null>, newData: Record<string, any> | null, table: TableDefine): PromiseLike<this | null>;
1669
- }
1670
- declare const Create: unique symbol;
1671
- interface Create<T = unknown> {
1672
- [Create](connection: Connection, data: object, run: (data: any, that: any) => Promise<object>, table: TableDefine): PromiseLike<T>;
1673
- }
1674
- declare const Build: unique symbol;
1675
- interface Build<T = unknown> {
1676
- [Build](data: object, others: object | boolean): T;
1677
- }
1678
-
1679
1688
  declare class Connection<E extends object = object> {
1680
1689
  #private;
1681
1690
  constructor(connection: PromiseLike<IConnection<E>> | IConnection<E>, transaction?: E | null);
@@ -1840,10 +1849,11 @@ type QueryOptions<T extends Fields, TB extends unknown = any> = {
1840
1849
  */
1841
1850
  /**
1842
1851
  * @template {Fields} T
1843
- * @template {object} [TB=object]
1852
+ * @template {object | never} [TB=object]
1844
1853
  * @implements {Queryable<T>}
1854
+ * @implements {Action<any[]>}
1845
1855
  */
1846
- declare class Query<T extends Fields, TB extends unknown = any> extends Subquery implements Queryable {
1856
+ declare class Query<T extends Fields, TB extends unknown = any> extends Subquery implements Queryable, Action {
1847
1857
  /**
1848
1858
  * @template {Fields} F
1849
1859
  * @template {new (o: QueryOptions<F>) => Query<F>} T
@@ -2027,6 +2037,18 @@ declare class Query<T extends Fields, TB extends unknown = any> extends Subquery
2027
2037
  * @param {LockType?} [lock]
2028
2038
  */
2029
2039
  lock(lock?: LockType | null): this;
2040
+ invoke(connect: any): Promise<any>;
2041
+ /**
2042
+ * @param {string[]} fields
2043
+ * @param {Skip} [skip]
2044
+ * @returns {Action<FieldValue<T>[]>}
2045
+ */
2046
+ search(fields: string[], skip?: Skip): Action<FieldValue<T>[]>;
2047
+ /**
2048
+ * @param {Skip} [skip]
2049
+ * @returns {Action<(FieldValue<T> | TB)[]>}
2050
+ */
2051
+ find(skip?: Skip): Action<(FieldValue<T> | TB)[]>;
2030
2052
  /**
2031
2053
  *
2032
2054
  * @param {object} a
@@ -2068,88 +2090,100 @@ declare function mergeHooks(...hooks: (Readonly<Partial<Hooks>> | Readonly<Parti
2068
2090
  */
2069
2091
  declare function bindHooks(hooks: Readonly<Partial<Hooks>>, that: any): Readonly<Partial<Hooks>>;
2070
2092
 
2071
- declare function export_default$i<T>(tableDef: TableDefine, data: T): Action<(T extends Destroy ? T : object) | null>;
2093
+ declare function export_default$j<T>(tableDef: TableDefine, data: T): Action<(T extends Destroy ? T : object) | null>;
2072
2094
 
2073
- declare function export_default$h(queryable: Queryable): Action<number>;
2095
+ declare function export_default$i(queryable: Queryable): Action<number>;
2074
2096
 
2075
- declare function export_default$g<T extends TableDefine>(model: T, list: object[], skip?: Skip): Action<TableValue<T>[]>;
2076
- declare function export_default$g<T extends TableDefine>(model: T, value: object, skip?: Skip): Action<T extends Build<infer R> ? R : TableValue<T>>;
2077
- declare function export_default$g<T extends TableDefine>(model: T, p: object | object[], skip?: Skip): Action<TableValue<T>[] | (T extends Build<infer R> ? R : TableValue<T>)>;
2097
+ declare function export_default$h<T extends TableDefine>(model: T, list: object[], skip?: Skip): Action<TableValue<T>[]>;
2098
+ declare function export_default$h<T extends TableDefine>(model: T, value: object, skip?: Skip): Action<T extends Build<infer R> ? R : TableValue<T>>;
2099
+ declare function export_default$h<T extends TableDefine>(model: T, p: object | object[], skip?: Skip): Action<TableValue<T>[] | (T extends Build<infer R> ? R : TableValue<T>)>;
2078
2100
 
2079
- declare function export_default$f({ table, connect, fields }: TableDefine, where?: Wheres | null): Action<number>;
2101
+ declare function export_default$g({ table, connect, fields }: TableDefine, where?: Wheres | null): Action<number>;
2080
2102
 
2081
- declare function export_default$e({ table, connect, fields }: TableDefine, returning?: string[] | null, where?: Wheres | null): Action<any[]>;
2103
+ declare function export_default$f({ table, connect, fields }: TableDefine, returning?: string[] | null, where?: Wheres | null): Action<any[]>;
2082
2104
 
2083
- declare function export_default$d(queryable: Queryable, update?: Record<string, SetValue> | boolean): Action<number>;
2105
+ declare function export_default$e(queryable: Queryable, update?: Record<string, SetValue> | boolean): Action<number>;
2084
2106
 
2085
- declare function export_default$c<T extends Destroy & PseudoDestroy>(tableDef: TableDefine, data: T, update?: Record<string, any> | boolean): Action<T | null>;
2086
- declare function export_default$c<T extends Destroy & PseudoDestroy>(tableDef: TableDefine, data: any, update?: Record<string, any> | boolean): Action<T | object | null>;
2087
- declare function export_default$c(tableDef: TableDefine, data: any, update?: Record<string, any> | boolean): Action<object | null>;
2107
+ declare function export_default$d<T extends Destroy & PseudoDestroy>(tableDef: TableDefine, data: T, update?: Record<string, any> | boolean): Action<T | null>;
2108
+ declare function export_default$d<T extends Destroy & PseudoDestroy>(tableDef: TableDefine, data: any, update?: Record<string, any> | boolean): Action<T | object | null>;
2109
+ declare function export_default$d(tableDef: TableDefine, data: any, update?: Record<string, any> | boolean): Action<object | null>;
2088
2110
 
2089
- declare function export_default$b<T extends TableDefine>(sql: T, skip?: Skip): Action<T extends Build<infer R> ? R[] : T extends TableDefine<infer F> ? FieldValue<F>[] : never>;
2111
+ /** @deprecated */
2112
+ declare function export_default$c<T extends TableDefine>(sql: T, skip?: Skip): Action<T extends Build<infer R> ? R[] : T extends TableDefine<infer F> ? FieldValue<F>[] : never>;
2090
2113
 
2091
- declare function export_default$a<T extends TableDefine>(sql: T, skip?: Skip): Action<T extends Build<infer R> ? R : T extends TableDefine<infer F> ? FieldValue<F> : never>;
2114
+ declare function export_default$b<T extends TableDefine>(sql: T, skip?: Skip): Action<T extends Build<infer R> ? R : T extends TableDefine<infer F> ? FieldValue<F> : never>;
2092
2115
 
2093
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T[], ignoreConflict?: boolean): Action<T[]>;
2094
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T, ignoreConflict?: boolean): Action<T>;
2095
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T | T[], ignoreConflict?: boolean): Action<T | T[]>;
2096
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T[], keys?: string[], ignoreConflict?: boolean): Action<T[]>;
2097
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T, keys?: string[], ignoreConflict?: boolean): Action<T>;
2098
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: string[], ignoreConflict?: boolean): Action<T | T[]>;
2099
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T[], keys?: string[] | boolean, ignoreConflict?: boolean): Action<T[]>;
2100
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T, keys?: string[] | boolean, ignoreConflict?: boolean): Action<T>;
2101
- declare function export_default$9<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: string[] | boolean, ignoreConflict?: boolean): Action<T | T[]>;
2116
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T[], ignoreConflict?: boolean): Action<T[]>;
2117
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T, ignoreConflict?: boolean): Action<T>;
2118
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T | T[], ignoreConflict?: boolean): Action<T | T[]>;
2119
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T[], keys?: string[], ignoreConflict?: boolean): Action<T[]>;
2120
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T, keys?: string[], ignoreConflict?: boolean): Action<T>;
2121
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: string[], ignoreConflict?: boolean): Action<T | T[]>;
2122
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T[], keys?: string[] | boolean, ignoreConflict?: boolean): Action<T[]>;
2123
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T, keys?: string[] | boolean, ignoreConflict?: boolean): Action<T>;
2124
+ declare function export_default$a<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: string[] | boolean, ignoreConflict?: boolean): Action<T | T[]>;
2102
2125
 
2103
- declare function export_default$8<T>(tableDef: TableDefine, data: T, value: Record<string, SetValue>): Action<(T extends PseudoDestroy ? T : object) | null>;
2126
+ declare function export_default$9<T>(tableDef: TableDefine, data: T, value: Record<string, SetValue>): Action<(T extends PseudoDestroy ? T : object) | null>;
2104
2127
 
2105
- declare function export_default$7<T>(model: TableDefine, data: T, newData?: Record<string, any> | null, skip?: Skip): Action<(T extends Save ? T : object) | null>;
2128
+ declare function export_default$8<T>(model: TableDefine, data: T, newData?: Record<string, any> | null, skip?: Skip): Action<(T extends Save ? T : object) | null>;
2106
2129
 
2107
- declare function export_default$6<T extends TableDefine>(sql: T, fields: string[], skip?: Skip): Action<T extends TableDefine<infer F> ? FieldValue<F>[] : never>;
2130
+ /** @deprecated */
2131
+ declare function export_default$7<T extends TableDefine>(sql: T, fields: string[], skip?: Skip): Action<T extends TableDefine<infer F> ? FieldValue<F>[] : never>;
2108
2132
 
2109
- declare function export_default$5(queryable: Queryable): Action<any[]>;
2133
+ /** @deprecated */
2134
+ declare function export_default$6(queryable: Queryable): Action<any[]>;
2110
2135
 
2111
- declare function export_default$4({ table, connect, fields }: TableDefine, pKeys: string[], setKeys: string[], list: Record<string, any>[], skip?: Skip | boolean): Action<number>;
2136
+ declare function export_default$5({ table, connect, fields }: TableDefine, pKeys: string[], setKeys: string[], list: Record<string, any>[], skip?: Skip | boolean): Action<number>;
2112
2137
 
2113
- declare function export_default$3({ table, connect, fields }: TableDefine, pKeys: string[], setKeys: string[], list: Record<string, any>[], returning?: string[] | null, skip?: Skip | boolean): Action<any[]>;
2138
+ declare function export_default$4({ table, connect, fields }: TableDefine, pKeys: string[], setKeys: string[], list: Record<string, any>[], returning?: string[] | null, skip?: Skip | boolean): Action<any[]>;
2114
2139
 
2115
- declare function export_default$2({ table, connect, fields }: TableDefine, update: Record<string, any>, where?: Wheres | null, skip?: Skip | boolean): Action<number>;
2140
+ declare function export_default$3({ table, connect, fields }: TableDefine, update: Record<string, any>, where?: Wheres | null, skip?: Skip | boolean): Action<number>;
2116
2141
 
2117
- declare function export_default$1<T extends Fields<MainFieldType>>({ table, connect, fields }: TableDefine<T>, update: Record<string, any>, returning?: string[] | null, where?: Wheres | null, skip?: Skip | boolean): Action<any[]>;
2142
+ declare function export_default$2<T extends Fields<MainFieldType>>({ table, connect, fields }: TableDefine<T>, update: Record<string, any>, returning?: string[] | null, where?: Wheres | null, skip?: Skip | boolean): Action<any[]>;
2118
2143
 
2119
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T[], conflictSet?: Record<string, SetValue>): Action<T[]>;
2120
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T, conflictSet?: Record<string, SetValue>): Action<T>;
2121
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T | T[], conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2122
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T[]>;
2123
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T>;
2124
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2125
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T[]>;
2126
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T>;
2127
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2128
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T[]>;
2129
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T>;
2130
- declare function export_default<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2144
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T[], conflictSet?: Record<string, SetValue>): Action<T[]>;
2145
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T, conflictSet?: Record<string, SetValue>): Action<T>;
2146
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T | T[], conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2147
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T[]>;
2148
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T>;
2149
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[], conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2150
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T[]>;
2151
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T>;
2152
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[], conflictKeys?: string[] | boolean, conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2153
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T[], keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T[]>;
2154
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T, keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T>;
2155
+ declare function export_default$1<T extends object>(tableDefine: TableDefine, data: T | T[], keys?: null | string[] | boolean | Record<string, SetValue>, conflictKeys?: string[] | boolean | Record<string, SetValue>, conflictSet?: Record<string, SetValue>): Action<T | T[]>;
2156
+
2157
+ /** @import Connection from './index.mts' */
2158
+ /** @import { TableDefine, Skip, SelectItem, ConnectionInterface } from '../types' */
2159
+ declare function export_default<T extends TableDefine>(model: T, primary: any, options?: {
2160
+ skipWhere?: boolean;
2161
+ lock?: 'S' | 'X' | null;
2162
+ range?: FindRange;
2163
+ }): Action<(T extends Build<infer R> ? R : T extends TableDefine<infer F> ? FieldValue<F> : never) | null>;
2131
2164
 
2132
2165
  declare namespace index_d {
2133
2166
  export {
2134
- export_default$i as completelyDestroy,
2135
- export_default$h as count,
2136
- export_default$g as create,
2137
- export_default$f as delete,
2138
- export_default$e as deleteReturn,
2139
- export_default$c as destroy,
2140
- export_default$d as destroyMany,
2141
- export_default$b as find,
2142
- export_default$a as first,
2143
- export_default$9 as insert,
2144
- export_default$8 as pseudoDestroy,
2145
- export_default$7 as save,
2146
- export_default$6 as search,
2147
- export_default$5 as select,
2148
- export_default$2 as update,
2149
- export_default$4 as updateList,
2150
- export_default$3 as updateListReturn,
2151
- export_default$1 as updateReturn,
2152
- export_default as upsert,
2167
+ export_default$j as completelyDestroy,
2168
+ export_default$i as count,
2169
+ export_default$h as create,
2170
+ export_default$g as delete,
2171
+ export_default$f as deleteReturn,
2172
+ export_default$d as destroy,
2173
+ export_default$e as destroyMany,
2174
+ export_default$c as find,
2175
+ export_default$b as first,
2176
+ export_default as get,
2177
+ export_default$a as insert,
2178
+ export_default$9 as pseudoDestroy,
2179
+ export_default$8 as save,
2180
+ export_default$7 as search,
2181
+ export_default$6 as select,
2182
+ export_default$3 as update,
2183
+ export_default$5 as updateList,
2184
+ export_default$4 as updateListReturn,
2185
+ export_default$2 as updateReturn,
2186
+ export_default$1 as upsert,
2153
2187
  };
2154
2188
  }
2155
2189
 
@@ -2567,5 +2601,5 @@ declare function toBool(v: any): boolean;
2567
2601
  declare function setDevelopment(d?: boolean): void;
2568
2602
  declare let isDevelopment: boolean;
2569
2603
 
2570
- export { Build, CheckViolationError, Connection, ConnectionError, Create, Destroy, ForeignKeyViolationError, InvalidInputSyntaxError, Model, NotNullViolationError, OperatorMismatchError, PseudoDestroy, Query, Save, Scene, Select, SetValue, Submodel, UniqueViolationError, Where, index_d as actions, afterCreate, afterCreateMany, afterDelete, afterUpdate, beforeCreate, beforeCreateMany, beforeDelete, beforeUpdate, bindHooks, coefficient, column, export_default$i as completelyDestroy, export_default$h as count, export_default$g as create, creating, decrement, defaultValue, field as define, export_default$f as delete, export_default$e as deleteReturn, deleted, deleting, export_default$c as destroy, export_default$d as destroyMany, divide, field$1 as field, export_default$b as find, export_default$a as first, getPrimaryFields, getPrimaryKeys, hooks, immutable, increment, index, export_default$9 as insert, isDevelopment, isPseudo, mergeHooks, model, multiply, now, primary, prop, pseudo, export_default$8 as pseudoDestroy, export_default$7 as save, export_default$6 as search, export_default$5 as select, setDevelopment, sort, model as submodel, toBool, toNot, toPrimaries, toPrimary, uncreatable, undeleted, export_default$2 as update, export_default$4 as updateList, export_default$3 as updateListReturn, export_default$1 as updateReturn, updating, export_default as upsert, uuid, values, where, withDeleted };
2571
- export type { Action, BaseEnvironment, ClassDecorator, Column, ColumnOptions, ConnectionInterface, Constraint, DBColumn, DBIndex, DBTable, Environment, FieldDecorator, FieldDefine, FieldDefineOption, FieldDefineType, FieldSpecific, FieldSpecificValue, FieldType, FieldTypeDefine, FieldValue, Fields, FindArg, FindRange, GetName, Hook, Hooks, IConnection, IDBTable, Index, IndexInfo, IndexOptions, JOIN, Join, JoinType, LockType, MainFieldType, MaybePromise, MethodDecorator, Options, QueryOptions, Queryable, Savepoint, SelectItem, Skip, Support, TableConnect, TableConnection, TableDefine, TableType, TableValue, ToFieldType, ToType, TransactionFn, TransactionHandler, TransactionHandlerArray, WhereExists, WhereItem, WhereLike, WhereOr, WhereRaw, WhereValue, Wheres };
2604
+ export { index_d as Action, Build, CheckViolationError, Connection, ConnectionError, Create, Destroy, ForeignKeyViolationError, InvalidInputSyntaxError, Model, NotNullViolationError, OperatorMismatchError, PseudoDestroy, Query, Save, Scene, Select, SetValue, Submodel, Subquery, UniqueViolationError, Where, index_d as actions, afterCreate, afterCreateMany, afterDelete, afterUpdate, beforeCreate, beforeCreateMany, beforeDelete, beforeUpdate, bindHooks, coefficient, column, export_default$j as completelyDestroy, export_default$i as count, export_default$h as create, creating, decrement, defaultValue, field as define, export_default$g as delete, export_default$f as deleteReturn, deleted, deleting, export_default$d as destroy, export_default$e as destroyMany, divide, field$1 as field, export_default$c as find, export_default$b as first, export_default as get, getPrimaryFields, getPrimaryKeys, hooks, immutable, increment, index, export_default$a as insert, isDevelopment, isPseudo, mergeHooks, model, multiply, now, primary, prop, pseudo, export_default$9 as pseudoDestroy, export_default$8 as save, export_default$7 as search, export_default$6 as select, setDevelopment, sort, model as submodel, toBool, toNot, toPrimaries, toPrimary, uncreatable, undeleted, export_default$3 as update, export_default$5 as updateList, export_default$4 as updateListReturn, export_default$2 as updateReturn, updating, export_default$1 as upsert, uuid, values, where, withDeleted };
2605
+ export type { BaseEnvironment, ClassDecorator, Column, ColumnOptions, ConnectionInterface, Constraint, DBColumn, DBIndex, DBTable, Environment, FieldDecorator, FieldDefine, FieldDefineOption, FieldDefineType, FieldSpecific, FieldSpecificValue, FieldType, FieldTypeDefine, FieldValue, Fields, FindArg, FindRange, GetName, Hook, Hooks, IConnection, IDBTable, Index, IndexInfo, IndexOptions, JOIN, Join, JoinType, LockType, MainFieldType, MaybePromise, MethodDecorator, Options, QueryOptions, Queryable, Savepoint, SelectItem, Skip, Support, TableConnect, TableConnection, TableDefine, TableType, TableValue, ToFieldType, ToType, TransactionFn, TransactionHandler, TransactionHandlerArray, WhereExists, WhereItem, WhereLike, WhereOr, WhereRaw, WhereValue, Wheres };
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * imodel v0.20.1
2
+ * imodel v0.20.2
3
3
  * (c) 2019-2026 猛火Fierflame
4
4
  * @license MIT
5
5
  */
@@ -244,12 +244,6 @@ function setDefaultOptions(v) {
244
244
  return v;
245
245
  }
246
246
 
247
- const Destroy = Symbol();
248
- const PseudoDestroy = Symbol();
249
- const Save = Symbol();
250
- const Create = Symbol();
251
- const Build = Symbol();
252
-
253
247
  /** @import { TableDefine, FieldDefine } from '../types/table' */
254
248
  /** @import { DBIndex, DBTable } from '../types/connection' */
255
249
  /**
@@ -380,6 +374,12 @@ function table2db(tables) {
380
374
  return allTables;
381
375
  }
382
376
 
377
+ const Destroy = Symbol();
378
+ const PseudoDestroy = Symbol();
379
+ const Save = Symbol();
380
+ const Create = Symbol();
381
+ const Build = Symbol();
382
+
383
383
  function signal2promise(signal) {
384
384
  return new Promise((_, r) => {
385
385
  if (signal.aborted) {
@@ -428,7 +428,26 @@ function createInterface (connPromise, baseTransaction) {
428
428
  // TODO: 检测层数
429
429
  }
430
430
  }
431
+ function build(p, data, saved) {
432
+ if (typeof p[Build] === 'function') {
433
+ return p[Build](data, saved || false, {
434
+ isDevelopment,
435
+ values,
436
+ errors
437
+ });
438
+ }
439
+ if (typeof saved === 'boolean') {
440
+ return {
441
+ ...data
442
+ };
443
+ }
444
+ return {
445
+ ...data,
446
+ ...saved
447
+ };
448
+ }
431
449
  const ci = {
450
+ build,
432
451
  async dbType() {
433
452
  const conn = await connPromise;
434
453
  return conn.dbType;
@@ -1019,41 +1038,43 @@ const withDeleted = Symbol();
1019
1038
  /** @typedef {typeof withDeleted} withDeleted */
1020
1039
  /** @typedef {deleted | undeleted | withDeleted} FindRange */
1021
1040
 
1022
- /** @import { Options, Queryable } from '../types' */
1023
- /**
1024
- *
1025
- * @param {Partial<Queryable>} queryable
1026
- * @returns {Options}
1027
- */
1028
- function getOptions({
1041
+ function getPseudoWhere({
1029
1042
  fields,
1030
- pseudo,
1031
- options: modelOptions
1032
- }) {
1033
- const options = {
1034
- where: [],
1035
- ...modelOptions
1036
- };
1043
+ pseudo
1044
+ }, range) {
1037
1045
  if (!pseudo || !fields) {
1038
- return options;
1046
+ return null;
1039
1047
  }
1040
1048
  if (!(pseudo in fields)) {
1041
- return options;
1049
+ return null;
1042
1050
  }
1043
- if (options.range === undeleted) {
1044
- options.where = [...options.where, {
1051
+ if (range === undeleted) {
1052
+ return {
1045
1053
  field: pseudo,
1046
1054
  operator: '<>',
1047
1055
  value: 0
1048
- }];
1049
- } else if (options.range !== withDeleted) {
1050
- options.where = [...options.where, {
1056
+ };
1057
+ } else if (range !== withDeleted) {
1058
+ return {
1051
1059
  field: pseudo,
1052
1060
  operator: '=',
1053
1061
  value: 0
1054
- }];
1062
+ };
1063
+ }
1064
+ return null;
1065
+ }
1066
+ function getOptions(queryable) {
1067
+ const pseudoWhere = getPseudoWhere(queryable, queryable.options?.range);
1068
+ if (!pseudoWhere) {
1069
+ return {
1070
+ where: [],
1071
+ ...queryable.options
1072
+ };
1055
1073
  }
1056
- return options;
1074
+ return {
1075
+ ...queryable.options,
1076
+ where: [...(queryable.options?.where || []), pseudoWhere]
1077
+ };
1057
1078
  }
1058
1079
 
1059
1080
  function count (queryable) {
@@ -2692,23 +2713,20 @@ async function search$1(conn, that, p, returnFields, skip) {
2692
2713
 
2693
2714
  /* eslint-disable max-len */
2694
2715
 
2716
+ /** @deprecated */
2695
2717
  function find (sql, skip) {
2696
2718
  return {
2697
2719
  connect: sql.connect,
2698
- async invoke(connect, connection, env) {
2720
+ async invoke(connect, connection) {
2699
2721
  const conn = await connect();
2700
2722
  const result = await search$1(conn, connection, sql, true, skip);
2701
- if (typeof sql[Build] !== 'function') {
2702
- return result;
2703
- }
2704
- const R = sql[Build].bind(sql);
2705
- return result.map(it => R(it, true, env));
2723
+ return result.map(it => conn.build(sql, it, true));
2706
2724
  }
2707
2725
  };
2708
2726
  }
2709
2727
 
2710
2728
  /** @import Connection from './index.mts' */
2711
- /** @import { Environment, TableDefine, Skip, SelectItem, ConnectionInterface, BaseEnvironment } from '../types' */
2729
+ /** @import { TableDefine, Skip, SelectItem, ConnectionInterface } from '../types' */
2712
2730
 
2713
2731
  /**
2714
2732
  *
@@ -2716,11 +2734,10 @@ function find (sql, skip) {
2716
2734
  * @param {ConnectionInterface} conn
2717
2735
  * @param {Connection} that
2718
2736
  * @param {T} p
2719
- * @param {BaseEnvironment} env
2720
2737
  * @param {Skip} [skip]
2721
2738
  * @returns {Promise<any>}
2722
2739
  */
2723
- async function first$1(conn, that, p, env, skip) {
2740
+ async function first$1(conn, that, p, skip) {
2724
2741
  const {
2725
2742
  table,
2726
2743
  fields
@@ -2755,18 +2772,15 @@ async function first$1(conn, that, p, env, skip) {
2755
2772
  if (!item) {
2756
2773
  return null;
2757
2774
  }
2758
- if (typeof p[Build] !== 'function') {
2759
- return item;
2760
- }
2761
- return p[Build](item, true, env);
2775
+ return conn.build(p, item);
2762
2776
  }
2763
2777
 
2764
2778
  function first (sql, skip) {
2765
2779
  return {
2766
2780
  connect: sql.connect,
2767
- async invoke(connect, connection, env) {
2781
+ async invoke(connect, connection) {
2768
2782
  const conn = await connect();
2769
- return first$1(conn, connection, sql, env, skip);
2783
+ return first$1(conn, connection, sql, skip);
2770
2784
  }
2771
2785
  };
2772
2786
  }
@@ -3363,6 +3377,7 @@ function save (model, data, newData, skip) {
3363
3377
  };
3364
3378
  }
3365
3379
 
3380
+ /** @deprecated */
3366
3381
  function search (sql, fields, skip) {
3367
3382
  return {
3368
3383
  connect: sql.connect,
@@ -3416,6 +3431,7 @@ function toSelect(queryable, lockable) {
3416
3431
  };
3417
3432
  }
3418
3433
 
3434
+ /** @deprecated */
3419
3435
  function select (queryable) {
3420
3436
  return {
3421
3437
  connect: queryable.connect,
@@ -3575,6 +3591,91 @@ function upsert ({
3575
3591
  };
3576
3592
  }
3577
3593
 
3594
+ const falseValues = new Set(['', '0', 'n', 'f', 'no', 'off', 'false', '否', '不', '假', '不是', '不行', '不可以']);
3595
+
3596
+ /**
3597
+ *
3598
+ * @param {any} v
3599
+ * @returns
3600
+ */
3601
+ function toBool(v) {
3602
+ if (typeof v !== 'string') {
3603
+ return Boolean(v);
3604
+ }
3605
+ return !falseValues.has(v.toLowerCase());
3606
+ }
3607
+
3608
+ /** @import Connection from './index.mts' */
3609
+ /** @import { TableDefine, Skip, SelectItem, ConnectionInterface } from '../types' */
3610
+
3611
+ function get (model, primary, options) {
3612
+ return {
3613
+ connect: model.connect,
3614
+ async invoke(connect, connection) {
3615
+ const primaryFields = Object.entries(model.fields).filter(([, v]) => v.primary).sort(([, a], [, b]) => Number(a.primary) - Number(b.primary));
3616
+ if (!primaryFields.length) {
3617
+ throw new Error('no primary key');
3618
+ }
3619
+ const wheres = new Where();
3620
+ if (primaryFields.length === 1) {
3621
+ const [[field]] = primaryFields;
3622
+ wheres.and(field, primary);
3623
+ } else if (typeof primary === 'object') {
3624
+ for (const [p] of primaryFields) {
3625
+ wheres.and(p, primary[p]);
3626
+ }
3627
+ } else {
3628
+ const values = `${primary}`.split('$');
3629
+ if (values.length !== primaryFields.length) ;
3630
+ for (const [i, [p, {
3631
+ type
3632
+ }]] of primaryFields.entries()) {
3633
+ const value = values[i] ?? null;
3634
+ const val = type !== 'bool' || value === null ? value : toBool(value);
3635
+ wheres.and(p, val);
3636
+ }
3637
+ }
3638
+ const whereValues = Where.parseParams([wheres]) || [];
3639
+ const pseudoWhere = getPseudoWhere(model, options?.range);
3640
+ if (pseudoWhere) {
3641
+ whereValues.push(pseudoWhere);
3642
+ }
3643
+ const {
3644
+ table,
3645
+ fields
3646
+ } = model;
3647
+ const lock = options?.lock;
3648
+ const [columns, fieldColumns, tableFields] = toColumns(fields);
3649
+ const where = where2column(whereValues, fieldColumns);
3650
+ where.push(...getFixedValueWhere(columns));
3651
+ const whereHook = !options?.skipWhere && (await model.hooks?.where?.(connection, model));
3652
+ if (whereHook) {
3653
+ where.push(...where2column(Where.parse(whereHook), fieldColumns));
3654
+ }
3655
+ /** @type {SelectItem} */
3656
+ const selects = {
3657
+ table: typeof table === 'string' ? table : '',
3658
+ columns,
3659
+ where,
3660
+ limit: 1,
3661
+ sort: [],
3662
+ select: select2column(columns, fieldColumns),
3663
+ group: [],
3664
+ having: [],
3665
+ lock: options?.lock
3666
+ };
3667
+ const conn = await connect();
3668
+ const list = await conn.select(selects);
3669
+ const baseFieldSet = new Set(Object.keys(fieldColumns || columns));
3670
+ const [item] = await findSub(conn, list, tableFields, baseFieldSet, lock);
3671
+ if (!item) {
3672
+ return null;
3673
+ }
3674
+ return conn.build(model, item);
3675
+ }
3676
+ };
3677
+ }
3678
+
3578
3679
  var index$1 = /*#__PURE__*/Object.freeze({
3579
3680
  __proto__: null,
3580
3681
  completelyDestroy: completelyDestroy,
@@ -3586,6 +3687,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
3586
3687
  destroyMany: destroyMany,
3587
3688
  find: find,
3588
3689
  first: first,
3690
+ get: get,
3589
3691
  insert: insert,
3590
3692
  pseudoDestroy: pseudoDestroy,
3591
3693
  save: save,
@@ -3646,18 +3748,7 @@ class Connection {
3646
3748
  return this.#interface.type(table);
3647
3749
  }
3648
3750
  build(p, data, saved) {
3649
- if (typeof p[Build] === 'function') {
3650
- return p[Build](data, saved || false, this.#env);
3651
- }
3652
- if (typeof saved === 'boolean') {
3653
- return {
3654
- ...data
3655
- };
3656
- }
3657
- return {
3658
- ...data,
3659
- ...saved
3660
- };
3751
+ return this.#interface.build(p, data, saved);
3661
3752
  }
3662
3753
  /** @deprecated */
3663
3754
 
@@ -5193,21 +5284,7 @@ function coefficient(...value) {
5193
5284
  };
5194
5285
  }
5195
5286
 
5196
- const falseValues = new Set(['', '0', 'n', 'f', 'no', 'off', 'false', '否', '不', '假', '不是', '不行', '不可以']);
5197
-
5198
- /**
5199
- *
5200
- * @param {any} v
5201
- * @returns
5202
- */
5203
- function toBool(v) {
5204
- if (typeof v !== 'string') {
5205
- return Boolean(v);
5206
- }
5207
- return !falseValues.has(v.toLowerCase());
5208
- }
5209
-
5210
- /** @import { Action, FieldDefine, Fields, LockType, Options, Queryable, Select, Skip, TableConnect } from './types' */
5287
+ /** @import { Action, FieldDefine, Fields, FieldValue, LockType, Options, Queryable, Select, Skip, TableConnect } from './types' */
5211
5288
  /** @import { WhereValue, Wheres } from './Where.mjs' */
5212
5289
  /**
5213
5290
  *
@@ -5272,8 +5349,9 @@ function selectFn(fn, select, newSelect) {
5272
5349
  */
5273
5350
  /**
5274
5351
  * @template {Fields} T
5275
- * @template {object} [TB=object]
5352
+ * @template {object | never} [TB=object]
5276
5353
  * @implements {Queryable<T>}
5354
+ * @implements {Action<any[]>}
5277
5355
  */
5278
5356
  class Query extends Subquery {
5279
5357
  /**
@@ -5751,6 +5829,41 @@ class Query extends Subquery {
5751
5829
  this.#options.lock = type === 'S' || type === 'X' ? type : null;
5752
5830
  return this;
5753
5831
  }
5832
+ async invoke(connect) {
5833
+ const selects = toSelect(this, true);
5834
+ const conn = await connect();
5835
+ return conn.select(selects);
5836
+ }
5837
+ /**
5838
+ * @param {string[]} fields
5839
+ * @param {Skip} [skip]
5840
+ * @returns {Action<FieldValue<T>[]>}
5841
+ */
5842
+ search(fields, skip) {
5843
+ return {
5844
+ connect: this.connect,
5845
+ invoke: async (connect, connection) => {
5846
+ const returnFields = Array.isArray(fields) ? fields : [];
5847
+ const conn = await connect();
5848
+ const result = search$1(conn, connection, this, returnFields, skip);
5849
+ return /** @type {any} */result;
5850
+ }
5851
+ };
5852
+ }
5853
+ /**
5854
+ * @param {Skip} [skip]
5855
+ * @returns {Action<(FieldValue<T> | TB)[]>}
5856
+ */
5857
+ find(skip) {
5858
+ return {
5859
+ connect: this.connect,
5860
+ invoke: async (connect, connection) => {
5861
+ const conn = await connect();
5862
+ const result = await search$1(conn, connection, this, true, skip);
5863
+ return result.map(it => conn.build(this, it, true));
5864
+ }
5865
+ };
5866
+ }
5754
5867
  }
5755
5868
 
5756
5869
  /** @import { Fields, IndexInfo, FieldDefine } from './types' */
@@ -7107,4 +7220,4 @@ function field(type, {
7107
7220
  };
7108
7221
  }
7109
7222
 
7110
- export { Build, CheckViolationError, Connection, ConnectionError, Create, Destroy, ForeignKeyViolationError, InvalidInputSyntaxError, Model, NotNullViolationError, OperatorMismatchError, PseudoDestroy, Query, Save, Scene, Submodel, UniqueViolationError, Where, index$1 as actions, afterCreate, afterCreateMany, afterDelete, afterUpdate, beforeCreate, beforeCreateMany, beforeDelete, beforeUpdate, bindHooks, coefficient, column, completelyDestroy, count, create, creating, decrement, defaultValue, field as define, _delete as delete, deleteReturn, deleted, deleting, destroy, destroyMany, divide, field$1 as field, find, first, getPrimaryFields, getPrimaryKeys, hooks, immutable, increment, index, insert, isDevelopment, isPseudo, mergeHooks, model, multiply, now, primary, prop, pseudo, pseudoDestroy, save, search, select, setDevelopment, sort, model as submodel, toBool, toNot, toPrimaries, toPrimary, uncreatable, undeleted, update, updateList, updateListReturn, updateReturn, updating, upsert, uuid, values, where, withDeleted };
7223
+ export { index$1 as Action, Build, CheckViolationError, Connection, ConnectionError, Create, Destroy, ForeignKeyViolationError, InvalidInputSyntaxError, Model, NotNullViolationError, OperatorMismatchError, PseudoDestroy, Query, Save, Scene, Submodel, Subquery, UniqueViolationError, Where, index$1 as actions, afterCreate, afterCreateMany, afterDelete, afterUpdate, beforeCreate, beforeCreateMany, beforeDelete, beforeUpdate, bindHooks, coefficient, column, completelyDestroy, count, create, creating, decrement, defaultValue, field as define, _delete as delete, deleteReturn, deleted, deleting, destroy, destroyMany, divide, field$1 as field, find, first, get, getPrimaryFields, getPrimaryKeys, hooks, immutable, increment, index, insert, isDevelopment, isPseudo, mergeHooks, model, multiply, now, primary, prop, pseudo, pseudoDestroy, save, search, select, setDevelopment, sort, model as submodel, toBool, toNot, toPrimaries, toPrimary, uncreatable, undeleted, update, updateList, updateListReturn, updateReturn, updating, upsert, uuid, values, where, withDeleted };
package/migrate.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * imodel v0.20.1
2
+ * imodel v0.20.2
3
3
  * (c) 2019-2026 猛火Fierflame
4
4
  * @license MIT
5
5
  */
package/migrate.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * imodel v0.20.1
2
+ * imodel v0.20.2
3
3
  * (c) 2019-2026 猛火Fierflame
4
4
  * @license MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imodel",
3
- "version": "0.20.1",
3
+ "version": "0.20.2",
4
4
  "main": "index.mjs",
5
5
  "type": "module",
6
6
  "author": "猛火Fierflame",