main.d.ts 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711
  1. // Generated by dts-bundle-generator v8.0.1
  2. import { Constructor, Service, ServiceContainer } from '@e22m4u/service';
  3. import { Errorf } from '@e22m4u/util-format';
  4. /**
  5. * Free-form object with open properties.
  6. */
  7. export declare type AnyObject = {
  8. [property: string]: unknown;
  9. };
  10. /**
  11. * Makes specific field as optional.
  12. */
  13. export declare type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
  14. /**
  15. * Model data.
  16. */
  17. export declare type ModelData = {
  18. [property: string]: unknown;
  19. };
  20. /**
  21. * Model id.
  22. */
  23. export declare type ModelId = unknown;
  24. /**
  25. * Flatten.
  26. */
  27. export type Identity<T> = T;
  28. export declare type Flatten<T> = Identity<{
  29. [k in keyof T]: T[k];
  30. }>;
  31. /**
  32. * Is ctor.
  33. *
  34. * @param {*} value
  35. * @returns {boolean}
  36. */
  37. export declare function isCtor(value: unknown): boolean;
  38. /**
  39. * Capitalize.
  40. *
  41. * @param string
  42. */
  43. export declare function capitalize(string: string): string;
  44. /**
  45. * Clone deep.
  46. *
  47. * @param value
  48. */
  49. export declare function cloneDeep<T>(value: T): T;
  50. /**
  51. * Singularize.
  52. *
  53. * @param noun
  54. */
  55. export declare function singularize(noun: string): string;
  56. /**
  57. * Get ctor name.
  58. *
  59. * @param value
  60. */
  61. export declare function getCtorName(value: unknown): string | undefined;
  62. /**
  63. * Is pure object.
  64. *
  65. * @param value
  66. */
  67. export declare function isPureObject(value: unknown): boolean;
  68. /**
  69. * String to regexp.
  70. *
  71. * @param pattern
  72. * @param flags
  73. */
  74. export declare function stringToRegexp(pattern: string | RegExp, flags?: string): RegExp;
  75. /**
  76. * Get value by path.
  77. *
  78. * @param obj
  79. * @param path
  80. * @param orElse
  81. */
  82. export declare function getValueByPath(obj: object, path: string, orElse?: unknown): unknown;
  83. /**
  84. * Select object keys.
  85. *
  86. * @param obj
  87. * @param keys
  88. */
  89. export declare function selectObjectKeys<T extends object>(obj: T, keys: string[]): Partial<T>;
  90. /**
  91. * Exclude object keys.
  92. *
  93. * @param obj
  94. * @param keys
  95. */
  96. export declare function excludeObjectKeys<T extends object>(obj: T, keys: string | string[]): Partial<T>;
  97. /**
  98. * Filter.
  99. */
  100. export declare type Filter = {
  101. where?: WhereClause;
  102. order?: OrderClause;
  103. limit?: number;
  104. skip?: number;
  105. fields?: FieldsClause;
  106. include?: IncludeClause;
  107. };
  108. /**
  109. * Item filter.
  110. */
  111. export declare type ItemFilter = Pick<Filter, "fields" | "include">;
  112. /**
  113. * Where clause.
  114. *
  115. * @example
  116. * ```ts
  117. * value => value.featured === true
  118. * {foo: 'bar'}
  119. * {foo: {eq: 'bar'}}
  120. * {foo: {neq: 'bar'}}
  121. * {foo: {gt: 5}}
  122. * {foo: {lt: 10}}
  123. * {foo: {gte: 5}}
  124. * {foo: {lte: 10}}
  125. * {foo: {inq: ['bar', 'baz']}}
  126. * {foo: {nin: ['bar', 'baz']}}
  127. * {foo: {between: [5, 10]}}
  128. * {foo: {exists: true}}
  129. * {foo: {like: 'bar'}}
  130. * {foo: {ilike: 'BaR'}}
  131. * {foo: {nlike: 'bar'}}
  132. * {foo: {nilike: 'BaR'}}
  133. * {foo: {regexp: 'ba.+'}}
  134. * {foo: {regexp: 'ba.+', flags: 'i'}}
  135. * {and: [...]}
  136. * {or: [...]}
  137. * ```
  138. */
  139. export declare type WhereClause = FunctionClause | PropertiesClause | AndClause | OrClause;
  140. /**
  141. * Function clause.
  142. *
  143. * @example
  144. * ```ts
  145. * (value) => value.featured === true;
  146. * ```
  147. */
  148. export type FunctionClause = (value: ModelData) => boolean;
  149. /**
  150. * Properties clause.
  151. *
  152. * @example
  153. * ```ts
  154. * {
  155. * name: {inq: ['John', 'Mary']},
  156. * status: 'ACTIVE',
  157. * age: {gte: 40}
  158. * }
  159. * ```
  160. */
  161. export type PropertiesClause = {
  162. [property: string]: OperatorClause | string | number | boolean | RegExp | null | undefined;
  163. };
  164. /**
  165. * Operator clause.
  166. *
  167. * @example
  168. * ```ts
  169. * {eq: 'bar'}
  170. * {neq: 'bar'}
  171. * {gt: 5}
  172. * {lt: 10}
  173. * {gte: 5}
  174. * {lte: 10}
  175. * {inq: ['bar', 'baz']}
  176. * {nin: ['bar', 'baz']}
  177. * {between: [5, 10]}
  178. * {exists: true}
  179. * {like: 'bar'}
  180. * {ilike: 'BaR'}
  181. * {nlike: 'bar'}
  182. * {nilike: 'BaR'}
  183. * {regexp: 'ba.+'}
  184. * {regexp: 'ba.+', flags: 'i'}
  185. * ```
  186. */
  187. export declare type OperatorClause = {
  188. eq?: unknown;
  189. neq?: unknown;
  190. gt?: string | number;
  191. gte?: string | number;
  192. lt?: string | number;
  193. lte?: string | number;
  194. inq?: unknown[];
  195. nin?: unknown[];
  196. between?: readonly [
  197. string | number,
  198. string | number
  199. ];
  200. exists?: boolean;
  201. like?: string | RegExp;
  202. nlike?: string | RegExp;
  203. ilike?: string | RegExp;
  204. nilike?: string | RegExp;
  205. regexp?: string | RegExp;
  206. flags?: string;
  207. };
  208. /**
  209. * And clause.
  210. *
  211. * @example
  212. * ```ts
  213. * {
  214. * and: [...],
  215. * }
  216. * ```
  217. */
  218. export interface AndClause {
  219. and: WhereClause[];
  220. }
  221. /**
  222. * Or clause.
  223. *
  224. * @example
  225. * ```ts
  226. * {
  227. * or: [...],
  228. * }
  229. * ```
  230. */
  231. export interface OrClause {
  232. or: WhereClause[];
  233. }
  234. /**
  235. * Order clause.
  236. *
  237. * @example
  238. * ```ts
  239. * 'prop'
  240. * 'prop ASC'
  241. * 'prop DESC';
  242. * ['prop1', 'prop2'];
  243. * ['prop1 ASC', 'prop2 DESC'];
  244. * ```
  245. */
  246. export type OrderClause = string | string[];
  247. /**
  248. * Fields.
  249. *
  250. * @example
  251. * ```ts
  252. * 'prop'
  253. * ['prop1', 'prop2']
  254. * ```
  255. */
  256. export type FieldsClause = string | NormalizedFieldsClause;
  257. /**
  258. * Normalized fields clause.
  259. *
  260. * @example
  261. * ```ts
  262. * [
  263. * 'prop1',
  264. * 'prop2',
  265. * ]
  266. * ```
  267. */
  268. export type NormalizedFieldsClause = string[];
  269. /**
  270. * Include clause.
  271. *
  272. * @example
  273. * ```ts
  274. * 'customers'
  275. * ```
  276. *
  277. * @example
  278. * ```ts
  279. * [
  280. * 'customers',
  281. * 'orders',
  282. * ]
  283. * ```
  284. *
  285. * @example
  286. * ```ts
  287. * {
  288. * customer: 'orders'
  289. * }
  290. * ```
  291. *
  292. * @example
  293. * ```ts
  294. * {
  295. * customer: {
  296. * address: 'city',
  297. * },
  298. * }
  299. * ```
  300. *
  301. * @example
  302. * ```ts
  303. * {
  304. * customer: [
  305. * 'orders',
  306. * {address: 'city'},
  307. * ],
  308. * }
  309. * ```
  310. *
  311. * @example
  312. * ```ts
  313. * {
  314. * relation: 'customer',
  315. * scope: {
  316. * where: {removed: false},
  317. * order: 'createdAt DESC',
  318. * skip: 0,
  319. * limit: 16,
  320. * fields: ['id', 'name', 'removed'],
  321. * include: 'address',
  322. * }
  323. * }
  324. * ```
  325. */
  326. export declare type IncludeClause = string | string[] | NestedIncludeClause | NestedIncludeClause[] | NormalizedIncludeClause | NormalizedIncludeClause[];
  327. /**
  328. * Nested include clause.
  329. *
  330. * @example
  331. * ```ts
  332. * {
  333. * customer: 'orders'
  334. * }
  335. * ```
  336. *
  337. * @example
  338. * ```ts
  339. * {
  340. * customer: {
  341. * address: 'city',
  342. * },
  343. * }
  344. * ```
  345. *
  346. * @example
  347. * ```ts
  348. * {
  349. * customer: [
  350. * 'orders',
  351. * {address: 'city'},
  352. * ],
  353. * }
  354. * ```
  355. *
  356. * @example
  357. * ```ts
  358. * {
  359. * relation: 'customer',
  360. * scope: {
  361. * where: {removed: false},
  362. * order: 'createdAt DESC',
  363. * skip: 0,
  364. * limit: 16,
  365. * fields: ['id', 'name', 'removed'],
  366. * include: 'address',
  367. * }
  368. * }
  369. * ```
  370. */
  371. export declare type NestedIncludeClause = {
  372. [property: string]: IncludeClause;
  373. };
  374. /**
  375. * Inclusion.
  376. *
  377. * @example
  378. * ```ts
  379. * {
  380. * relation: 'customer',
  381. * }
  382. * ```
  383. *
  384. * @example
  385. * ```ts
  386. * {
  387. * relation: 'customer',
  388. * scope: {
  389. * where: {removed: false},
  390. * order: 'createdAt DESC',
  391. * skip: 0,
  392. * limit: 16,
  393. * fields: ['id', 'name', 'removed'],
  394. * include: 'address',
  395. * }
  396. * }
  397. * ```
  398. */
  399. export declare type NormalizedIncludeClause = {
  400. relation: string;
  401. scope?: Filter;
  402. };
  403. /**
  404. * Slice clause tool.
  405. */
  406. export declare class SliceClauseTool extends Service {
  407. /**
  408. * Slice.
  409. *
  410. * @param entities
  411. * @param skip
  412. * @param limit
  413. */
  414. slice(entities: ModelData[], skip?: number, limit?: number): ModelData[];
  415. /**
  416. * Validate skip clause.
  417. *
  418. * @param skip
  419. */
  420. static validateSkipClause(skip: number | undefined): void;
  421. /**
  422. * Validate limit clause.
  423. *
  424. * @param limit
  425. */
  426. static validateLimitClause(limit: number | undefined): void;
  427. }
  428. /**
  429. * Order clause tool.
  430. */
  431. export declare class OrderClauseTool extends Service {
  432. /**
  433. * Sort.
  434. *
  435. * @param entities
  436. * @param clause
  437. */
  438. sort(entities: ModelData[], clause: OrderClause | undefined): void;
  439. /**
  440. * Validate order clause.
  441. *
  442. * @param clause
  443. */
  444. static validateOrderClause(clause: OrderClause | undefined): void;
  445. /**
  446. * Normalize order clause.
  447. *
  448. * @param clause
  449. */
  450. static normalizeOrderClause(clause: OrderClause | undefined): string[] | undefined;
  451. }
  452. /**
  453. * Where clause tool.
  454. */
  455. export declare class WhereClauseTool extends Service {
  456. /**
  457. * Filter.
  458. *
  459. * @param entities
  460. * @param where
  461. */
  462. filter(entities: ModelData[], where: WhereClause | undefined): ModelData[];
  463. /**
  464. * Validate where clause.
  465. *
  466. * @param clause
  467. */
  468. static validateWhereClause(clause: WhereClause | undefined): void;
  469. }
  470. /**
  471. * Field clause tool.
  472. */
  473. export declare class FieldsClauseTool extends Service {
  474. /**
  475. * Filter.
  476. *
  477. * @param entities
  478. * @param modelName
  479. * @param clause
  480. */
  481. filter<T extends ModelData | ModelData[]>(entities: T, modelName: string, clause: FieldsClause | undefined): T;
  482. /**
  483. * Validate fields clause.
  484. *
  485. * @param clause
  486. */
  487. static validateFieldsClause(clause: FieldsClause | undefined): void;
  488. /**
  489. * Normalize fields clause.
  490. *
  491. * @param clause
  492. */
  493. static normalizeFieldsClause(clause: FieldsClause | undefined): NormalizedFieldsClause | undefined;
  494. }
  495. /**
  496. * Include clause tool.
  497. */
  498. export declare class IncludeClauseTool extends Service {
  499. /**
  500. * Include to.
  501. *
  502. * @param entities
  503. * @param modelName
  504. * @param clause
  505. */
  506. includeTo(entities: ModelData[], modelName: string, clause: IncludeClause | undefined): Promise<void>;
  507. /**
  508. * Validate include clause.
  509. *
  510. * @param clause
  511. */
  512. static validateIncludeClause(clause: IncludeClause | undefined): void;
  513. /**
  514. * Validate scope clause.
  515. *
  516. * @param clause
  517. */
  518. static validateScopeClause(clause: Filter | undefined): void;
  519. /**
  520. * Normalize include clause.
  521. *
  522. * @param clause
  523. */
  524. static normalizeIncludeClause(clause: IncludeClause | undefined): NormalizedIncludeClause[];
  525. /**
  526. * Normalize scope clause.
  527. *
  528. * @param clause
  529. */
  530. static normalizeScopeClause(clause: Filter | undefined): Filter | undefined;
  531. }
  532. /**
  533. * Operator clause tool.
  534. */
  535. export declare class OperatorClauseTool extends Service {
  536. /**
  537. * Compare.
  538. *
  539. * @param val1
  540. * @param val2
  541. */
  542. compare(val1: unknown, val2: unknown): number;
  543. /**
  544. * Test all operators.
  545. *
  546. * @param clause
  547. * @param value
  548. */
  549. testAll(clause: object, value: unknown): boolean | undefined;
  550. /**
  551. * Test eq/neq operator.
  552. *
  553. * @example
  554. * ```ts
  555. * {
  556. * eq: 'foo',
  557. * }
  558. * ```
  559. *
  560. * @example
  561. * ```ts
  562. * {
  563. * neq: 'foo',
  564. * }
  565. * ```
  566. *
  567. * @param clause
  568. * @param value
  569. */
  570. testEqNeq(clause: object, value: unknown): boolean | undefined;
  571. /**
  572. * Test lt/gt/lte/gte operator.
  573. *
  574. * @example
  575. * ```ts
  576. * {
  577. * lt: 10,
  578. * }
  579. * ```
  580. *
  581. * @example
  582. * ```ts
  583. * {
  584. * lte: 10,
  585. * }
  586. * ```
  587. *
  588. * @example
  589. * ```ts
  590. * {
  591. * gt: 10,
  592. * }
  593. * ```
  594. *
  595. * @example
  596. * ```ts
  597. * {
  598. * gte: 10,
  599. * }
  600. * ```
  601. *
  602. * @param clause
  603. * @param value
  604. */
  605. testGtLt(clause: object, value: unknown): boolean | undefined;
  606. /**
  607. * Test inc operator.
  608. *
  609. * @example
  610. * ```ts
  611. * {
  612. * inc: ['foo', 'bar'],
  613. * }
  614. * ```
  615. *
  616. * @param clause
  617. * @param value
  618. */
  619. testInq(clause: object, value: unknown): boolean | undefined;
  620. /**
  621. * Test nin operator.
  622. *
  623. * @example
  624. * ```ts
  625. * {
  626. * nin: ['foo', 'bar'],
  627. * }
  628. * ```
  629. *
  630. * @param clause
  631. * @param value
  632. */
  633. testNin(clause: object, value: unknown): boolean | undefined;
  634. /**
  635. * Test between operator.
  636. *
  637. * @example
  638. * ```ts
  639. * {
  640. * between: [10, 20],
  641. * }
  642. * ```
  643. *
  644. * @param clause
  645. * @param value
  646. */
  647. testBetween(clause: object, value: unknown): boolean | undefined;
  648. /**
  649. * Test exists operator.
  650. *
  651. * @example
  652. * ```ts
  653. * {
  654. * exists: true,
  655. * }
  656. * ```
  657. *
  658. * @param clause
  659. * @param value
  660. */
  661. testExists(clause: object, value: unknown): boolean | undefined;
  662. /**
  663. * Test like operator.
  664. *
  665. * @example
  666. * ```ts
  667. * {
  668. * like: 'foo',
  669. * }
  670. * ```
  671. *
  672. * @param clause
  673. * @param value
  674. */
  675. testLike(clause: object, value: unknown): boolean | undefined;
  676. /**
  677. * Test nlike operator.
  678. *
  679. * @example
  680. * ```ts
  681. * {
  682. * nlike: 'foo',
  683. * }
  684. * ```
  685. *
  686. * @param clause
  687. * @param value
  688. */
  689. testNlike(clause: object, value: unknown): boolean | undefined;
  690. /**
  691. * Test ilike operator.
  692. *
  693. * @example
  694. * ```ts
  695. * {
  696. * ilike: 'foo',
  697. * }
  698. * ```
  699. *
  700. * @param clause
  701. * @param value
  702. */
  703. testIlike(clause: object, value: unknown): boolean | undefined;
  704. /**
  705. * Test nilike operator.
  706. *
  707. * @example
  708. * ```ts
  709. * {
  710. * nilike: 'foo',
  711. * }
  712. * ```
  713. *
  714. * @param clause
  715. * @param value
  716. */
  717. testNilike(clause: object, value: unknown): boolean | undefined;
  718. /**
  719. * Test regexp.
  720. *
  721. * @example
  722. * ```ts
  723. * {
  724. * regexp: 'foo.*',
  725. * }
  726. * ```
  727. *
  728. * @example
  729. * ```ts
  730. * {
  731. * regexp: 'foo.*',
  732. * flags: 'i',
  733. * }
  734. * ```
  735. *
  736. * @param clause
  737. * @param value
  738. */
  739. testRegexp(clause: object, value: unknown): boolean | undefined;
  740. }
  741. /**
  742. * Adapter.
  743. */
  744. export declare class Adapter extends Service {
  745. /**
  746. * Settings.
  747. */
  748. get settings(): AnyObject | undefined;
  749. /**
  750. * Constructor.
  751. *
  752. * @param container
  753. * @param settings
  754. */
  755. constructor(container?: ServiceContainer, settings?: AnyObject);
  756. /**
  757. * Create.
  758. *
  759. * @param modelName
  760. * @param modelData
  761. * @param filter
  762. */
  763. create(modelName: string, modelData: ModelData, filter?: ItemFilter): Promise<ModelData>;
  764. /**
  765. * Replace by id.
  766. *
  767. * @param modelName
  768. * @param id
  769. * @param modelData
  770. * @param filter
  771. */
  772. replaceById(modelName: string, id: ModelId, modelData: ModelData, filter?: ItemFilter): Promise<ModelData>;
  773. /**
  774. * Patch by id.
  775. *
  776. * @param modelName
  777. * @param id
  778. * @param modelData
  779. * @param filter
  780. */
  781. patchById(modelName: string, id: ModelId, modelData: ModelData, filter?: ItemFilter): Promise<ModelData>;
  782. /**
  783. * Find.
  784. *
  785. * @param modelName
  786. * @param filter
  787. */
  788. find(modelName: string, filter?: Filter): Promise<ModelData[]>;
  789. /**
  790. * Find by id.
  791. *
  792. * @param modelName
  793. * @param id
  794. * @param filter
  795. */
  796. findById(modelName: string, id: ModelId, filter?: Filter): Promise<ModelData>;
  797. /**
  798. * Delete.
  799. *
  800. * @param modelName
  801. * @param where
  802. */
  803. delete(modelName: string, where?: WhereClause): Promise<number>;
  804. /**
  805. * Delete by id.
  806. *
  807. * @param modelName
  808. * @param id
  809. */
  810. deleteById(modelName: string, id: ModelId): Promise<boolean>;
  811. /**
  812. * Exists.
  813. *
  814. * @param modelName
  815. * @param id
  816. */
  817. exists(modelName: string, id: ModelId): Promise<boolean>;
  818. /**
  819. * Count.
  820. *
  821. * @param modelName
  822. * @param where
  823. */
  824. count(modelName: string, where?: WhereClause): Promise<number>;
  825. }
  826. /**
  827. * Adapter loader.
  828. */
  829. export declare class AdapterLoader extends Service {
  830. /**
  831. * Load by name.
  832. *
  833. * @param adapterName
  834. * @param settings
  835. */
  836. loadByName(adapterName: string, settings?: AnyObject): Promise<Adapter>;
  837. }
  838. /**
  839. * Adapter registry.
  840. */
  841. export declare class AdapterRegistry extends Service {
  842. /**
  843. * Get adapter.
  844. *
  845. * @param datasourceName
  846. */
  847. getAdapter(datasourceName: string): Promise<Adapter>;
  848. }
  849. /**
  850. * Relation type.
  851. */
  852. export declare enum RelationType {
  853. BELONGS_TO = "belongsTo",
  854. HAS_ONE = "hasOne",
  855. HAS_MANY = "hasMany",
  856. REFERENCES_MANY = "referencesMany"
  857. }
  858. /**
  859. * Relation definition.
  860. *
  861. * @example Available options.
  862. * ```ts
  863. * {
  864. * type: RelationType;
  865. * model?: string;
  866. * foreignKey?: string;
  867. * polymorphic?: boolean | string;
  868. * discriminator?: string;
  869. * }
  870. * ```
  871. */
  872. export declare type RelationDefinition =
  873. // belongsTo
  874. BelongsToDefinition | PolyBelongsToDefinition
  875. // hasOne
  876. | HasOneDefinition | PolyHasOneDefinitionWithTargetRelationName | PolyHasOneDefinitionWithTargetKeys
  877. // hasMany
  878. | HasManyDefinition | PolyHasManyDefinitionWithTargetRelationName | PolyHasManyDefinitionWithTargetKeys
  879. // referencesMany
  880. | ReferencesManyDefinition;
  881. /**
  882. * The regular "belongsTo" relation.
  883. *
  884. * @example Required options only.
  885. * ```
  886. * {
  887. * type: RelationType.BELONGS_TO,
  888. * model: 'model',
  889. * }
  890. * ```
  891. *
  892. * @example Verbose definition.
  893. * ```
  894. * {
  895. * type: RelationType.BELONGS_TO,
  896. * model: 'model',
  897. * foreignKey: 'modelId',
  898. * }
  899. * ```
  900. */
  901. export declare type BelongsToDefinition = {
  902. type: RelationType.BELONGS_TO;
  903. polymorphic?: false;
  904. model: string;
  905. foreignKey?: string;
  906. };
  907. /**
  908. * The polymorphic "belongsTo" relation.
  909. *
  910. * @example Required fields only.
  911. * ```
  912. * {
  913. * type: RelationType.BELONGS_TO,
  914. * polymorphic: true,
  915. * }
  916. * ```
  917. *
  918. * @example Verbose definition.
  919. * ```
  920. * {
  921. * type: RelationType.BELONGS_TO,
  922. * polymorphic: true,
  923. * foreignKey: 'referenceId',
  924. * discriminator: 'referenceType,
  925. * }
  926. * ```
  927. */
  928. export declare type PolyBelongsToDefinition = {
  929. type: RelationType.BELONGS_TO;
  930. polymorphic: true;
  931. foreignKey?: string;
  932. discriminator?: string;
  933. };
  934. /**
  935. * The regular "hasOne" relation.
  936. *
  937. * @example
  938. * ```ts
  939. * {
  940. * type: RelationType.HAS_ONE,
  941. * model: 'model',
  942. * foreignKey: 'modelId',
  943. * }
  944. * ```
  945. */
  946. export declare type HasOneDefinition = {
  947. type: RelationType.HAS_ONE;
  948. model: string;
  949. polymorphic?: false;
  950. foreignKey?: string;
  951. discriminator?: undefined;
  952. };
  953. /**
  954. * The polymorphic "hasOne" relation with a target relation name.
  955. *
  956. * @example
  957. * ```ts
  958. * {
  959. * type: RelationType.HAS_ONE,
  960. * model: 'model',
  961. * polymorphic: 'reference',
  962. * }
  963. * ```
  964. */
  965. export declare type PolyHasOneDefinitionWithTargetRelationName = {
  966. type: RelationType.HAS_ONE;
  967. model: string;
  968. polymorphic: string;
  969. foreignKey?: undefined;
  970. discriminator?: undefined;
  971. };
  972. /**
  973. * The polymorphic "hasOne" relation with target relation keys.
  974. *
  975. * @example Required options only.
  976. * ```
  977. * {
  978. * type: RelationType.HAS_ONE,
  979. * model: 'model',
  980. * polymorphic: true,
  981. * }
  982. * ```
  983. *
  984. * @example Verbose definition.
  985. * ```
  986. * {
  987. * type: RelationType.HAS_ONE,
  988. * model: 'model',
  989. * polymorphic: true,
  990. * foreignKey: 'referenceId',
  991. * discriminator: 'referenceType,
  992. * }
  993. * ```
  994. */
  995. export declare type PolyHasOneDefinitionWithTargetKeys = {
  996. type: RelationType.HAS_ONE;
  997. model: string;
  998. polymorphic: true;
  999. foreignKey?: string;
  1000. discriminator?: string;
  1001. };
  1002. /**
  1003. * The regular "hasMany" relation.
  1004. *
  1005. * @example
  1006. * ```ts
  1007. * {
  1008. * type: RelationType.HAS_MANY,
  1009. * model: 'model',
  1010. * foreignKey: 'modelId',
  1011. * }
  1012. * ```
  1013. */
  1014. export declare type HasManyDefinition = {
  1015. type: RelationType.HAS_MANY;
  1016. model: string;
  1017. polymorphic?: false;
  1018. foreignKey?: string;
  1019. discriminator?: undefined;
  1020. };
  1021. /**
  1022. * The polymorphic "hasMany" relation with a target relation name.
  1023. *
  1024. * @example
  1025. * ```ts
  1026. * {
  1027. * type: RelationType.HAS_MANY,
  1028. * model: 'model',
  1029. * polymorphic: 'reference',
  1030. * }
  1031. * ```
  1032. */
  1033. export declare type PolyHasManyDefinitionWithTargetRelationName = {
  1034. type: RelationType.HAS_MANY;
  1035. model: string;
  1036. polymorphic: string;
  1037. foreignKey?: undefined;
  1038. discriminator?: undefined;
  1039. };
  1040. /**
  1041. * The polymorphic "hasMany" relation with target relation keys.
  1042. *
  1043. * @example Required options only.
  1044. * ```
  1045. * {
  1046. * type: RelationType.HAS_MANY,
  1047. * model: 'model',
  1048. * polymorphic: true,
  1049. * }
  1050. * ```
  1051. *
  1052. * @example Verbose definition.
  1053. * ```
  1054. * {
  1055. * type: RelationType.HAS_MANY,
  1056. * model: 'model',
  1057. * polymorphic: true,
  1058. * foreignKey: 'referenceId',
  1059. * discriminator: 'referenceType,
  1060. * }
  1061. * ```
  1062. */
  1063. export declare type PolyHasManyDefinitionWithTargetKeys = {
  1064. type: RelationType.HAS_MANY;
  1065. model: string;
  1066. polymorphic: true;
  1067. foreignKey?: string;
  1068. discriminator?: string;
  1069. };
  1070. /**
  1071. * The regular "referencesMany" relation.
  1072. *
  1073. * @example Required options only.
  1074. * ```
  1075. * {
  1076. * type: RelationType.REFERENCES_MANY,
  1077. * model: 'model',
  1078. * }
  1079. * ```
  1080. *
  1081. * @example Verbose definition.
  1082. * ```
  1083. * {
  1084. * type: RelationType.REFERENCES_MANY,
  1085. * model: 'model',
  1086. * foreignKey: 'modelIds',
  1087. * }
  1088. * ```
  1089. */
  1090. export declare type ReferencesManyDefinition = {
  1091. type: RelationType.REFERENCES_MANY;
  1092. model: string;
  1093. foreignKey?: string;
  1094. discriminator?: undefined;
  1095. };
  1096. /**
  1097. * Data type.
  1098. */
  1099. export declare enum DataType {
  1100. ANY = "any",
  1101. STRING = "string",
  1102. NUMBER = "number",
  1103. BOOLEAN = "boolean",
  1104. ARRAY = "array",
  1105. OBJECT = "object"
  1106. }
  1107. /**
  1108. * Full property definition.
  1109. */
  1110. export declare type FullPropertyDefinition = {
  1111. type: DataType;
  1112. itemType?: DataType;
  1113. model?: string;
  1114. primaryKey?: boolean;
  1115. columnName?: string;
  1116. columnType?: string;
  1117. required?: boolean;
  1118. default?: unknown;
  1119. };
  1120. /**
  1121. * Property definition.
  1122. */
  1123. export declare type PropertyDefinition = DataType | FullPropertyDefinition;
  1124. /**
  1125. * Properties definition validator.
  1126. */
  1127. export declare class PropertiesDefinitionValidator extends Service {
  1128. /**
  1129. * Validate.
  1130. *
  1131. * @param modelName
  1132. * @param propDefs
  1133. */
  1134. validate(modelName: string, propDefs: PropertyDefinitionMap): void;
  1135. }
  1136. /**
  1137. * Primary keys definition validator.
  1138. */
  1139. export declare class PrimaryKeysDefinitionValidator extends Service {
  1140. /**
  1141. * Validate.
  1142. *
  1143. * @param modelName
  1144. * @param propDefs
  1145. */
  1146. validate(modelName: string, propDefs: PropertyDefinitionMap): void;
  1147. }
  1148. /**
  1149. * Default values definition validator.
  1150. */
  1151. export declare class DefaultValuesDefinitionValidator extends Service {
  1152. /**
  1153. * Validate.
  1154. *
  1155. * @param modelName
  1156. * @param propDefs
  1157. */
  1158. validate(modelName: string, propDefs: PropertyDefinitionMap): void;
  1159. }
  1160. /**
  1161. * Property definition map.
  1162. */
  1163. export declare type PropertyDefinitionMap = {
  1164. [name: string]: PropertyDefinition;
  1165. };
  1166. /**
  1167. * Relation definition map.
  1168. */
  1169. export declare type RelationDefinitionMap = {
  1170. [name: string]: RelationDefinition;
  1171. };
  1172. /**
  1173. * Model definition.
  1174. */
  1175. export declare type ModelDefinition = {
  1176. name: string;
  1177. datasource?: string;
  1178. base?: string;
  1179. tableName?: string;
  1180. properties?: PropertyDefinitionMap;
  1181. relations?: RelationDefinitionMap;
  1182. };
  1183. /**
  1184. * Relations definition validator.
  1185. */
  1186. export declare class RelationsDefinitionValidator extends Service {
  1187. /**
  1188. * Validate.
  1189. *
  1190. * @param modelName
  1191. * @param relDefs
  1192. */
  1193. validate(modelName: string, relDefs: RelationDefinitionMap): void;
  1194. }
  1195. /**
  1196. * Model data validator.
  1197. */
  1198. export declare class ModelDataValidator extends Service {
  1199. /**
  1200. * Validate.
  1201. *
  1202. * @param modelName
  1203. * @param modelData
  1204. * @param isPartial
  1205. */
  1206. validate(modelName: string, modelData: ModelData, isPartial?: boolean): void;
  1207. /**
  1208. * Validate property value.
  1209. *
  1210. * @param modelName
  1211. * @param propName
  1212. * @param propDef
  1213. * @param propValue
  1214. */
  1215. validatePropertyValue(modelName: string, propName: string, propDef: PropertyDefinition, propValue: unknown): void;
  1216. }
  1217. /**
  1218. * Model data sanitizer.
  1219. */
  1220. export declare class ModelDataSanitizer extends Service {
  1221. /**
  1222. * Sanitize.
  1223. *
  1224. * @param modelName
  1225. * @param modelData
  1226. */
  1227. sanitize(modelName: string, modelData: ModelData): ModelData;
  1228. }
  1229. /**
  1230. * Default primary key property name.
  1231. */
  1232. export type DEFAULT_PRIMARY_KEY_PROPERTY_NAME = "id";
  1233. /**
  1234. * Model definition utils.
  1235. */
  1236. export declare class ModelDefinitionUtils extends Service {
  1237. /**
  1238. * Get primary key as property name.
  1239. *
  1240. * @param modelName
  1241. */
  1242. getPrimaryKeyAsPropertyName(modelName: string): string;
  1243. /**
  1244. * Get primary key as column name.
  1245. *
  1246. * @param modelName
  1247. */
  1248. getPrimaryKeyAsColumnName(modelName: string): string;
  1249. /**
  1250. * Get table name by model name.
  1251. *
  1252. * @param modelName
  1253. */
  1254. getTableNameByModelName(modelName: string): string;
  1255. /**
  1256. * Get column name by property name.
  1257. *
  1258. * @param modelName
  1259. * @param propertyName
  1260. */
  1261. getColumnNameByPropertyName(modelName: string, propertyName: string): string;
  1262. /**
  1263. * Get default property value.
  1264. *
  1265. * @param modelName
  1266. * @param propertyName
  1267. */
  1268. getDefaultPropertyValue(modelName: string, propertyName: string): unknown;
  1269. /**
  1270. * Set default values to empty properties.
  1271. *
  1272. * @param modelName
  1273. * @param modelData
  1274. * @param onlyProvidedProperties
  1275. */
  1276. setDefaultValuesToEmptyProperties<T extends ModelData>(modelName: string, modelData: T, onlyProvidedProperties?: boolean): T;
  1277. /**
  1278. * Convert property names to column names.
  1279. *
  1280. * @param modelName
  1281. * @param modelData
  1282. */
  1283. convertPropertyNamesToColumnNames(modelName: string, modelData: ModelData): ModelData;
  1284. /**
  1285. * Convert column names to property names.
  1286. *
  1287. * @param modelName
  1288. * @param tableData
  1289. */
  1290. convertColumnNamesToPropertyNames(modelName: string, tableData: ModelData): ModelData;
  1291. /**
  1292. * Get data type by property name.
  1293. *
  1294. * @param modelName
  1295. * @param propertyName
  1296. */
  1297. getDataTypeByPropertyName(modelName: string, propertyName: string): DataType;
  1298. /**
  1299. * Get own properties definition of primary keys.
  1300. *
  1301. * @param modelName
  1302. */
  1303. getOwnPropertiesDefinitionOfPrimaryKeys(modelName: string): PropertyDefinitionMap;
  1304. /**
  1305. * Get own properties definition without primary keys.
  1306. *
  1307. * @param modelName
  1308. */
  1309. getOwnPropertiesDefinitionWithoutPrimaryKeys(modelName: string): PropertyDefinitionMap;
  1310. /**
  1311. * Get properties definition in base model hierarchy.
  1312. *
  1313. * @param modelName
  1314. */
  1315. getPropertiesDefinitionInBaseModelHierarchy(modelName: string): PropertyDefinitionMap;
  1316. /**
  1317. * Get own relations definition.
  1318. *
  1319. * @param modelName
  1320. */
  1321. getOwnRelationsDefinition(modelName: string): RelationDefinitionMap;
  1322. /**
  1323. * Get relations definition in base model hierarchy.
  1324. *
  1325. * @param modelName
  1326. */
  1327. getRelationsDefinitionInBaseModelHierarchy(modelName: string): RelationDefinitionMap;
  1328. /**
  1329. * Get relation definition by name.
  1330. *
  1331. * @param modelName
  1332. * @param relationName
  1333. */
  1334. getRelationDefinitionByName(modelName: string, relationName: string): RelationDefinition;
  1335. /**
  1336. * Exclude object keys by relation names.
  1337. *
  1338. * @param modelName
  1339. * @param modelData
  1340. */
  1341. excludeObjectKeysByRelationNames<T extends ModelData>(modelName: string, modelData: T): Partial<T>;
  1342. }
  1343. /**
  1344. * Model definition validator.
  1345. */
  1346. export declare class ModelDefinitionValidator extends Service {
  1347. /**
  1348. * Validate.
  1349. *
  1350. * @param modelDef
  1351. */
  1352. validate(modelDef: ModelDefinition): void;
  1353. }
  1354. /**
  1355. * Datasource definition.
  1356. */
  1357. export declare type DatasourceDefinition = {
  1358. name: string;
  1359. adapter: string;
  1360. };
  1361. /**
  1362. * Datasource definition validator.
  1363. */
  1364. export declare class DatasourceDefinitionValidator extends Service {
  1365. /**
  1366. * Validate.
  1367. *
  1368. * @param datasourceDef
  1369. */
  1370. validate(datasourceDef: DatasourceDefinition): void;
  1371. }
  1372. /**
  1373. * Definition registry.
  1374. */
  1375. export declare class DefinitionRegistry extends Service {
  1376. /**
  1377. * Add datasource.
  1378. *
  1379. * @param datasourceDef
  1380. */
  1381. addDatasource(datasourceDef: DatasourceDefinition): void;
  1382. /**
  1383. * Has datasource.
  1384. *
  1385. * @param name
  1386. */
  1387. hasDatasource(name: string): boolean;
  1388. /**
  1389. * Get datasource.
  1390. *
  1391. * @param name
  1392. */
  1393. getDatasource(name: string): DatasourceDefinition;
  1394. /**
  1395. * Add model.
  1396. *
  1397. * @param modelDef
  1398. */
  1399. addModel(modelDef: ModelDefinition): void;
  1400. /**
  1401. * Has model.
  1402. *
  1403. * @param name
  1404. */
  1405. hasModel(name: string): boolean;
  1406. /**
  1407. * Get model.
  1408. *
  1409. * @param name
  1410. */
  1411. getModel(name: string): ModelDefinition;
  1412. }
  1413. /**
  1414. * Repository.
  1415. */
  1416. export declare class Repository<Data extends ModelData = ModelData, IdType extends ModelId = ModelId, IdName extends string = DEFAULT_PRIMARY_KEY_PROPERTY_NAME, FlatData extends ModelData = Flatten<Data>> extends Service {
  1417. /**
  1418. * Model name.
  1419. */
  1420. get modelName(): string;
  1421. /**
  1422. * Datasource name.
  1423. */
  1424. get datasourceName(): string;
  1425. /**
  1426. * Constructor.
  1427. *
  1428. * @param container
  1429. * @param modelName
  1430. */
  1431. constructor(container: ServiceContainer, modelName: string);
  1432. /**
  1433. * Get adapter.
  1434. */
  1435. getAdapter(): Promise<Adapter>;
  1436. /**
  1437. * Create.
  1438. *
  1439. * @param data
  1440. * @param filter
  1441. */
  1442. create(data: OptionalUnlessRequiredId<IdName, FlatData>, filter?: ItemFilter): Promise<FlatData>;
  1443. /**
  1444. * Replace by id.
  1445. *
  1446. * @param id
  1447. * @param data
  1448. * @param filter
  1449. */
  1450. replaceById(id: IdType, data: WithoutId<IdName, FlatData>, filter?: ItemFilter): Promise<FlatData>;
  1451. /**
  1452. * Replace or create.
  1453. *
  1454. * @param data
  1455. * @param filter
  1456. */
  1457. replaceOrCreate(data: OptionalUnlessRequiredId<IdName, Data>, filter?: ItemFilter): Promise<FlatData>;
  1458. /**
  1459. * Patch by id.
  1460. *
  1461. * @param id
  1462. * @param data
  1463. * @param filter
  1464. */
  1465. patchById(id: IdType, data: PartialWithoutId<IdName, Data>, filter?: ItemFilter): Promise<FlatData>;
  1466. /**
  1467. * Find.
  1468. *
  1469. * @param filter
  1470. */
  1471. find(filter?: Filter): Promise<FlatData[]>;
  1472. /**
  1473. * Find one.
  1474. *
  1475. * @param filter
  1476. */
  1477. findOne(filter?: ItemFilter): Promise<FlatData | undefined>;
  1478. /**
  1479. * Find by id.
  1480. *
  1481. * @param id
  1482. * @param filter
  1483. */
  1484. findById(id: IdType, filter?: ItemFilter): Promise<FlatData>;
  1485. /**
  1486. * Delete.
  1487. *
  1488. * @param where
  1489. */
  1490. delete(where?: WhereClause): Promise<number>;
  1491. /**
  1492. * Delete by id.
  1493. *
  1494. * @param id
  1495. */
  1496. deleteById(id: IdType): Promise<boolean>;
  1497. /**
  1498. * Exists.
  1499. *
  1500. * @param id
  1501. */
  1502. exists(id: IdType): Promise<boolean>;
  1503. /**
  1504. * Count.
  1505. *
  1506. * @param where
  1507. */
  1508. count(where?: WhereClause): Promise<number>;
  1509. }
  1510. /**
  1511. * Removes id field.
  1512. */
  1513. export type WithoutId<IdName extends string, Data extends ModelData> = Flatten<Omit<Data, IdName>>;
  1514. /**
  1515. * Makes fields as optional and remove id field.
  1516. */
  1517. export type PartialWithoutId<IdName extends string, Data extends ModelData> = Flatten<Partial<Omit<Data, IdName>>>;
  1518. /**
  1519. * Makes the required id field as optional.
  1520. */
  1521. export type OptionalUnlessRequiredId<IdName extends string, Data extends ModelData> = Flatten<Data extends {
  1522. [K in IdName]: any;
  1523. } ? PartialBy<Data, IdName> : Data>;
  1524. /**
  1525. * Repository registry.
  1526. */
  1527. export declare class RepositoryRegistry extends Service {
  1528. /**
  1529. * Set repository registry.
  1530. *
  1531. * @param ctor
  1532. */
  1533. setRepositoryCtor(ctor: Constructor<Repository<any, any, any>>): void;
  1534. /**
  1535. * Get repository.
  1536. *
  1537. * @param modelName
  1538. */
  1539. getRepository<Data extends ModelData = ModelData, IdType extends ModelId = ModelId, IdName extends string = DEFAULT_PRIMARY_KEY_PROPERTY_NAME>(modelName: string): Repository<Data, IdType, IdName>;
  1540. }
  1541. /**
  1542. * Schema.
  1543. */
  1544. export declare class Schema extends Service {
  1545. /**
  1546. * Define datasource.
  1547. *
  1548. * @param datasourceDef
  1549. */
  1550. defineDatasource(datasourceDef: DatasourceDefinition): this;
  1551. /**
  1552. * Define model.
  1553. *
  1554. * @param modelDef
  1555. */
  1556. defineModel(modelDef: ModelDefinition): this;
  1557. /**
  1558. * Get repository.
  1559. *
  1560. * @param modelName
  1561. */
  1562. getRepository<Data extends ModelData = ModelData, IdType extends ModelId = ModelId, IdName extends string = DEFAULT_PRIMARY_KEY_PROPERTY_NAME>(modelName: string): Repository<Data, IdType, IdName>;
  1563. }
  1564. /**
  1565. * Not implemented error.
  1566. */
  1567. export declare class NotImplementedError extends Errorf {
  1568. }
  1569. /**
  1570. * Invalid argument error.
  1571. */
  1572. export declare class InvalidArgumentError extends Errorf {
  1573. }
  1574. /**
  1575. * Invalid operator value error.
  1576. */
  1577. export declare class InvalidOperatorValueError extends Error {
  1578. /**
  1579. * Constructor.
  1580. *
  1581. * @param operator
  1582. * @param expects
  1583. * @param value
  1584. */
  1585. constructor(operator: string, expects: string, value: unknown);
  1586. }
  1587. /**
  1588. * Has one resolver.
  1589. */
  1590. export declare class HasOneResolver extends Service {
  1591. /**
  1592. * Include to.
  1593. *
  1594. * @param entities
  1595. * @param sourceName
  1596. * @param targetName
  1597. * @param relationName
  1598. * @param foreignKey
  1599. * @param scope
  1600. */
  1601. includeTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey: string, scope?: Filter): Promise<void>;
  1602. /**
  1603. * Include polymorphic to.
  1604. *
  1605. * @param entities
  1606. * @param sourceName
  1607. * @param targetName
  1608. * @param relationName
  1609. * @param foreignKey
  1610. * @param discriminator
  1611. * @param scope
  1612. */
  1613. includePolymorphicTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey: string, discriminator: string, scope?: Filter): Promise<void>;
  1614. /**
  1615. * Include polymorphic by relation name.
  1616. *
  1617. * @param entities
  1618. * @param sourceName
  1619. * @param targetName
  1620. * @param relationName
  1621. * @param targetRelationName
  1622. * @param scope
  1623. */
  1624. includePolymorphicByRelationName(entities: ModelData[], sourceName: string, targetName: string, relationName: string, targetRelationName: string, scope?: Filter): Promise<void>;
  1625. }
  1626. /**
  1627. * Has many resolver.
  1628. */
  1629. export declare class HasManyResolver extends Service {
  1630. /**
  1631. * Include to.
  1632. *
  1633. * @param entities
  1634. * @param sourceName
  1635. * @param targetName
  1636. * @param relationName
  1637. * @param foreignKey
  1638. * @param scope
  1639. */
  1640. includeTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey: string, scope?: Filter): Promise<void>;
  1641. /**
  1642. * Include polymorphic to.
  1643. *
  1644. * @param entities
  1645. * @param sourceName
  1646. * @param targetName
  1647. * @param relationName
  1648. * @param foreignKey
  1649. * @param discriminator
  1650. * @param scope
  1651. */
  1652. includePolymorphicTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey: string, discriminator: string, scope?: Filter): Promise<void>;
  1653. /**
  1654. * Include polymorphic by relation name.
  1655. *
  1656. * @param entities
  1657. * @param sourceName
  1658. * @param targetName
  1659. * @param relationName
  1660. * @param targetRelationName
  1661. * @param scope
  1662. */
  1663. includePolymorphicByRelationName(entities: ModelData[], sourceName: string, targetName: string, relationName: string, targetRelationName: string, scope?: Filter): Promise<void>;
  1664. }
  1665. /**
  1666. * Belongs to resolver.
  1667. */
  1668. export declare class BelongsToResolver extends Service {
  1669. /**
  1670. * Include to.
  1671. *
  1672. * @param entities
  1673. * @param sourceName
  1674. * @param targetName
  1675. * @param relationName
  1676. * @param foreignKey
  1677. * @param scope
  1678. */
  1679. includeTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey?: string, scope?: Filter): Promise<void>;
  1680. /**
  1681. * Include polymorphic to.
  1682. *
  1683. * @param entities
  1684. * @param sourceName
  1685. * @param relationName
  1686. * @param foreignKey
  1687. * @param discriminator
  1688. * @param scope
  1689. */
  1690. includePolymorphicTo(entities: ModelData[], sourceName: string, relationName: string, foreignKey?: string, discriminator?: string, scope?: Filter): Promise<void>;
  1691. }
  1692. /**
  1693. * References many resolver.
  1694. */
  1695. export declare class ReferencesManyResolver extends Service {
  1696. /**
  1697. * Include to.
  1698. *
  1699. * @param entities
  1700. * @param sourceName
  1701. * @param targetName
  1702. * @param relationName
  1703. * @param foreignKey
  1704. * @param scope
  1705. */
  1706. includeTo(entities: ModelData[], sourceName: string, targetName: string, relationName: string, foreignKey?: string, scope?: Filter): Promise<void>;
  1707. }
  1708. export {};