@rentman/rm-core 11.0.3 → 12.0.0

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.
Files changed (68) hide show
  1. package/changelog.md +21 -0
  2. package/dist/rm-core.js +1907 -1805
  3. package/dist/rm-core.min.js +1 -1
  4. package/dist/types/src/FieldLookupProxy.d.ts +4 -0
  5. package/dist/types/src/classes/ApiFormatter.d.ts +1 -4
  6. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRule.d.ts +8 -9
  7. package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldTypeBusinessLogicRule.d.ts +1 -2
  8. package/dist/types/src/classes/BusinessLogicManager/Documents/DocumentTemplateBusinessLogicRule.d.ts +1 -2
  9. package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarAanschafdatumBusinessLogicRule.d.ts +1 -2
  10. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurBetalingsconditieBusinessLogicRule.d.ts +1 -2
  11. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurDatumBusinessLogicRule.d.ts +1 -2
  12. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurNumberseriesBusinessLogicRule.d.ts +1 -2
  13. package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieNaaminternBusinessLogicRule.d.ts +1 -2
  14. package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieTwowayBusinessLogicRule.d.ts +1 -2
  15. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalTypeBusinessLogicRule.d.ts +1 -2
  16. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalVerhuurBusinessLogicRule.d.ts +1 -2
  17. package/dist/types/src/classes/BusinessLogicManager/Materiaal/SurfaceArticleSizeBusinessLogicRule.d.ts +1 -2
  18. package/dist/types/src/classes/BusinessLogicManager/OfferteContract/OfferteContractDatumBusinessLogicRule.d.ts +1 -2
  19. package/dist/types/src/classes/BusinessLogicManager/PlanningPersoneelTransport/PlanningPersoneelTransportBusinessLogicRule.d.ts +1 -2
  20. package/dist/types/src/classes/BusinessLogicManager/Project/ProjectClientNoteBusinessLogicRule.d.ts +1 -2
  21. package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieExemplaarBusinessLogicRule.d.ts +1 -2
  22. package/dist/types/src/classes/BusinessLogicManager/Rol/RolDocumentAccessBusinessLogicRule.d.ts +1 -2
  23. package/dist/types/src/classes/BusinessLogicManager/Rol/RolEditOwnDataBusinessLogicRule.d.ts +1 -2
  24. package/dist/types/src/classes/BusinessLogicManager/Rol/RolFileAccessBusinessLogicRule.d.ts +1 -2
  25. package/dist/types/src/classes/BusinessLogicManager/Rol/RolPersoneelsplannerToegangBusinessLogicRule.d.ts +1 -2
  26. package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenBewerkenBusinessLogicRule.d.ts +1 -2
  27. package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenToegangBusinessLogicRule.d.ts +1 -2
  28. package/dist/types/src/classes/CacheSyncer.d.ts +3 -2
  29. package/dist/types/src/classes/ChangesDelta.d.ts +3 -3
  30. package/dist/types/src/classes/ChangesDeltaBase.d.ts +20 -15
  31. package/dist/types/src/classes/ColumnUtil.d.ts +14 -14
  32. package/dist/types/src/classes/InternalChangesDelta.d.ts +5 -5
  33. package/dist/types/src/classes/QueryContainsLocalIdParser.d.ts +2 -2
  34. package/dist/types/src/classes/QueryMatcher.d.ts +8 -7
  35. package/dist/types/src/classes/RequestBuffer.d.ts +2 -2
  36. package/dist/types/src/classes/RequestBufferManager.d.ts +2 -2
  37. package/dist/types/src/classes/RequestColumnExpansion.d.ts +6 -8
  38. package/dist/types/src/classes/RequestColumnsOperationsCache.d.ts +46 -0
  39. package/dist/types/src/classes/TemplateCache.d.ts +2 -2
  40. package/dist/types/src/classes/cache/AbstractCache.d.ts +2 -3
  41. package/dist/types/src/classes/cache/CachedQueryHandlerBase.d.ts +18 -17
  42. package/dist/types/src/classes/cache/ItemHandlerBase.d.ts +7 -8
  43. package/dist/types/src/classes/cache/server/ServerCache.d.ts +2 -3
  44. package/dist/types/src/classes/cache/server/ServerCachedQueryHandler.d.ts +10 -9
  45. package/dist/types/src/classes/cache/server/ServerItemHandler.d.ts +3 -7
  46. package/dist/types/src/classes/cache/transaction/TransactionCache.d.ts +3 -11
  47. package/dist/types/src/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +17 -6
  48. package/dist/types/src/classes/cache/transaction/TransactionItemHandler.d.ts +5 -15
  49. package/dist/types/src/core.d.ts +2 -2
  50. package/dist/types/src/factories/CacheSyncerFactory.d.ts +5 -1
  51. package/dist/types/src/factories/QueryMatcherFactory.d.ts +4 -3
  52. package/dist/types/src/factories/RequestColumnExpansionFactory.d.ts +1 -3
  53. package/dist/types/src/factories/RequestColumnsOperationsCacheFactory.d.ts +8 -0
  54. package/dist/types/src/interfaces/AbstractCacheDependencyInterface.d.ts +3 -3
  55. package/dist/types/src/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +7 -7
  56. package/dist/types/src/interfaces/TransactionItemHandlerDependencyInterface.d.ts +3 -3
  57. package/dist/types/src/internal.d.ts +2 -2
  58. package/dist/types/src/models/CachedQueryItem.d.ts +3 -3
  59. package/dist/types/src/models/CollectionOptions.d.ts +2 -2
  60. package/dist/types/src/models/CollectionResource.d.ts +2 -2
  61. package/dist/types/src/types/ItemTypesCollection.d.ts +19 -6
  62. package/dist/types/tests/integration/helpers/helpers.d.ts +1 -0
  63. package/dist/types/tests/integration/transactions/field_lookup.test.d.ts +1 -0
  64. package/dist/types/tests/unit/query_contains_local_id_parser.test.d.ts +1 -0
  65. package/dist/types/tests/unit/query_parser_id_updater.test.d.ts +1 -0
  66. package/package.json +1 -1
  67. package/dist/types/src/classes/ColumnSubsetCache.d.ts +0 -14
  68. package/dist/types/src/factories/ColumnSubsetCacheFactory.d.ts +0 -8
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumApiType, ApiEnumItemType, ApiFields, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
2
- import { ApiRequestColumn, ApiRequestColumns, LinkTreeServiceInterface, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
2
+ import { ApiRequestColumn, ApiRequestColumnArray, ApiRequestColumns, LinkTreeServiceInterface, MutableApiRequestColumnArray, RequestColumnsTuple, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
3
3
  export declare type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
4
4
  merged: T;
5
5
  difference: U;
@@ -24,7 +24,7 @@ export declare class ColumnUtil {
24
24
  * - For {@link ApiLinkTreeType.DIRECT direct links} it will be a columnId
25
25
  * - For {@link ApiLinkTreeType.ITEMTABLE itemtable links} it will be 'itemtype' and 'item'
26
26
  */
27
- getColumnsFromLink(parentType: ApiEnumItemType, itemType: ApiEnumItemType): ApiRequestColumn[];
27
+ getColumnsFromLink<ChildItemType extends ApiEnumItemType>(parentType: ApiEnumItemType, itemType: ChildItemType): ApiRequestColumn[];
28
28
  getColumnPath(columns: ResponseColumn[], renderAs: null | string): string;
29
29
  getDateFormatOptions(columnType?: 'datetime'): {
30
30
  'J-M-Y': string;
@@ -58,23 +58,23 @@ export declare class ColumnUtil {
58
58
  type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION;
59
59
  }): ['>', '<'];
60
60
  getComparators(column: ResponseColumn): ['=', '!='];
61
- containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): boolean;
62
- containsDerivedColumns(requestColumns: ApiRequestColumn[]): boolean;
63
- responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumn[], responseColumnMap: ResponseColumnItemTypeMap): boolean;
61
+ containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumnArray): boolean;
62
+ containsDerivedColumns(requestColumns: ApiRequestColumnArray): boolean;
63
+ responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumnArray, responseColumnMap: ResponseColumnItemTypeMap): boolean;
64
64
  copyRequestColumns(columns: true): true;
65
- copyRequestColumns(columns: ApiRequestColumn[]): ApiRequestColumn[];
65
+ copyRequestColumns(columns: ApiRequestColumns): ApiRequestColumns;
66
66
  copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
67
67
  mergeRequestColumns(first: true, second: ApiRequestColumns): RequestColumnMergeResult<true, []>;
68
- mergeRequestColumns(first: ApiRequestColumn[], second: true): RequestColumnMergeResult<true, true>;
69
- mergeRequestColumns(first: ApiRequestColumn[], second: ApiRequestColumn[]): RequestColumnMergeResult<ApiRequestColumn[], ApiRequestColumn[]>;
68
+ mergeRequestColumns(first: ApiRequestColumnArray, second: true): RequestColumnMergeResult<true, true>;
69
+ mergeRequestColumns(first: ApiRequestColumnArray, second: ApiRequestColumnArray): RequestColumnMergeResult<ApiRequestColumnArray, ApiRequestColumnArray>;
70
70
  mergeRequestColumns(first: ApiRequestColumns, second: ApiRequestColumns): RequestColumnMergeResult;
71
- mergeRequestColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): string | {
72
- [columnId: string]: ApiRequestColumn[];
73
- } | null;
71
+ mergeRequestColumn(requestColumn: ApiRequestColumn, destination: MutableApiRequestColumnArray): ApiRequestColumn | null;
72
+ createRequestColumnSetId(requestColumns: ApiRequestColumns): RequestColumnsTuple['string'];
73
+ private createRequestColumnId;
74
74
  getRequestColumnId(requestColumn: ApiRequestColumn): string;
75
75
  parseRequestColumn(requestColumn: ApiRequestColumn): {
76
76
  id: string;
77
- children: ApiRequestColumn[];
77
+ children: ApiRequestColumnArray;
78
78
  };
79
79
  /**
80
80
  * @description
@@ -103,6 +103,6 @@ export declare class ColumnUtil {
103
103
  isLocalColumnId(columnId: string): boolean;
104
104
  processConfigColumns(configColumns: string[]): ApiRequestColumn[];
105
105
  parseConfigColumn(configColumn: string): string[];
106
- processConfigColumn(parsedConfigColumn: string[], destination: ApiRequestColumn[]): void;
107
- findRequestColumn(columnId: string, requestColumns: ApiRequestColumn[]): number;
106
+ processConfigColumn(parsedConfigColumn: string[], destination: MutableApiRequestColumnArray): void;
107
+ findRequestColumn(columnId: string, requestColumns: ApiRequestColumnArray): number;
108
108
  }
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiFormatter, ChangesDeltaBase, EntryParent, FieldMap, ItemEntry, ItemEntryService, ItemIdConversionMap, TransactionItemEntryChangesTuple } from '../internal';
2
+ import { ApiFormatter, ChangesDeltaBase, EntryParent, FieldMap, ItemEntry, ItemEntryChangesTuple, ItemEntryService, ItemIdConversionMap } from '../internal';
3
3
  export declare type InternalCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
4
  entry: ItemEntry<ItemTypeType>;
5
5
  fields: FieldMap<ItemTypeType>;
@@ -20,7 +20,7 @@ export declare class InternalChangesDelta extends ChangesDeltaBase {
20
20
  [itemEntryId: string]: InternalCreateDelta;
21
21
  };
22
22
  deleted: {
23
- [itemType: string]: TransactionItemEntryChangesTuple<any>[];
23
+ [itemType in ApiEnumItemType]?: ItemEntryChangesTuple<itemType>[];
24
24
  };
25
25
  moved: {
26
26
  [itemEntryId: number]: {
@@ -31,9 +31,9 @@ export declare class InternalChangesDelta extends ChangesDeltaBase {
31
31
  itemIdConversionMap: ItemIdConversionMap;
32
32
  constructor(itemEntryService: ItemEntryService, apiFormatter: ApiFormatter);
33
33
  merge(otherChangesDelta: InternalChangesDelta): InternalChangesDelta;
34
- setItemDeleted(tuple: TransactionItemEntryChangesTuple<any>): this;
35
- setItemsDeleted(deleted: TransactionItemEntryChangesTuple<any>[]): this;
36
- setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
34
+ setItemDeleted(tuple: ItemEntryChangesTuple<any>): this;
35
+ setItemsDeleted(deleted: ItemEntryChangesTuple<any>[]): this;
36
+ setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: Partial<FieldMap<ItemTypeType>>): void;
37
37
  /**
38
38
  * @remark
39
39
  * Parent fields are non-writable so we need to keep track of moved entries another way (to do a linkTo request)
@@ -1,4 +1,4 @@
1
- import { ApiQueryConditionLinkedTo, ApiQueryConditionSubQuery } from '@rentman/backend-types';
1
+ import { ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryConditionSubQuery } from '@rentman/backend-types';
2
2
  import { ApiQuery, ApiQueryConditionComparator, ApiQueryWithConditions, KeyService, QueryParserBase } from '../internal';
3
3
  declare type ReturnType = boolean;
4
4
  export declare class QueryContainsLocalIdParser extends QueryParserBase<ReturnType> {
@@ -9,7 +9,7 @@ export declare class QueryContainsLocalIdParser extends QueryParserBase<ReturnTy
9
9
  protected parseSubFieldQuery<T extends ApiQueryConditionSubQuery>(_key: T['key'], _itemType: T['itemType'], field: T['field'], query: T['query']): ReturnType;
10
10
  protected parseSearchQuery(): ReturnType;
11
11
  protected parseCustomQuery(): ReturnType;
12
- protected parseSimpleQuery<T extends ApiQueryConditionComparator>(_key: T['key'], value: T['value']): ReturnType;
12
+ protected parseSimpleQuery<T extends ApiQueryConditionComparator | ApiQueryConditionIn>(_key: T['key'], value: T['value'], comparator: T['comparator']): ReturnType;
13
13
  protected parseLinkedToQuery<T extends ApiQueryConditionLinkedTo>(_linkedTo: T['linkedTo'], query: T['query']): ReturnType;
14
14
  protected parseComplexQuery<T extends ApiQueryWithConditions>(conditions: T['conditions']): ReturnType;
15
15
  private parseConditions;
@@ -1,17 +1,17 @@
1
1
  import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiFormatter, ApiQuery, EntryParentNull, FieldMap } from '../internal';
3
- export declare class QueryMatcher {
2
+ import { ApiFormatter, ApiQuery, FieldMap, LinkTreeServiceInterface } from '../internal';
3
+ export declare class QueryMatcher<ItemTypeType extends ApiEnumItemType> {
4
+ private linkTreeService;
4
5
  private apiFormatter;
5
- itemType: ApiEnumItemType;
6
- fields: FieldMap | [FieldMap, FieldMap];
7
- parent: EntryParentNull;
6
+ itemType: ItemTypeType;
7
+ fields: Partial<FieldMap<ItemTypeType>> | [Partial<FieldMap<ItemTypeType>>, Partial<FieldMap<ItemTypeType>>];
8
8
  /**
9
+ * @param linkTreeService
9
10
  * @param apiFormatter
10
11
  * @param itemType
11
12
  * @param fields The fields to match against, if "fields" is an array index [0] should be the new/updated values, and index [1] the cached ones
12
- * @param parent
13
13
  */
14
- constructor(apiFormatter: ApiFormatter, itemType: ApiEnumItemType, fields: FieldMap | [FieldMap, FieldMap], parent?: EntryParentNull);
14
+ constructor(linkTreeService: LinkTreeServiceInterface, apiFormatter: ApiFormatter, itemType: ItemTypeType, fields: Partial<FieldMap<ItemTypeType>> | [Partial<FieldMap<ItemTypeType>>, Partial<FieldMap<ItemTypeType>>]);
15
15
  /**
16
16
  * @remark
17
17
  * When changing this code also change {@link QueryLocallyMatchableParser QueryLocallyMatchableParser}
@@ -21,4 +21,5 @@ export declare class QueryMatcher {
21
21
  private matchLinkedToQuery;
22
22
  private matchComplexQuery;
23
23
  private matchSimpleQuery;
24
+ private getField;
24
25
  }
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiQuery, ApiRequestColumns, ApiRequestService, ApiResponseProcessor, ChangesDeltaFactory, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, ServerCache } from '../internal';
2
+ import { ApiQuery, ApiRequestColumns, ApiRequestService, ApiResponseProcessor, ChangesDeltaFactory, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, RequestColumnsTuple, ServerCache } from '../internal';
3
3
  export declare type RequestBufferResponse<ItemTypeType extends ApiEnumItemType = any> = ApiResponseProcessor<ItemTypeType>;
4
4
  export declare class RequestBuffer<ItemTypeType extends ApiEnumItemType = any> {
5
5
  private promiseLibrary;
@@ -16,7 +16,7 @@ export declare class RequestBuffer<ItemTypeType extends ApiEnumItemType = any> {
16
16
  containsId(itemId: ItemId): boolean;
17
17
  containsQuery(queryString: string): boolean;
18
18
  addSingleItem(itemId: ItemId, requestColumns: ApiRequestColumns): PromiseInterface<RequestBufferResponse<ItemTypeType>>;
19
- addQuery(query: [ApiQuery, string], requestColumns: ApiRequestColumns): PromiseInterface<RequestBufferResponse<ItemTypeType>>;
19
+ addQuery(query: [ApiQuery, string], requestColumnsTuple: RequestColumnsTuple): PromiseInterface<RequestBufferResponse<ItemTypeType>>;
20
20
  flush(): PromiseInterface<RequestBufferResponse<ItemTypeType>>;
21
21
  getPromise(): PromiseInterface<RequestBufferResponse<ItemTypeType>>;
22
22
  isPrivateBuffer(): boolean;
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType, ApiQuery, ItemId } from '@rentman/backend-types';
2
- import { ApiRequestColumns, ApiRequestService, ChangesDeltaFactory, KeyService, PromiseInterface, PromiseLibraryInterface, RequestBufferResponse, RequestColumnExpansionFactory, ServerCache } from '../internal';
2
+ import { ApiRequestColumns, ApiRequestService, ChangesDeltaFactory, KeyService, PromiseInterface, PromiseLibraryInterface, RequestBufferResponse, RequestColumnExpansionFactory, RequestColumnsTuple, ServerCache } from '../internal';
3
3
  export declare class RequestBufferManager {
4
4
  private promiseLibrary;
5
5
  private apiRequestService;
@@ -14,7 +14,7 @@ export declare class RequestBufferManager {
14
14
  setServerCache(serverCache: ServerCache): void;
15
15
  fetchByIds(itemType: ApiEnumItemType, itemIds: ItemId[], requestColumns: ApiRequestColumns): PromiseInterface<RequestBufferResponse>;
16
16
  fetchById(itemType: ApiEnumItemType, itemId: ItemId, requestColumns: ApiRequestColumns): PromiseInterface<RequestBufferResponse>;
17
- fetchByQuery(itemType: ApiEnumItemType, query: [ApiQuery, string], requestColumns: ApiRequestColumns, usePrivateBuffer: boolean): PromiseInterface<RequestBufferResponse>;
17
+ fetchByQuery(itemType: ApiEnumItemType, query: [ApiQuery, string], requestColumnsTuple: RequestColumnsTuple, usePrivateBuffer: boolean): PromiseInterface<RequestBufferResponse>;
18
18
  private constructPrivateBuffer;
19
19
  private constructBuffer;
20
20
  private _constructBuffer;
@@ -1,15 +1,13 @@
1
1
  import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiRequestColumns, ColumnSet, ColumnUtil, RequestColumnMergeResult } from '../internal';
3
- declare type RequestColumnMap = {
4
- [itemType: string]: ApiRequestColumns;
5
- };
2
+ import { ApiRequestColumnMap, ApiRequestColumns, ColumnSet, ColumnUtil, RequestColumnsTuple } from '../internal';
6
3
  export declare class RequestColumnExpansion {
7
4
  private columnUtil;
8
5
  private columns;
9
6
  private columnSetIdMap;
7
+ private requestColumnSetIdMap;
10
8
  constructor(columnUtil: ColumnUtil);
11
- expandWithRequestColumns(itemType: ApiEnumItemType, requestColumns: ApiRequestColumns): RequestColumnMergeResult;
12
- expand<T extends ColumnSet<ApiEnumItemType>>(columnSet: T): void;
13
- get(): RequestColumnMap;
9
+ expandWithRequestColumnsTuple(itemType: ApiEnumItemType, requestColumnsTuple: RequestColumnsTuple): void;
10
+ expandWithColumnSet(columnSet: ColumnSet): void;
11
+ expandWithRequestColumns(itemType: ApiEnumItemType, requestColumns: ApiRequestColumns): void;
12
+ get(): ApiRequestColumnMap;
14
13
  }
15
- export {};
@@ -0,0 +1,46 @@
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { AbstractCache, ApiRequestColumnArray, ApiRequestColumns, ColumnCache, ColumnSet, ColumnUtil, RequestColumnsTuple } from '../internal';
3
+ declare type RequestColumnSetMergeResult = {
4
+ merged: RequestColumnsTuple;
5
+ difference: RequestColumnsTuple;
6
+ };
7
+ declare type AggregateColumnsTuple = {
8
+ readonly object: ApiRequestColumnArray;
9
+ readonly string: string;
10
+ };
11
+ /**
12
+ * @description This class caches the results of frequently performed operations on request columns:
13
+ * - Merging;
14
+ * - Testing whether all columns of one column set are present in another (which is mainly done by merging and checking
15
+ * the difference);
16
+ * - Creating hashes (IDs) for sets of request columns.
17
+ */
18
+ export declare class RequestColumnsOperationsCache<ItemTypeType extends ApiEnumItemType> {
19
+ readonly itemType: ItemTypeType;
20
+ private columnUtil;
21
+ private columnCache;
22
+ private readonly requestColumnsTuple;
23
+ private aggregateColumnsTuple?;
24
+ private expandedRequestColumnsTuple?;
25
+ private columnsMergedWithTupleMap;
26
+ private expandedColumnsMergedWithTupleMap;
27
+ private setContainsAllColumnsMap;
28
+ private setContainsAllExpandedColumnsMap;
29
+ constructor(itemType: ItemTypeType, columnUtil: ColumnUtil, columnCache: ColumnCache, requestColumns: ApiRequestColumns);
30
+ getRequestColumnsTuple(transactionCache: AbstractCache): RequestColumnsTuple;
31
+ getAggregateColumns(): AggregateColumnsTuple;
32
+ hasAggregateColumns(): boolean;
33
+ /**
34
+ *
35
+ * @param requestColumnsTuple
36
+ * @param transactionCache - When in the server cache, we'll include the columns required for delete
37
+ * relations and the query matcher in the operation.
38
+ */
39
+ getColumnsMergedWithTuple(requestColumnsTuple: RequestColumnsTuple, transactionCache: AbstractCache): RequestColumnSetMergeResult;
40
+ tupleContainsAllColumns(requestColumnsTuple: RequestColumnsTuple, transactionCache: AbstractCache): boolean;
41
+ setContainsAllColumns(columnSet: ColumnSet<ItemTypeType>, transactionCache: AbstractCache): boolean;
42
+ private mergeColumnsWithTuple;
43
+ private extractAggregateColumns;
44
+ private createRequestColumnsTuple;
45
+ }
46
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiRequestService, ApiResponse, ColumnHandler, ColumnUtil, EntryParentNull, ErrorHandlerInterface, ItemTypeColumnIds, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, Template, TemplateFactory } from '../internal';
2
+ import { ApiRequestColumnMap, ApiRequestService, ApiResponse, ColumnHandler, ColumnUtil, EntryParentNull, ErrorHandlerInterface, ItemTypeColumnIds, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, Template, TemplateFactory } from '../internal';
3
3
  export declare class TemplateCache {
4
4
  private columnUtil;
5
5
  private promiseService;
@@ -56,7 +56,7 @@ export declare class TemplateCache {
56
56
  * );
57
57
  * ```
58
58
  */
59
- fetchTemplate<ItemTypeType extends ApiEnumItemType, ColumnIds extends ItemTypeColumnIds<ItemTypeType> = ItemTypeColumnIds<ItemTypeType>>(itemType: ItemTypeType, itemId?: ItemId, templateOptions?: any, templateColumns?: any, entryParentOrParentItemType?: EntryParentNull | ApiEnumItemType): PromiseInterface<Template<ItemTypeType, ColumnIds>>;
59
+ fetchTemplate<ItemTypeType extends ApiEnumItemType, ColumnIds extends ItemTypeColumnIds<ItemTypeType> = ItemTypeColumnIds<ItemTypeType>>(itemType: ItemTypeType, itemId?: ItemId, templateOptions?: any, templateColumns?: ApiRequestColumnMap, entryParentOrParentItemType?: EntryParentNull | ApiEnumItemType): PromiseInterface<Template<ItemTypeType, ColumnIds>>;
60
60
  private expandWithLinkedItemTypesDefaultColumns;
61
61
  private fetchTemplateById;
62
62
  private constructTemplateBuffer;
@@ -1,6 +1,6 @@
1
1
  import { ApiEnumItemType } from '@rentman/backend-types';
2
2
  import { RmCore } from '../../core';
3
- import { AbstractCacheDependencyInterface, ApiRequestColumn, CachedQueryItem, ChangesDelta, ChangesDeltaBase, ChangesDeltaResult, CollectionQuery, CollectionResourceParentIdMap, EntryParentNull, FieldMap, InternalChangesDelta, ItemCache, ItemEntry, ItemEntryChangesTuple, ItemHandlerBase, ItemIdConversionMap, OnAfterCreateCallback, ParentChangesDelta, PromiseInterface, ServerCache, ServerCachedQueryHandler, TransactionCache, TransactionCachedQueryHandler, TransactionValidatorFactory } from '../../internal';
3
+ import { AbstractCacheDependencyInterface, ApiRequestColumnArray, CachedQueryItem, ChangesDelta, ChangesDeltaBase, ChangesDeltaResult, CollectionQuery, CollectionResourceParentIdMap, EntryParentNull, FieldMap, InternalChangesDelta, ItemCache, ItemEntry, ItemEntryChangesTuple, ItemHandlerBase, ItemIdConversionMap, OnAfterCreateCallback, ParentChangesDelta, PromiseInterface, ServerCache, ServerCachedQueryHandler, TransactionCache, TransactionCachedQueryHandler, TransactionValidatorFactory } from '../../internal';
4
4
  export declare type TransactionOptions = {
5
5
  /**
6
6
  * @description
@@ -24,7 +24,7 @@ export declare abstract class AbstractCache {
24
24
  *
25
25
  * todo[limit] move to TransactionCache ?
26
26
  */
27
- abstract expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
27
+ abstract expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newColumns: ApiRequestColumnArray): PromiseInterface<CollectionResourceParentIdMap>;
28
28
  /**
29
29
  * @description
30
30
  * Returns {@link ItemEntry ItemEntries} that fit the collection's query, copies over the collectionChanges on all transactions in the chain.
@@ -62,7 +62,6 @@ export declare abstract class AbstractCache {
62
62
  */
63
63
  abstract applyChangesFromParent(parentChangesDelta: ParentChangesDelta, isCalledAfterSocketUpdate: boolean): void;
64
64
  abstract getParent<ItemTypeType extends ApiEnumItemType = any>(itemEntry: ItemEntry<ItemTypeType>, fromInitial?: boolean, providedFields?: FieldMap<ItemTypeType>): EntryParentNull;
65
- abstract getItemChangesRecursively<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id'], copyFields?: boolean): FieldMap<ItemTypeType>;
66
65
  abstract getLocalItemEntryChangesTuple<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id']): ItemEntryChangesTuple<ItemTypeType>;
67
66
  abstract applyChangesDelta(changesDelta: ChangesDelta): PromiseInterface<ChangesDeltaResult>;
68
67
  protected getParentFromFields<ItemTypeType extends ApiEnumItemType = any>(itemEntry: ItemEntry<ItemTypeType>, fields?: FieldMap<ItemTypeType>): EntryParentNull;
@@ -1,13 +1,24 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { AbstractCache, ApiQuery, ApiRequestColumns, CachedQueryItem, CollectionEntryService, CollectionOptions, CollectionQuery, ColumnSubsetCache, ColumnUtil, ItemEntry, ParentIdMap, ParentItemMap, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory } from '../../internal';
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { AbstractCache, ApiQuery, ApiRequestLimit, CachedQueryItem, CollectionEntryService, CollectionOptions, CollectionQuery, ColumnUtil, EntryParentNull, ItemEntry, ParentItemMap, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, RequestColumnsOperationsCache, RequestColumnsOperationsCacheFactory, RequestColumnsTuple } from '../../internal';
3
3
  export declare type CachedQueryItemTree<ItemTypeType extends ApiEnumItemType = any> = {
4
4
  item: CachedQueryItem<ItemTypeType>;
5
5
  children: ParentItemMap<CachedQueryItemTree> | null;
6
6
  };
7
+ /**
8
+ * We're using a subset of the collection options here, because whenever we access the columns, we'd want to do it
9
+ * through the columns operations cache.
10
+ */
11
+ export declare type CachedQueryOptions = {
12
+ limit: ApiRequestLimit | null;
13
+ preventCaching: boolean;
14
+ usePrivateBuffer: boolean;
15
+ parent: EntryParentNull;
16
+ };
7
17
  export declare abstract class CachedQueryHandlerBase {
8
18
  protected collectionEntryService: CollectionEntryService;
9
19
  protected columnUtil: ColumnUtil;
10
20
  protected requestColumnExpansionFactory: RequestColumnExpansionFactory;
21
+ protected requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
11
22
  protected promiseService: PromiseLibraryInterface;
12
23
  protected transaction: AbstractCache;
13
24
  /**
@@ -22,34 +33,24 @@ export declare abstract class CachedQueryHandlerBase {
22
33
  [queryString: string]: CachedQueryItem;
23
34
  };
24
35
  };
25
- protected constructor(collectionEntryService: CollectionEntryService, columnUtil: ColumnUtil, requestColumnExpansionFactory: RequestColumnExpansionFactory, promiseService: PromiseLibraryInterface, transaction: AbstractCache);
36
+ protected constructor(collectionEntryService: CollectionEntryService, columnUtil: ColumnUtil, requestColumnExpansionFactory: RequestColumnExpansionFactory, requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory, promiseService: PromiseLibraryInterface, transaction: AbstractCache);
26
37
  /**
27
38
  * Every time a cached query item is created, either 'resolve' or 'reject' has to be called on the cached query item.
28
39
  */
29
- setCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, requestColumns: ApiRequestColumns, itemEntries?: ItemEntry<ItemTypeType>[]): CachedQueryItem<ItemTypeType>;
40
+ setCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, requestColumnsTuple: RequestColumnsTuple, itemEntries?: ItemEntry<ItemTypeType>[]): CachedQueryItem<ItemTypeType>;
30
41
  getCachedQueryItems<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string): undefined | ItemEntry<ItemTypeType>[];
31
42
  getCachedQueryObjectsByItemType(itemType: ApiEnumItemType): CachedQueryItem[];
32
- /**
33
- * @description
34
- * Fetches a {@link CollectionEntry CollectionEntry} with the given options
35
- */
36
- abstract __fetchCachedQueryItem<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItem<ItemTypeType>>;
37
- /**
38
- * @description
39
- * Fetches collections linked to the passed parents
40
- */
41
- abstract __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
42
43
  /**
43
44
  * @description
44
45
  * Fetches collections linked to the passed parents
45
46
  */
46
- abstract __fetchLinkedCachedQueryItems<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<ParentIdMap<CachedQueryItem<ItemTypeType>>>;
47
+ abstract __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CachedQueryOptions, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
47
48
  /**
48
49
  * @description
49
50
  * Removes the passed {@link ItemId ItemIds} from the Transaction's query cache
50
51
  */
51
52
  __removeItemEntriesFromCachedQueries<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: ItemEntry<ItemTypeType>[]): ItemEntry<ItemTypeType>[];
52
- abstract __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, newColumns: ApiRequestColumns, usePrivateBuffer: boolean, force: boolean, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
53
+ abstract __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, usePrivateBuffer: boolean, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
53
54
  /**
54
55
  * @description
55
56
  * Expands the option's {@link CollectionOptions.columns columns} with the columns required for the {@link CacheSyncer CacheSyncer} to function.
@@ -59,7 +60,7 @@ export declare abstract class CachedQueryHandlerBase {
59
60
  /**
60
61
  * Every time a cached query item is created, either 'resolve' or 'reject' has to be called on the cached query item.
61
62
  */
62
- protected constructCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: ItemEntry<ItemTypeType>[], requestColumns: ApiRequestColumns): CachedQueryItem<ItemTypeType>;
63
+ protected constructCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: ItemEntry<ItemTypeType>[], requestColumnsTuple: RequestColumnsTuple): CachedQueryItem<ItemTypeType>;
63
64
  /**
64
65
  * @description
65
66
  * Adds the passed {@link ItemEntry ItemEntries} to the Transaction's query cache,
@@ -1,16 +1,13 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { AbstractCache, ApiFormatter, ApiQuery, ChangesDeltaBase, ChangesDeltaItemCreateDelta, ChangesDeltaItemUpdateDelta, ColumnInfo, ColumnUtil, ErrorHandlerInterface, FieldMap, ItemCache, ItemCacheFactory, ItemEntry, ItemEntryFactory, ItemEntryOptions, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory, TransactionItemEntryChanges } from '../../internal';
2
+ import { AbstractCache, ApiFormatter, ApiQuery, ChangesDeltaBase, ChangesDeltaItemCreateDelta, ChangesDeltaItemUpdateDelta, ColumnInfo, ColumnUtil, ErrorHandlerInterface, FieldMap, ItemCache, ItemCacheFactory, ItemEntry, ItemEntryFactory, ItemEntryOptions, ItemTypeColumnId, PromiseInterface, PromiseLibraryInterface, RequestColumnExpansionFactory } from '../../internal';
3
3
  export declare enum ItemCacheStatus {
4
4
  CACHED = "cached",
5
5
  NOT_CACHED = "not_cached",
6
6
  NO_CHANGES = "no_changes"
7
7
  }
8
- export interface ItemEntryChanges<ItemTypeType extends ApiEnumItemType> {
9
- fields: FieldMap<ItemTypeType>;
10
- }
11
8
  export interface ItemEntryChangesTuple<ItemTypeType extends ApiEnumItemType> {
12
9
  entry: ItemEntry<ItemTypeType>;
13
- changes: ItemEntryChanges<ItemTypeType>;
10
+ changes: FieldMap<ItemTypeType>;
14
11
  }
15
12
  export declare type ProcessItemEntryChangesResult<ItemTypeType extends ApiEnumItemType> = {
16
13
  status: ItemCacheStatus.NO_CHANGES | ItemCacheStatus.NOT_CACHED;
@@ -28,17 +25,19 @@ export declare abstract class ItemHandlerBase {
28
25
  protected requestColumnExpansionFactory: RequestColumnExpansionFactory;
29
26
  protected transaction: AbstractCache;
30
27
  readonly entries: ItemCache;
31
- abstract itemChanges: {
32
- [itemEntryId: number]: ItemEntryChanges<any>;
28
+ itemChanges: {
29
+ [itemEntryId: number]: FieldMap;
33
30
  };
34
31
  protected constructor(columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, promiseService: PromiseLibraryInterface, errorHandler: ErrorHandlerInterface, requestColumnExpansionFactory: RequestColumnExpansionFactory, itemCacheFactory: ItemCacheFactory, transaction: AbstractCache);
32
+ lookUpItemField<ItemTypeType extends ApiEnumItemType, ColumnId extends ItemTypeColumnId<ItemTypeType>>(entry: ItemEntry<ItemTypeType>, columnId: ColumnId): undefined | FieldMap<ItemTypeType>[ColumnId];
33
+ collectFields<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>): FieldMap<ItemTypeType>;
35
34
  /**
36
35
  * @description
37
36
  * Copies the passed ItemEntryChanges into a format the implementing ItemHandler can put in his ItemChanges
38
37
  * @param itemEntryChanges
39
38
  * @param entry
40
39
  */
41
- abstract copyTransactionItemEntryChanges<ItemTypeType extends ApiEnumItemType>(itemEntryChanges: TransactionItemEntryChanges<ItemTypeType>, entry: ItemEntry<ItemTypeType>): ItemEntryChanges<ItemTypeType>;
40
+ copyTransactionItemEntryChanges<ItemTypeType extends ApiEnumItemType>(itemEntryChanges: FieldMap<ItemTypeType>, entry: ItemEntry<ItemTypeType>): FieldMap<ItemTypeType>;
42
41
  /**
43
42
  * @description
44
43
  * Fetches the ItemEntries for the given query, does not look in the cache, since we don't know which ItemIds belong to the query !
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { AbstractCache, ApiRequestColumn, ApiRequestColumnMap, ApiResponseProcessor, CachedQueryItem, ChangesDelta, ChangesDeltaResult, CollectionQuery, CollectionResourceParentIdMap, EntryParent, EntryParentNull, FieldMap, ItemEntry, ItemEntryChangesTuple, ItemIdConversionMap, ItemTypeMap, OnAfterCreateCallback, ParentChangesDelta, PromiseInterface, RmCore, ServerCacheDependencyInterface, ServerCachedQueryHandler, ServerItemHandler, TransactionCache, TransactionOptions, TransactionValidatorFactory } from '../../../internal';
2
+ import { AbstractCache, ApiRequestColumnArray, ApiRequestColumnMap, ApiResponseProcessor, CachedQueryItem, ChangesDelta, ChangesDeltaResult, CollectionQuery, CollectionResourceParentIdMap, EntryParent, EntryParentNull, FieldMap, ItemEntry, ItemEntryChangesTuple, ItemIdConversionMap, ItemTypeMap, OnAfterCreateCallback, ParentChangesDelta, PromiseInterface, RmCore, ServerCacheDependencyInterface, ServerCachedQueryHandler, ServerItemHandler, TransactionCache, TransactionOptions, TransactionValidatorFactory } from '../../../internal';
3
3
  /**
4
4
  * @description
5
5
  * The {@link ServerCache ServerCache} is responsible for keeping track of {@link ItemEntry ItemEntries} and {@link CollectionEntry CollectionEntries}
@@ -15,7 +15,7 @@ export declare class ServerCache extends AbstractCache {
15
15
  constructor(dependencies: ServerCacheDependencyInterface, core: RmCore);
16
16
  getServerCache(): ServerCache;
17
17
  createChild(id?: string, validatorFactory?: TransactionValidatorFactory, options?: TransactionOptions): TransactionCache;
18
- expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newRequestColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
18
+ expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newRequestColumns: ApiRequestColumnArray): PromiseInterface<CollectionResourceParentIdMap>;
19
19
  /**
20
20
  *
21
21
  * @param response
@@ -49,7 +49,6 @@ export declare class ServerCache extends AbstractCache {
49
49
  * Use {@link CollectionResource.getParent CollectionResource.getParent} instead of {@link TransactionCache.getParent TransactionCache.getParent} if you're getting the parent in the onRemove callback
50
50
  */
51
51
  getParent<ItemTypeType extends ApiEnumItemType = any>(itemEntry: ItemEntry<ItemTypeType>, _fromInitial?: boolean, _providedFields?: FieldMap<ItemTypeType>): EntryParentNull;
52
- getItemChangesRecursively<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id'], copyFields?: boolean): FieldMap<ItemTypeType>;
53
52
  /**
54
53
  * @description
55
54
  * Only takes the local changes into account, used for saving
@@ -1,26 +1,27 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiRequestColumns, ApiRequestService, CachedQueryHandlerBase, CachedQueryItem, CollectionEntryService, CollectionOptions, CollectionQuery, ColumnSubsetCache, ColumnSubsetCacheFactory, ColumnUtil, ErrorHandlerInterface, ItemEntry, ParentIdMap, PromiseInterface, PromiseLibraryInterface, RequestBufferManager, RequestColumnExpansionFactory, ServerCache, ServerItemHandler } from '../../../internal';
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ApiRequestColumns, ApiRequestService, CachedQueryHandlerBase, CachedQueryItem, CachedQueryOptions, CollectionEntryService, CollectionQuery, ColumnUtil, ErrorHandlerInterface, ItemEntry, PromiseInterface, PromiseLibraryInterface, RequestBufferManager, RequestColumnExpansionFactory, RequestColumnsOperationsCache, RequestColumnsOperationsCacheFactory, ServerCache, ServerItemHandler } from '../../../internal';
3
3
  export declare class ServerCachedQueryHandler extends CachedQueryHandlerBase {
4
- private columnSubsetCacheFactory;
5
4
  private requestBufferManager;
6
5
  private apiRequestService;
7
6
  private errorHandler;
8
7
  private itemHandler;
9
8
  protected transaction: ServerCache;
10
- constructor(columnSubsetCacheFactory: ColumnSubsetCacheFactory, requestBufferManager: RequestBufferManager, requestColumnExpansionFactory: RequestColumnExpansionFactory, apiRequestService: ApiRequestService, collectionEntryService: CollectionEntryService, errorHandler: ErrorHandlerInterface, itemHandler: ServerItemHandler, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, transaction: ServerCache);
11
- __fetchCachedQueryItem<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItem<ItemTypeType>>;
12
- __fetchLinkedCachedQueryItems<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<ParentIdMap<CachedQueryItem<ItemTypeType>>>;
9
+ constructor(requestColumnOperationsCacheFactory: RequestColumnsOperationsCacheFactory, requestBufferManager: RequestBufferManager, requestColumnExpansionFactory: RequestColumnExpansionFactory, apiRequestService: ApiRequestService, collectionEntryService: CollectionEntryService, errorHandler: ErrorHandlerInterface, itemHandler: ServerItemHandler, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, transaction: ServerCache);
13
10
  __addItemEntriesToCachedQueries<ItemTypeType extends ApiEnumItemType = any>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: ItemEntry<ItemTypeType>[]): void;
14
11
  /**
15
12
  * @description
16
13
  * Expands the columns of the items in the cached query
17
14
  */
18
- __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, newColumns: ApiRequestColumns, usePrivateBuffer: boolean, force: boolean, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
15
+ __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, usePrivateBuffer: boolean, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
19
16
  /**
20
17
  * @description
21
18
  * Fetches the data for the passed ItemType/options, will do nothing if the requested CollectionEntry/columns are already cached.
22
19
  * Will create a new {@link CollectionEntry CollectionEntry} if the CollectionEntry didn't exist yet
23
20
  */
24
- __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
25
- private expandColumnsWithCachedQueryColumns;
21
+ __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CachedQueryOptions, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
22
+ /**
23
+ * Merged the request columns with columns required for delete relations and the query matcher.
24
+ * This method is in the server cache because the queries contain the superset of all columns here.
25
+ */
26
+ expandColumnsWithRequiredColumns(itemType: ApiEnumItemType, requestColumns: ApiRequestColumns): ApiRequestColumns;
26
27
  }
@@ -1,22 +1,18 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiFormatter, ApiQuery, ApiRequestColumns, ApiResponseProcessor, ChangesDelta, ChangesDeltaItemCreateDelta, ChangesDeltaItemUpdateDelta, ColumnExpansion, ColumnSet, ColumnSubsetCacheFactory, ColumnUtil, ErrorHandlerInterface, ItemCacheFactory, ItemEntry, ItemEntryChanges, ItemEntryFactory, ItemEntryOptions, ItemHandlerBase, ProcessItemEntryChangesResult, PromiseInterface, PromiseLibraryInterface, QueryParserFactory, QueryService, RequestBufferManager, RequestBufferResponse, RequestColumnExpansionFactory, ServerCache, TransactionItemEntryChanges } from '../../../internal';
2
+ import { ApiFormatter, ApiQuery, ApiRequestColumns, ApiResponseProcessor, ChangesDelta, ChangesDeltaItemCreateDelta, ChangesDeltaItemUpdateDelta, ColumnExpansion, ColumnSet, ColumnUtil, ErrorHandlerInterface, ItemCacheFactory, ItemEntry, ItemEntryFactory, ItemEntryOptions, ItemHandlerBase, ProcessItemEntryChangesResult, PromiseInterface, PromiseLibraryInterface, QueryParserFactory, QueryService, RequestBufferManager, RequestBufferResponse, RequestColumnExpansionFactory, RequestColumnsOperationsCacheFactory, ServerCache } from '../../../internal';
3
3
  export declare class ServerItemHandler extends ItemHandlerBase {
4
4
  private requestBufferManager;
5
5
  private queryParserFactory;
6
6
  private queryService;
7
- private columnSubsetCacheFactory;
7
+ private requestColumnsOperationsCacheFactory;
8
8
  protected transaction: ServerCache;
9
- itemChanges: {
10
- [itemEntryId: number]: ItemEntryChanges<any>;
11
- };
12
- constructor(requestBufferManager: RequestBufferManager, queryParserFactory: QueryParserFactory, queryService: QueryService, columnSubsetCacheFactory: ColumnSubsetCacheFactory, errorHandler: ErrorHandlerInterface, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, requestColumnExpansionFactory: RequestColumnExpansionFactory, transaction: ServerCache);
9
+ constructor(requestBufferManager: RequestBufferManager, queryParserFactory: QueryParserFactory, queryService: QueryService, requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory, errorHandler: ErrorHandlerInterface, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, requestColumnExpansionFactory: RequestColumnExpansionFactory, transaction: ServerCache);
13
10
  createItemEntry(createTuple: ChangesDeltaItemCreateDelta): ItemEntry;
14
11
  /**
15
12
  * @description
16
13
  * Processes updates on a cached entry
17
14
  */
18
15
  processItemEntryChanges<ItemTypeType extends ApiEnumItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, _isCalledAfterSocketUpdate?: boolean, _createItemChangesIfNoneExist?: boolean): ProcessItemEntryChangesResult<ItemTypeType>;
19
- copyTransactionItemEntryChanges<ItemTypeType extends ApiEnumItemType>(itemEntryChanges: TransactionItemEntryChanges<ItemTypeType>, entry: ItemEntry<ItemTypeType>): ItemEntryChanges<ItemTypeType>;
20
16
  fetchItemEntry<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemId: ItemId, options: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>>;
21
17
  fetchItemEntriesByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: ApiQuery, entryOptions: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>[]>;
22
18
  extendItemEntries<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemEntries: ItemEntry<ItemTypeType>[], newColumns: ApiRequestColumns): PromiseInterface<ItemEntry<ItemTypeType>[]>;
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { AbstractCache, AbstractCacheDependencyInterface, ApiQuery, ApiRequestColumn, ApiRequestColumns, CachedQueryItem, CachedQueryItemTree, ChangesDelta, ChangesDeltaResult, ChildCollectionOptions, ChildCollectionResources, ChildCollectionResourcesNull, CollectionDefinition, CollectionOptionsInterface, CollectionQuery, CollectionResource, CollectionResourceParentIdMap, ConversionMap, CreateRequestParameterMap, DeregFunction, EntryParentNull, FieldChangeCallback, FieldMap, InternalChangesDelta, ItemEntry, ItemEntryOptions, ItemIdConversionMap, ItemOptionsInterface, ItemResource, ItemResourcesItemTypeMap, ItemTypeColumnIds, ItemTypeMap, LinkCollectionDefinition, ModuleChangesCompilationResult, OnAfterCreateCallback, ParentChangesDelta, ParentItemMap, PromiseInterface, RmCore, ServerCache, TransactionCacheCallbackCondition, TransactionCacheCallbackType, TransactionCachedQueryHandler, TransactionCollectionHandler, TransactionEventHandler, TransactionItemEntryChangesTuple, TransactionItemHandler, TransactionOptions, TransactionValidatorFactory } from '../../../internal';
2
+ import { AbstractCache, AbstractCacheDependencyInterface, ApiQuery, ApiRequestColumnArray, ApiRequestColumns, CachedQueryItem, CachedQueryItemTree, ChangesDelta, ChangesDeltaResult, ChildCollectionOptions, ChildCollectionResources, ChildCollectionResourcesNull, CollectionDefinition, CollectionOptionsInterface, CollectionQuery, CollectionResource, CollectionResourceParentIdMap, ConversionMap, CreateRequestParameterMap, DeregFunction, EntryParentNull, FieldChangeCallback, FieldMap, InternalChangesDelta, ItemEntry, ItemEntryChangesTuple, ItemEntryOptions, ItemIdConversionMap, ItemOptionsInterface, ItemResource, ItemResourcesItemTypeMap, ItemTypeColumnIds, ItemTypeMap, LinkCollectionDefinition, ModuleChangesCompilationResult, OnAfterCreateCallback, ParentChangesDelta, ParentItemMap, PromiseInterface, RmCore, ServerCache, TransactionCacheCallbackCondition, TransactionCacheCallbackType, TransactionCachedQueryHandler, TransactionCollectionHandler, TransactionEventHandler, TransactionItemHandler, TransactionOptions, TransactionValidatorFactory } from '../../../internal';
3
3
  declare type ItemResourceLinks<ItemTypeType extends ApiEnumItemType> = {
4
4
  main: ItemResource<ItemTypeType>;
5
5
  linked: ItemResourcesItemTypeMap;
@@ -100,7 +100,7 @@ export declare class TransactionCache extends AbstractCache {
100
100
  * @description
101
101
  * Expands the collection with the new request columns, assumes that all collections have the same itemType
102
102
  */
103
- expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
103
+ expandCollectionResources<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newColumns: ApiRequestColumnArray): PromiseInterface<CollectionResourceParentIdMap>;
104
104
  registerFieldChangeCallback<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemId: ItemId, callback: FieldChangeCallback<ItemTypeType>): DeregFunction;
105
105
  createChangesDelta(): ChangesDelta;
106
106
  getFirstErrorString(): undefined | string;
@@ -159,14 +159,6 @@ export declare class TransactionCache extends AbstractCache {
159
159
  */
160
160
  getParent<ItemTypeType extends ApiEnumItemType = any>(itemEntry: ItemEntry<ItemTypeType>, fromInitial?: boolean, providedFields?: FieldMap<ItemTypeType>): EntryParentNull;
161
161
  getCollectionChangesRecursively<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery): CachedQueryItem<ItemTypeType> | undefined;
162
- /**
163
- * @description
164
- * Traverses the transaction chain and returns the changes of the item on the first transaction
165
- *
166
- * @param itemEntryId The entry ID of the ItemEntry you want to get the changes from
167
- * @param copyFields If set, will call {@link ApiFormatter.copyFields ApiFormatter.copyFields}, otherwise just returns the object
168
- */
169
- getItemChangesRecursively<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id'], copyFields?: boolean): FieldMap<ItemTypeType>;
170
162
  /**
171
163
  * @description
172
164
  * Removes the {@link CollectionResource CollectionResource} from the transaction, preventing the {@link CollectionResource.options.onAdd onAdd} and {@link CollectionResource.options.onRemove onRemove} callbacks from being called.
@@ -281,7 +273,7 @@ export declare class TransactionCache extends AbstractCache {
281
273
  * @description
282
274
  * Gets an already cached {@link ItemEntry ItemEntry} and the changes of this specific transaction for that entry
283
275
  */
284
- getLocalItemEntryChangesTuple<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id']): TransactionItemEntryChangesTuple<ItemTypeType>;
276
+ getLocalItemEntryChangesTuple<ItemTypeType extends ApiEnumItemType>(itemEntryId: ItemEntry<ItemTypeType>['id']): ItemEntryChangesTuple<ItemTypeType>;
285
277
  /**
286
278
  * @description
287
279
  * Gets an ItemEntry from the cache, doesn't do a API request, used for saving
@@ -1,5 +1,5 @@
1
1
  import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiQuery, ApiRequestColumns, CachedQueryHandlerBase, CachedQueryItem, CachedQueryItemTree, ChildCollectionOptions, CollectionOptions, CollectionQuery, ColumnSubsetCache, ItemEntry, ItemEntryOptions, ItemIdConversionMap, ItemTypeMap, ParentIdMap, ParentItemMap, PromiseInterface, TransactionCache, TransactionCollectionHandlerDependencyInterface, TransactionItemHandler } from '../../../internal';
2
+ import { ApiQuery, CachedQueryHandlerBase, CachedQueryItem, CachedQueryItemTree, CachedQueryOptions, ChildCollectionOptions, CollectionOptions, CollectionQuery, EntryParentNull, ItemEntry, ItemIdConversionMap, ItemTypeMap, ParentItemMap, PromiseInterface, RequestColumnsOperationsCache, TransactionCache, TransactionCollectionHandlerDependencyInterface, TransactionItemHandler } from '../../../internal';
3
3
  export declare class TransactionCachedQueryHandler extends CachedQueryHandlerBase {
4
4
  private dependencies;
5
5
  private itemHandler;
@@ -12,17 +12,28 @@ export declare class TransactionCachedQueryHandler extends CachedQueryHandlerBas
12
12
  * @param conversionMap ConversionMap with the updated IDs
13
13
  */
14
14
  updateLocalItemIdReferences(conversionMap: ItemIdConversionMap): void;
15
- __fetchCachedQueryItem<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
16
- __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, newColumns: ApiRequestColumns, usePrivateBuffer: boolean, force: boolean, _batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
15
+ /**
16
+ * @description
17
+ * Fetches a {@link CollectionEntry CollectionEntry} with the given options
18
+ */
19
+ __fetchCachedQueryItem<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItem<ItemTypeType>>;
20
+ __expandCachedQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, queryString: string, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, usePrivateBuffer: boolean, _batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
17
21
  __addItemEntriesToCachedQueries<ItemTypeType extends ApiEnumItemType = any>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: ItemEntry<ItemTypeType>[]): void;
18
22
  /**
19
23
  * @remark
20
24
  * todo not only linkedTo should be checked, but it should check if there's a local ID anywhere in the query
21
25
  * ({<field>: <localId>}) is also a local query
22
26
  */
23
- isLocal(options: CollectionOptions | ItemEntryOptions, query: ApiQuery): boolean;
24
- __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
25
- __fetchLinkedCachedQueryItems<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<ParentIdMap<CachedQueryItem<ItemTypeType>>>;
27
+ isLocal(options: {
28
+ parent: EntryParentNull;
29
+ }, query: ApiQuery): boolean;
30
+ __fetchItemEntriesByQueryData<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CachedQueryOptions, columnsOperationsCache: RequestColumnsOperationsCache<ItemTypeType>, collectionQuery: CollectionQuery, batchedLinkedToQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
31
+ /**
32
+ * @description
33
+ * Fetches collections linked to the passed parents
34
+ * @returns An array of cached query items. The items are in the same order as the parent IDs.
35
+ */
36
+ __fetchLinkedCachedQueryItems<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIdArray: ItemId[], itemType: ItemTypeType, options: CollectionOptions, batchedQuery?: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>[]>;
26
37
  __fetchParentCachedQueryItem<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItemTree<ItemTypeType>>;
27
38
  __fetchChildCachedQueryItems(parentItemType: ApiEnumItemType, parentItemIds: ItemId[], collectionOptions: ChildCollectionOptions, batchQueries?: ItemTypeMap<CollectionQuery>): PromiseInterface<ParentItemMap<CachedQueryItemTree>>;
28
39
  private createBatchQueryMap;