@rentman/rm-core 0.0.0-RM4-44763
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rm-core.js +2 -0
- package/dist/rm-core.js.map +1 -0
- package/dist/types/src/classes/ApiFormatter.d.ts +66 -0
- package/dist/types/src/classes/ApiRequestService.d.ts +18 -0
- package/dist/types/src/classes/ApiResponseProcessor.d.ts +31 -0
- package/dist/types/src/classes/BusinessLogicManager/AantalBusinessLogicRuleBase.d.ts +36 -0
- package/dist/types/src/classes/BusinessLogicManager/AantaltotaalBusinessLogicRuleBase.d.ts +60 -0
- package/dist/types/src/classes/BusinessLogicManager/Afspraak/AfspraakRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/Beschikbaarheid/BeschikbaarheidRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicManager.d.ts +66 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRule.d.ts +81 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleApplyContext.d.ts +32 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleConditionContext.d.ts +41 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleContextBase.d.ts +58 -0
- package/dist/types/src/classes/BusinessLogicManager/Contact/ContactAddressBusinessLogicRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldLinkedItemTypeBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldTypeBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/DefaultContactPersonUpdateBusinessLogicRule.d.ts +30 -0
- package/dist/types/src/classes/BusinessLogicManager/Documents/DocumentTemplateBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarAanschafdatumBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarBarcodeDeleteBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurBetalingsconditieBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurDatumBusinessLogicRule.d.ts +23 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurNumberseriesBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Files/FilesNameExtensionBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieNaaminternBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieTwowayBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Functiegroep/FunctiegroepSubprojectBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantalBusinessLogicRule.d.ts +4 -0
- package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalBulkToSerialBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsCombinationBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsPhysicalCombinationBulkBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalSerialToBulkBusinessLogicRule.d.ts +16 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToPhysicalBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToVirtualBusinessLogicRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalTypePropertiesBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalVerhuurBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/SurfaceArticleSizeBusinessLogicRule.d.ts +23 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemBusinessLogicRuleBase.d.ts +46 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemDurationBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemMateriaalCatBusinessLogicRule.d.ts +25 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemSubprojectBusinessLogicRule.d.ts +48 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeBusinessLogicRule.d.ts +27 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeStartBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeValueStartBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/TimeColumnUtil.d.ts +132 -0
- package/dist/types/src/classes/BusinessLogicManager/OfferteContract/OfferteContractDatumBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/PlanningPersoneelTransport/PlanningPersoneelTransportBusinessLogicRule.d.ts +24 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantalBusinessLogicRule.d.ts +4 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalOptieBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalParentBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalStaysAtLocationBusinessLogicRule.d.ts +32 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectClientChangedBusinessLogicRule.d.ts +31 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectContactProjectNoteBusinessLogicRule.d.ts +25 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectOneSubLocationAlignBusinessRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/ProjectSubproject/ProjectSubprojectDefaultTimeBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderApprovalStatusBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderOwnerBusinessLogicRule.d.ts +16 -0
- package/dist/types/src/classes/BusinessLogicManager/Rate/RateUpdatedBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/RecurrentItem/RecurrentItemRecureindBusinessLogicRule.d.ts +28 -0
- package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieExemplaarAantalBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieLostItemExemplaarLocationBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolEditOwnDataBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolFileAccessBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolPersoneelsplannerToegangBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenBewerkenBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenToegangBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolPurchaseOrderAttachPlanningBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolVisibilityFinancialsBusinessLogicRule.d.ts +35 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolWarehosueTrackingLogAccessBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudCreateFixedBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudUpdateFixedBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectInPlanningBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubLocationAlignBusinessRule.d.ts +27 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubNameAlignBusinessRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdNameChangedBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdSubprojectChangedBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/HoursTypeBusinessLogicRuleBase.d.ts +10 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCalculatedDurationBusinessLogicRule.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCanHaveActivitiesBusinessLogicRule.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/businessLogicRule.decorator.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/registeredBusinessLogicRules.d.ts +66 -0
- package/dist/types/src/classes/ChangesCompilation.d.ts +26 -0
- package/dist/types/src/classes/ChangesDelta.d.ts +81 -0
- package/dist/types/src/classes/ChangesDeltaBase.d.ts +85 -0
- package/dist/types/src/classes/ChangesProcessor.d.ts +35 -0
- package/dist/types/src/classes/ChildChangesDelta.d.ts +38 -0
- package/dist/types/src/classes/ColumnCache.d.ts +22 -0
- package/dist/types/src/classes/ColumnExpansion.d.ts +18 -0
- package/dist/types/src/classes/ColumnHandler.d.ts +16 -0
- package/dist/types/src/classes/ColumnInfo.d.ts +16 -0
- package/dist/types/src/classes/ColumnSet.d.ts +79 -0
- package/dist/types/src/classes/ColumnUtil.d.ts +97 -0
- package/dist/types/src/classes/ConversionMapService.d.ts +23 -0
- package/dist/types/src/classes/CreateRequest.d.ts +16 -0
- package/dist/types/src/classes/CreatedChangesDelta.d.ts +22 -0
- package/dist/types/src/classes/ItemCache.d.ts +26 -0
- package/dist/types/src/classes/ItemCreateService.d.ts +14 -0
- package/dist/types/src/classes/ItemEntryService.d.ts +29 -0
- package/dist/types/src/classes/KeyService.d.ts +10 -0
- package/dist/types/src/classes/LockService.d.ts +28 -0
- package/dist/types/src/classes/ModuleChangesCompilation.d.ts +20 -0
- package/dist/types/src/classes/ParentChangesDelta.d.ts +42 -0
- package/dist/types/src/classes/QueryColumnExtractor.d.ts +16 -0
- package/dist/types/src/classes/QueryContainsLocalIdParser.d.ts +14 -0
- package/dist/types/src/classes/QueryParser.d.ts +18 -0
- package/dist/types/src/classes/QueryParserBase.d.ts +32 -0
- package/dist/types/src/classes/QueryParserIdUpdater.d.ts +16 -0
- package/dist/types/src/classes/QueryService.d.ts +10 -0
- package/dist/types/src/classes/RequestBuffer/RequestBuffer.d.ts +13 -0
- package/dist/types/src/classes/RequestBuffer/RequestBufferBase.d.ts +37 -0
- package/dist/types/src/classes/RequestBuffer/RequestBufferManager.d.ts +24 -0
- package/dist/types/src/classes/RequestBuffer/SingleQueryRequestBuffer.d.ts +18 -0
- package/dist/types/src/classes/RequestColumnExpansion.d.ts +11 -0
- package/dist/types/src/classes/RequestColumnsOperationsCache.d.ts +45 -0
- package/dist/types/src/classes/SocketMessageHandler.d.ts +28 -0
- package/dist/types/src/classes/TemplateCache.d.ts +61 -0
- package/dist/types/src/classes/Util.d.ts +36 -0
- package/dist/types/src/classes/cache/AbstractCache.d.ts +86 -0
- package/dist/types/src/classes/cache/CachedQueryHandlerBase.d.ts +145 -0
- package/dist/types/src/classes/cache/ItemHandlerBase.d.ts +97 -0
- package/dist/types/src/classes/cache/ItemMatcherBase.d.ts +90 -0
- package/dist/types/src/classes/cache/server/ServerCache.d.ts +83 -0
- package/dist/types/src/classes/cache/server/ServerCachedQueryHandler.d.ts +29 -0
- package/dist/types/src/classes/cache/server/ServerItemHandler.d.ts +35 -0
- package/dist/types/src/classes/cache/transaction/TransactionCache.d.ts +342 -0
- package/dist/types/src/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +111 -0
- package/dist/types/src/classes/cache/transaction/TransactionEventHandler.d.ts +17 -0
- package/dist/types/src/classes/cache/transaction/TransactionItemHandler.d.ts +121 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidator.d.ts +25 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidatorBase.d.ts +19 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidatorWithDependencies.d.ts +15 -0
- package/dist/types/src/classes/changes/CollectionItemChangesListenerContext.d.ts +22 -0
- package/dist/types/src/classes/changes/ItemChangesListenerContext.d.ts +7 -0
- package/dist/types/src/classes/changes/ItemChangesListenerContextBase.d.ts +44 -0
- package/dist/types/src/classes/matcher/CompatorQueryNode.d.ts +24 -0
- package/dist/types/src/classes/matcher/CustomQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/GraphQueryParser.d.ts +34 -0
- package/dist/types/src/classes/matcher/IsComparatorQueryNode.d.ts +13 -0
- package/dist/types/src/classes/matcher/LinkedToQueryNode.d.ts +9 -0
- package/dist/types/src/classes/matcher/NonMatchableQueryNode.d.ts +9 -0
- package/dist/types/src/classes/matcher/NotIsComparatorQueryNode.d.ts +14 -0
- package/dist/types/src/classes/matcher/QueryNode.d.ts +49 -0
- package/dist/types/src/classes/matcher/RootQueryNode.d.ts +14 -0
- package/dist/types/src/classes/matcher/SearchQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/SubQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/ValueTransformers.d.ts +41 -0
- package/dist/types/src/classes/matcher/ValuelessEdgeQueryNode.d.ts +11 -0
- package/dist/types/src/classes/matcher/greater-smaller-than-comparator-query.node.d.ts +25 -0
- package/dist/types/src/constants.d.ts +2 -0
- package/dist/types/src/core.d.ts +63 -0
- package/dist/types/src/exceptions/CriticalBusinessLogicRuleException.d.ts +4 -0
- package/dist/types/src/exceptions/ItemAlreadyExistsException.d.ts +4 -0
- package/dist/types/src/exceptions/ItemLockedException.d.ts +2 -0
- package/dist/types/src/exceptions/ItemNotFoundException.d.ts +5 -0
- package/dist/types/src/exceptions/MissingColumnException.d.ts +6 -0
- package/dist/types/src/exceptions/SavingInProgressException.d.ts +2 -0
- package/dist/types/src/exceptions/TransactionPendingException.d.ts +2 -0
- package/dist/types/src/factories/ApiResponseProcessorFactory.d.ts +5 -0
- package/dist/types/src/factories/ChangesCompilationFactory.d.ts +5 -0
- package/dist/types/src/factories/ChangesDeltaFactory.d.ts +13 -0
- package/dist/types/src/factories/CollectionResourceFactory.d.ts +20 -0
- package/dist/types/src/factories/ColumnExpansionFactory.d.ts +7 -0
- package/dist/types/src/factories/ColumnInfoFactory.d.ts +7 -0
- package/dist/types/src/factories/ColumnSetFactory.d.ts +15 -0
- package/dist/types/src/factories/GraphQueryParserFactory.d.ts +10 -0
- package/dist/types/src/factories/ItemCacheFactory.d.ts +7 -0
- package/dist/types/src/factories/ItemResourceFactory.d.ts +7 -0
- package/dist/types/src/factories/ModuleChangesCompilationFactory.d.ts +6 -0
- package/dist/types/src/factories/RequestColumnExpansionFactory.d.ts +4 -0
- package/dist/types/src/factories/RequestColumnsOperationsCacheFactory.d.ts +7 -0
- package/dist/types/src/factories/TransactionCacheFactory.d.ts +12 -0
- package/dist/types/src/index.d.ts +11 -0
- package/dist/types/src/interfaces/AbstractCacheDependencyInterface.d.ts +46 -0
- package/dist/types/src/interfaces/ApiRequestServiceInterface.d.ts +14 -0
- package/dist/types/src/interfaces/ErrorHandlerInterface.d.ts +6 -0
- package/dist/types/src/interfaces/LinkTreeServiceInterface.d.ts +6 -0
- package/dist/types/src/interfaces/ServerCacheDependencyInterface.d.ts +6 -0
- package/dist/types/src/interfaces/SocketMessageInterface.d.ts +3 -0
- package/dist/types/src/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +15 -0
- package/dist/types/src/interfaces/TransactionItemHandlerDependencyInterface.d.ts +16 -0
- package/dist/types/src/internal.d.ts +110 -0
- package/dist/types/src/models/CachedQueryItem.d.ts +33 -0
- package/dist/types/src/models/CollectionEntry.d.ts +16 -0
- package/dist/types/src/models/CollectionOptions.d.ts +111 -0
- package/dist/types/src/models/CollectionResource.d.ts +175 -0
- package/dist/types/src/models/ItemEntry.d.ts +23 -0
- package/dist/types/src/models/ItemOptions.d.ts +25 -0
- package/dist/types/src/models/ItemResource.d.ts +135 -0
- package/dist/types/src/models/LimitedCollectionResource.d.ts +26 -0
- package/dist/types/src/models/OrderedCollectionResource.d.ts +19 -0
- package/dist/types/src/models/Template.d.ts +17 -0
- package/dist/types/src/services/rm-holidays.service.d.ts +31 -0
- package/dist/types/src/types/AggregatedChangesListener.d.ts +99 -0
- package/dist/types/src/types/ApiQuery.d.ts +95 -0
- package/dist/types/src/types/ItemTypesCollection.d.ts +416 -0
- package/package.json +56 -0
- package/readme.md +42 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ChangesDeltaBase, ChangesDeltaBaseItemDeleteDelta, ChangesDeltaBaseItemUpdateDelta, ChangesDeltaItemUpdateMode, FieldMap, ItemEntry, ItemEntryService } from '../internal';
|
|
3
|
+
export type ChildChangesDeltaItemCreateDelta<ItemTypeType extends ApiItemType = any> = {
|
|
4
|
+
entry: ItemEntry<ItemTypeType>;
|
|
5
|
+
fields: FieldMap<ItemTypeType>;
|
|
6
|
+
};
|
|
7
|
+
export interface ChildChangesDeltaItemUpdateDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemUpdateDelta<ItemTypeType> {
|
|
8
|
+
entry: ItemEntry<ItemTypeType>;
|
|
9
|
+
changes: {
|
|
10
|
+
fields: Readonly<FieldMap<ItemTypeType>>;
|
|
11
|
+
};
|
|
12
|
+
mode: ChangesDeltaItemUpdateMode;
|
|
13
|
+
}
|
|
14
|
+
export interface ChildChangesDeltaItemDeleteDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemDeleteDelta<ItemTypeType> {
|
|
15
|
+
changes: FieldMap<ItemTypeType>;
|
|
16
|
+
isCascaded: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description
|
|
20
|
+
* The difference between {@link ChildChangesDelta} and {@link ChangesDelta} is that the {@link ChildChangesDelta}
|
|
21
|
+
* assumes 'created' entries are already existing, so it has a different format.
|
|
22
|
+
*
|
|
23
|
+
* Use this when calling {@link TransactionCache.applyChangesFromChild}.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ChildChangesDelta extends ChangesDeltaBase<ChildChangesDeltaItemDeleteDelta<any>> {
|
|
26
|
+
updated: {
|
|
27
|
+
[itemEntryId: number]: ChildChangesDeltaItemUpdateDelta<any>;
|
|
28
|
+
};
|
|
29
|
+
created: {
|
|
30
|
+
[itemEntryId: string]: ChildChangesDeltaItemCreateDelta;
|
|
31
|
+
};
|
|
32
|
+
constructor(itemEntryService: ItemEntryService);
|
|
33
|
+
setItemUpdated<ItemTypeType extends ApiItemType>(entry: ItemEntry<ItemTypeType>, fields: Readonly<Partial<FieldMap<ItemTypeType>>>, mode?: ChangesDeltaItemUpdateMode): this;
|
|
34
|
+
setItemDeleted(tuple: ChildChangesDeltaItemDeleteDelta<any>): this;
|
|
35
|
+
setItemsDeleted(deleted: ChildChangesDeltaItemDeleteDelta<any>[]): this;
|
|
36
|
+
setItemCreated<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: Partial<FieldMap<ItemTypeType>>): void;
|
|
37
|
+
isEmpty(): boolean;
|
|
38
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ApiItemType, GetColumnType, ResponseColumn } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumnArray, ApiRequestColumns, ApiResponseProcessor, ItemTypeColumnId, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
export declare class ColumnCache {
|
|
4
|
+
private cache;
|
|
5
|
+
private pendingCache;
|
|
6
|
+
private allColumns;
|
|
7
|
+
setColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, responseColumn: ResponseColumn<ItemTypeType>): ResponseColumn<ItemTypeType>;
|
|
8
|
+
setColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap, columnFilter: string | false): ResponseColumnItemTypeMap;
|
|
9
|
+
setPendingColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, columnId: ItemTypeColumnId<ItemTypeType>, promise: Promise<ApiResponseProcessor>): void;
|
|
10
|
+
clearPendingColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumnArray<ItemTypeType>): void;
|
|
11
|
+
setPendingColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumnArray<ItemTypeType>, promise: Promise<ApiResponseProcessor>): void;
|
|
12
|
+
retrieve<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>): {
|
|
13
|
+
cached: Partial<ResponseColumnItemTypeMap>;
|
|
14
|
+
missing: ApiRequestColumns<ItemTypeType>;
|
|
15
|
+
pending: Promise<ApiRequestColumns<ItemTypeType>> | null;
|
|
16
|
+
};
|
|
17
|
+
containsAll(itemType: ApiItemType): boolean;
|
|
18
|
+
getColumns(itemType: ApiItemType): ResponseColumnItemTypeMap;
|
|
19
|
+
getColumn<ItemTypeType extends ApiItemType, ColumnId extends ItemTypeColumnId<ItemTypeType>>(itemType: ItemTypeType, columnId: ColumnId): GetColumnType<ItemTypeType, ColumnId> | undefined;
|
|
20
|
+
private retrieveColumns;
|
|
21
|
+
private retrieveColumn;
|
|
22
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumns, ColumnExpansionResult, ColumnInfo, ColumnInfoFactory, ColumnSet, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* A ColumnExpansion is used to make sure {@link ItemEntry ItemEntries} that have the same {@link ColumnSet ColumnSet} (matched on {@link ColumnSet.id ColumnSet.id}) will all get the same new expanded ColumnSet
|
|
6
|
+
*/
|
|
7
|
+
export declare class ColumnExpansion<ItemTypeType extends ApiItemType> {
|
|
8
|
+
private columnInfoFactory;
|
|
9
|
+
itemType: ItemTypeType;
|
|
10
|
+
responseColumns: ResponseColumnItemTypeMap;
|
|
11
|
+
private expansionMap;
|
|
12
|
+
private requestColumnsTrue;
|
|
13
|
+
private requestColumns;
|
|
14
|
+
constructor(columnInfoFactory: ColumnInfoFactory, itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap);
|
|
15
|
+
run(columnSet: ColumnSet<ItemTypeType>): ColumnExpansionResult<ItemTypeType>;
|
|
16
|
+
aggregateRootColumns(): ColumnInfo<ItemTypeType>[];
|
|
17
|
+
private expandRootColumnMap;
|
|
18
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiItemType, ResponseColumn, ResponseColumnCustom } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumns, ApiRequestService, ColumnCache, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
export declare class ColumnHandler {
|
|
4
|
+
private apiRequestService;
|
|
5
|
+
private cache;
|
|
6
|
+
constructor(apiRequestService: ApiRequestService, cache: ColumnCache);
|
|
7
|
+
setColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, responseColumn: ResponseColumn<ItemTypeType>): ResponseColumn<ItemTypeType>;
|
|
8
|
+
setColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap, filter?: string | false): ResponseColumnItemTypeMap;
|
|
9
|
+
fetchItemTypeTranslations(itemTypes: ApiItemType[]): Promise<{
|
|
10
|
+
[itemType: string]: string;
|
|
11
|
+
}>;
|
|
12
|
+
fetch<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, params?: any): Promise<ResponseColumnItemTypeMap>;
|
|
13
|
+
fetchAll(itemType: ApiItemType): Promise<ResponseColumnItemTypeMap>;
|
|
14
|
+
fetchEditableCustomColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): Promise<ResponseColumnCustom[]>;
|
|
15
|
+
private request;
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiItemType, GetColumnType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumnArray, ItemTypeColumnId } from '..';
|
|
3
|
+
export declare class ColumnInfo<ItemTypeType extends ApiItemType = any, ColumnId extends ItemTypeColumnId<ItemTypeType> = any> {
|
|
4
|
+
readonly apiColumn: GetColumnType<ItemTypeType, ColumnId>;
|
|
5
|
+
readonly parent: ColumnInfo | null;
|
|
6
|
+
id: ColumnId;
|
|
7
|
+
level: number;
|
|
8
|
+
path: string;
|
|
9
|
+
tailPath: string;
|
|
10
|
+
itemType: ItemTypeType | null;
|
|
11
|
+
children: ColumnInfo<ApiItemType>[];
|
|
12
|
+
isLeaf: boolean;
|
|
13
|
+
constructor(apiColumn: GetColumnType<ItemTypeType, ColumnId>, parent?: ColumnInfo | null);
|
|
14
|
+
toRequestColumns(): ApiRequestColumnArray<ItemTypeType>;
|
|
15
|
+
setChildren(itemType: ItemTypeType, children: ColumnInfo<ApiItemType>[]): this;
|
|
16
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumnArray, ApiRequestColumns, ColumnInfo, ColumnSetFactory, RequestColumnMergeResult, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
export type ColumnExpansionResult<ItemTypeType extends ApiItemType> = {
|
|
4
|
+
merged: ColumnSet<ItemTypeType>;
|
|
5
|
+
difference: ColumnSet<ItemTypeType> | null;
|
|
6
|
+
};
|
|
7
|
+
export declare class ColumnSet<ItemTypeType extends ApiItemType> {
|
|
8
|
+
private columnSetFactory;
|
|
9
|
+
readonly itemType: ItemTypeType;
|
|
10
|
+
readonly request: ApiRequestColumnArray<ItemTypeType>;
|
|
11
|
+
readonly requestColumnsTrue: boolean;
|
|
12
|
+
readonly response: ResponseColumnItemTypeMap;
|
|
13
|
+
readonly id: number;
|
|
14
|
+
link: ColumnInfo<ItemTypeType> | null;
|
|
15
|
+
/**
|
|
16
|
+
* The item's own columns
|
|
17
|
+
*/
|
|
18
|
+
readonly main: ColumnInfo<ItemTypeType>[];
|
|
19
|
+
/**
|
|
20
|
+
* Columns which contain children, can be used to determine which derived values need to be refreshed when the root value changes.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* columns: [
|
|
24
|
+
* {
|
|
25
|
+
* // 'exemplaar' is the root
|
|
26
|
+
* exemplaar: [
|
|
27
|
+
* 'displayname',
|
|
28
|
+
* ],
|
|
29
|
+
* },
|
|
30
|
+
* ]
|
|
31
|
+
*/
|
|
32
|
+
readonly root: ColumnInfo<ItemTypeType>[];
|
|
33
|
+
/**
|
|
34
|
+
* Columns which should be searchable in the frontend (mainly used for grids)
|
|
35
|
+
*/
|
|
36
|
+
readonly searchable: {
|
|
37
|
+
main: ColumnInfo<ItemTypeType>[];
|
|
38
|
+
derived: ColumnInfo<ItemTypeType>[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Custom columns fetched for this set
|
|
42
|
+
*/
|
|
43
|
+
readonly custom: {
|
|
44
|
+
main: ColumnInfo<ItemTypeType>[];
|
|
45
|
+
derived: ColumnInfo<ItemTypeType>[];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Columns which reference another item
|
|
49
|
+
*/
|
|
50
|
+
readonly item: {
|
|
51
|
+
main: ColumnInfo<ItemTypeType>[];
|
|
52
|
+
derived: ColumnInfo<ItemTypeType>[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Warning: Contains both main and derived columns!
|
|
56
|
+
*/
|
|
57
|
+
readonly leaf: {
|
|
58
|
+
main: ColumnInfo<ItemTypeType>[];
|
|
59
|
+
derived: ColumnInfo<ItemTypeType>[];
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Warning: Contains both main and derived columns!
|
|
63
|
+
*/
|
|
64
|
+
readonly filtered: {
|
|
65
|
+
main: ColumnInfo<ItemTypeType>[];
|
|
66
|
+
derived: ColumnInfo<ItemTypeType>[];
|
|
67
|
+
};
|
|
68
|
+
constructor(columnSetFactory: ColumnSetFactory, itemType: ItemTypeType, request: ApiRequestColumnArray<ItemTypeType>, requestColumnsTrue: boolean, response: ResponseColumnItemTypeMap);
|
|
69
|
+
groupColumnInfo(columnInfo: ColumnInfo): void;
|
|
70
|
+
toJSON(): any[];
|
|
71
|
+
/**
|
|
72
|
+
* @param columnsToCompare
|
|
73
|
+
* @param columnsToCompareTrue - Set this to true if you know `columnsToCompare` contains all request columns.
|
|
74
|
+
*/
|
|
75
|
+
isSupersetOf(columnsToCompare: ApiRequestColumns<ItemTypeType>, columnsToCompareTrue?: boolean): boolean;
|
|
76
|
+
mergeRequestColumns(requestColumns: ApiRequestColumns<ItemTypeType>): RequestColumnMergeResult;
|
|
77
|
+
mergeResponseColumns(responseColumns: ResponseColumnItemTypeMap): ResponseColumnItemTypeMap;
|
|
78
|
+
expand(requestColumns: ApiRequestColumnArray<ItemTypeType>, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap): ColumnExpansionResult<ItemTypeType>;
|
|
79
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ApiEnumApiType, ApiItemType, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
|
|
2
|
+
import { UnknownResponseColumn } from '@rentman/backend-types/dist/manual/api-response-column';
|
|
3
|
+
import { ApiRequestColumn, ApiRequestColumnArray, ApiRequestColumns, ItemTypeColumnId, MutableApiRequestColumnArray, RequestColumnsTuple, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
|
|
4
|
+
export type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
|
|
5
|
+
merged: T;
|
|
6
|
+
difference: U;
|
|
7
|
+
};
|
|
8
|
+
export declare enum API_COLUMN_LOCATION {
|
|
9
|
+
NO = 0,
|
|
10
|
+
IMPORT = 1,
|
|
11
|
+
EXPORT = 2,
|
|
12
|
+
GRID = 4,
|
|
13
|
+
TEMPLATE = 8,
|
|
14
|
+
EDIT = 16,
|
|
15
|
+
API = 20,
|
|
16
|
+
SOCKET = 32,
|
|
17
|
+
ALL = 63,
|
|
18
|
+
GRID_SELECTABLE = 32768,
|
|
19
|
+
LOCATION_LABELS = 524288
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description
|
|
23
|
+
* A service which provides functions to help on {@link ResponseColumn ResponseColumns}
|
|
24
|
+
*
|
|
25
|
+
* @warning
|
|
26
|
+
* The code in these functions can be *very hot* on large databases, therefore performance must be kept in mind.
|
|
27
|
+
* This is also the reason why all column types are written out instead of using the enum
|
|
28
|
+
*/
|
|
29
|
+
export declare abstract class ColumnUtil {
|
|
30
|
+
static isStringColumn(column: UnknownResponseColumn): boolean;
|
|
31
|
+
static isFloatColumn(column: UnknownResponseColumn): boolean;
|
|
32
|
+
static isIntColumn(column: UnknownResponseColumn): boolean;
|
|
33
|
+
static isNumberColumn(column: UnknownResponseColumn): boolean;
|
|
34
|
+
static isCustomColumn<ItemTypeType extends ApiItemType>(column: ResponseColumn<ItemTypeType>): column is ResponseColumnCustom<ItemTypeType>;
|
|
35
|
+
static isAggregateColumn(column: UnknownResponseColumn): boolean;
|
|
36
|
+
static isItemColumn<ItemTypeType extends ApiItemType>(column: UnknownResponseColumn | ResponseColumn<ItemTypeType>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType>;
|
|
37
|
+
static isDateColumn(column: UnknownResponseColumn): boolean;
|
|
38
|
+
static isRenderedColumn(column: UnknownResponseColumn): boolean;
|
|
39
|
+
static isFilteredColumn(column: UnknownResponseColumn): boolean;
|
|
40
|
+
static hasLocationProperty(column: UnknownResponseColumn, location: API_COLUMN_LOCATION): boolean;
|
|
41
|
+
static isEditableColumn(column: UnknownResponseColumn): boolean;
|
|
42
|
+
static isSearchableColumn(column: UnknownResponseColumn): boolean;
|
|
43
|
+
static getComparators(column: UnknownResponseColumn & {
|
|
44
|
+
type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
|
|
45
|
+
}): ['=', '>', '<'];
|
|
46
|
+
static getComparators(column: UnknownResponseColumn & {
|
|
47
|
+
type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION | ApiEnumApiType.TYPE_TIMESTAMP | ApiEnumApiType.TYPE_TIMESTAMP_MS;
|
|
48
|
+
}): ['>', '<'];
|
|
49
|
+
static getComparators(column: UnknownResponseColumn & {
|
|
50
|
+
type: ApiEnumApiType.TYPE_TIME;
|
|
51
|
+
}): ['>', '<', '=', '!='];
|
|
52
|
+
static getComparators(column: UnknownResponseColumn): ['=', '!='];
|
|
53
|
+
static containsColumn<ItemTypeType extends ApiItemType = ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>, destination: ApiRequestColumnArray<ItemTypeType>): boolean;
|
|
54
|
+
static containsDerivedColumns(requestColumns: ApiRequestColumnArray): boolean;
|
|
55
|
+
static responseColumnsAvailable(itemType: ApiItemType, requestColumns: ApiRequestColumnArray, responseColumnMap: ResponseColumnItemTypeMap): boolean;
|
|
56
|
+
static copyRequestColumns<ItemTypeType extends ApiItemType>(columns: true): true;
|
|
57
|
+
static copyRequestColumns<ItemTypeType extends ApiItemType>(columns: ApiRequestColumns<ItemTypeType>): ApiRequestColumns<ItemTypeType>;
|
|
58
|
+
static copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
|
|
59
|
+
static mergeRequestColumns<T extends true, U extends ApiRequestColumns>(first: T, second: U): RequestColumnMergeResult<true, []>;
|
|
60
|
+
static mergeRequestColumns<T extends ApiRequestColumnArray, U extends true>(first: T, second: U): RequestColumnMergeResult<true, true>;
|
|
61
|
+
static mergeRequestColumns<T extends ApiRequestColumnArray, U extends ApiRequestColumnArray>(first: T, second: U): RequestColumnMergeResult<[...T, ...U], ApiRequestColumnArray>;
|
|
62
|
+
static mergeRequestColumns<T extends ApiRequestColumns, U extends ApiRequestColumns>(first: T, second: U): RequestColumnMergeResult<ApiRequestColumns, ApiRequestColumns>;
|
|
63
|
+
static mergeRequestColumn<ItemTypeType extends ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>, destination: MutableApiRequestColumnArray<ItemTypeType>): ApiRequestColumn | null;
|
|
64
|
+
static createRequestColumnSetId(requestColumns: ApiRequestColumns): RequestColumnsTuple['string'];
|
|
65
|
+
static getRequestColumnId(requestColumn: ApiRequestColumn): string;
|
|
66
|
+
static parseRequestColumn<ItemTypeType extends ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>): {
|
|
67
|
+
id: ItemTypeColumnId<ItemTypeType>;
|
|
68
|
+
children: ApiRequestColumnArray;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* @description
|
|
72
|
+
* Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
|
|
73
|
+
*
|
|
74
|
+
* @returns
|
|
75
|
+
* - Merged: The merged set of columns
|
|
76
|
+
* - Difference: Columns that are in second, but not in first
|
|
77
|
+
*/
|
|
78
|
+
static mergeResponseColumns(first: Partial<ResponseColumnItemTypeMap>, second: Partial<ResponseColumnItemTypeMap>): {
|
|
79
|
+
merged: ResponseColumnItemTypeMap;
|
|
80
|
+
difference: ResponseColumnItemTypeMap;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* @description
|
|
84
|
+
* Merges two sets of {@link ResponseColumnMap response columns}.
|
|
85
|
+
*
|
|
86
|
+
* @returns
|
|
87
|
+
* - Merged: The merged set of columns
|
|
88
|
+
* - Difference: Columns that are in second, but not in first
|
|
89
|
+
*/
|
|
90
|
+
static mergeResponseColumnMap<ItemTypeType extends ApiItemType>(first: ResponseColumnMap<ItemTypeType>, second: ResponseColumnMap<ItemTypeType>): {
|
|
91
|
+
merged: ResponseColumnMap<ItemTypeType>;
|
|
92
|
+
difference: ResponseColumnMap<ItemTypeType>;
|
|
93
|
+
};
|
|
94
|
+
static findRequestColumn(columnId: string, requestColumns: ApiRequestColumnArray): number;
|
|
95
|
+
static requestColumnToPath(requestColumn: ApiRequestColumn): string[];
|
|
96
|
+
private static createRequestColumnId;
|
|
97
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ApiResponseProcessor, ColumnInfo, EntryParentNull, FieldMap, ItemEntry, ItemIdConversionMap } from '../internal';
|
|
3
|
+
/**
|
|
4
|
+
* @description A 'ConversionMap' is used to update a set of item IDs to another. This happens when processing back-end
|
|
5
|
+
* responses (create / template) or cloning items in the front-end. A conversion map is grouped by item type, as item
|
|
6
|
+
* ID's are not unique across types.
|
|
7
|
+
*
|
|
8
|
+
* TODO: In the future, we should create a class and a 'ConversionMapFactory'.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ConversionMapService {
|
|
11
|
+
createLocalConversionMap<ItemTypeType extends ApiItemType>(rootItemType: ItemTypeType, rootLocalItemId: ItemId, apiResponse: ApiResponseProcessor<ItemTypeType>): ItemIdConversionMap;
|
|
12
|
+
expandConversionMap(itemType: ApiItemType, itemId: ItemId, conversionMap: ItemIdConversionMap, newItemId?: ItemId): ItemId;
|
|
13
|
+
batchExpandConversionMap(itemEntries: ItemEntry<any>[], conversionMap: ItemIdConversionMap): ItemIdConversionMap;
|
|
14
|
+
getConversionValue(itemType: ApiItemType, itemId: ItemId, map: ItemIdConversionMap): ItemId | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* @description
|
|
17
|
+
* Updates the columns in `fields` using the `parent` and `conversionMap`.
|
|
18
|
+
*
|
|
19
|
+
* @param parent - When retrieving an item the 'link' column is not present in the template response, and is added at a later stage. The value for this column can be read from this parameter.
|
|
20
|
+
*/
|
|
21
|
+
updateItemValues<ItemTypeType extends ApiItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, itemColumns: ColumnInfo<ItemTypeType>[], conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
|
|
22
|
+
private expandLocalConversionMap;
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { CreateCompilation, CreateRequestCompilationParent, CreateRequestEntry, RequestColumnExpansionFactory, TransactionCache } from '../internal';
|
|
3
|
+
export declare class CreateRequest<ItemTypeType extends ApiItemType> {
|
|
4
|
+
private requestColumnExpansionFactory;
|
|
5
|
+
private compilation;
|
|
6
|
+
private transaction;
|
|
7
|
+
private breakupByParent;
|
|
8
|
+
private uniqueTransactionId?;
|
|
9
|
+
requests: CreateRequestEntry<ItemTypeType>[];
|
|
10
|
+
constructor(requestColumnExpansionFactory: RequestColumnExpansionFactory, compilation: CreateCompilation, transaction: TransactionCache, breakupByParent?: boolean, uniqueTransactionId?: string | undefined);
|
|
11
|
+
finalizeRequest(requestResource: CreateRequestEntry<ItemTypeType>): CreateRequestEntry<ItemTypeType>;
|
|
12
|
+
setRequestParent(parentType: CreateRequestCompilationParent, requestEntry: CreateRequestEntry<ItemTypeType>): boolean;
|
|
13
|
+
run(): CreateRequestEntry<ItemTypeType>[];
|
|
14
|
+
initializeRequest(): CreateRequestEntry<ItemTypeType>;
|
|
15
|
+
private extendRequest;
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ColumnSet, FieldMap } from '../internal';
|
|
3
|
+
import { MatchesAccumulator } from './matcher/QueryNode';
|
|
4
|
+
import { RootQueryNode } from './matcher/RootQueryNode';
|
|
5
|
+
export type ChangesDeltaItemCreateDelta<ItemTypeType extends ApiItemType = any> = {
|
|
6
|
+
itemId: ItemId;
|
|
7
|
+
fields: FieldMap<ItemTypeType>;
|
|
8
|
+
columns: ColumnSet<ItemTypeType>;
|
|
9
|
+
isRoot: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare class CreatedChangesDelta {
|
|
12
|
+
private tuples;
|
|
13
|
+
remove(itemType: ApiItemType, itemId: ItemId): boolean;
|
|
14
|
+
add<ItemTypeType extends ApiItemType>(itemId: ItemId, fields: Partial<FieldMap<ItemTypeType>>, columns: ColumnSet<ItemTypeType>, isRoot?: boolean): void;
|
|
15
|
+
isEmpty(): boolean;
|
|
16
|
+
getTuplesIterator<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): IterableIterator<ChangesDeltaItemCreateDelta<ItemTypeType>>;
|
|
17
|
+
forEach(callback: (tuple: ChangesDeltaItemCreateDelta, itemType: ApiItemType) => void): void;
|
|
18
|
+
forEachOfItemType(itemType: ApiItemType, callback: (tuple: ChangesDeltaItemCreateDelta) => void): void;
|
|
19
|
+
contains(itemType: ApiItemType): boolean;
|
|
20
|
+
getTupleByItemId<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, itemId: ItemId): ChangesDeltaItemCreateDelta<ItemTypeType> | undefined;
|
|
21
|
+
matchTuplesToQueryGraph<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, queryGraph: RootQueryNode<ItemTypeType>, matchesAccumulator: MatchesAccumulator<ChangesDeltaItemCreateDelta<ItemTypeType>>): MatchesAccumulator<ChangesDeltaItemCreateDelta<ItemTypeType>>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { GraphQueryParserFactory } from '../factories/GraphQueryParserFactory';
|
|
3
|
+
import { AbstractCache, ApiQuery, ItemEntry } from '../internal';
|
|
4
|
+
export declare class ItemCache {
|
|
5
|
+
private graphQueryParserFactory;
|
|
6
|
+
private transaction;
|
|
7
|
+
private entries;
|
|
8
|
+
private entriesByEntryId;
|
|
9
|
+
constructor(graphQueryParserFactory: GraphQueryParserFactory, transaction: AbstractCache);
|
|
10
|
+
getByEntryId(itemEntryId: ItemEntry['id']): ItemEntry;
|
|
11
|
+
containsByEntryId(itemEntryId: ItemEntry['id']): boolean;
|
|
12
|
+
some(callback: (itemEntry: ItemEntry) => boolean): boolean;
|
|
13
|
+
getByItemType<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
|
|
14
|
+
getByQuery<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, query: ApiQuery<ItemTypeType>): ItemEntry<ItemTypeType>[];
|
|
15
|
+
getLocalByQuery<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, query: ApiQuery<ItemTypeType>): ItemEntry<ItemTypeType>[];
|
|
16
|
+
getByParent<ItemTypeType extends ApiItemType>(parentType: ApiItemType, parentId: ItemId, itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
|
|
17
|
+
forEach(callback: (itemEntry: ItemEntry) => void): void;
|
|
18
|
+
[Symbol.iterator](): Iterator<ItemEntry>;
|
|
19
|
+
toArray(): ItemEntry[];
|
|
20
|
+
add<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>): ItemEntry<ItemTypeType>;
|
|
21
|
+
get<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, itemId: string | ItemId): ItemEntry<ItemTypeType>;
|
|
22
|
+
contains(itemType: ApiItemType, itemId: string | ItemId): boolean;
|
|
23
|
+
updateItemId<T extends ItemEntry<any>>(itemEntry: T, oldItemId: string | ItemId): T;
|
|
24
|
+
clear(itemEntry?: ItemEntry<any>): boolean;
|
|
25
|
+
clearByItemId(itemType: ApiItemType, itemId: ItemId): boolean;
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ChangesDelta, ConversionMapService, EntryParentNull, FieldMap, FilterItemEntryCallback, ItemIdConversionMap, ModifyFieldsCallback, RequestParameters, Template, TemplateCache } from '../internal';
|
|
3
|
+
export declare class ItemCreateService {
|
|
4
|
+
private conversionMapService;
|
|
5
|
+
private templateCache;
|
|
6
|
+
constructor(conversionMapService: ConversionMapService, templateCache: TemplateCache);
|
|
7
|
+
/**
|
|
8
|
+
* @description
|
|
9
|
+
* Fetches a new {@link Template template} and sets the items created on the passed {@link ChangesDelta}
|
|
10
|
+
*/
|
|
11
|
+
createItemsFromValues<ItemTypeType extends ApiItemType, ColumnIds extends (keyof ApiFields[ItemTypeType])[] = (keyof ApiFields[ItemTypeType])[]>(changesDelta: ChangesDelta, itemType: ItemTypeType, valuesArray: Partial<FieldMap<ItemTypeType, ColumnIds>>[], parent?: EntryParentNull, templateOptions?: Partial<RequestParameters<ItemTypeType>>): Promise<void[]>;
|
|
12
|
+
processTemplate<ItemTypeType extends ApiItemType>(changesDelta: ChangesDelta, itemType: ItemTypeType, itemId: ItemId, parent: EntryParentNull, template: Template<ItemTypeType>, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback, isRoot?: boolean): void;
|
|
13
|
+
processTemplateLinkItems<ParentItemType extends ApiItemType>(changesDelta: ChangesDelta, parentType: ParentItemType, localParentId: ItemId, template: Template<any>, itemIdConversion: ItemIdConversionMap, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ApiEnumApiType, ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { EntryParent, EntryParentNull, FieldMap, GetColumnIdsOfType, ItemEntry, LinkTreeServiceInterface } from '../internal';
|
|
3
|
+
type TextColumn<ItemTypeType extends ApiItemType> = GetColumnIdsOfType<ItemTypeType, ApiEnumApiType.TYPE_TEXT>;
|
|
4
|
+
export declare class ItemEntryService {
|
|
5
|
+
private userId;
|
|
6
|
+
private linkTreeService;
|
|
7
|
+
constructor(userId: ItemId, linkTreeService: LinkTreeServiceInterface);
|
|
8
|
+
matchParent(oldParent: EntryParentNull, newParent: EntryParentNull): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @description
|
|
11
|
+
* Gets the fields required to set the parent
|
|
12
|
+
*
|
|
13
|
+
* @remark
|
|
14
|
+
* Opposite of {@link ItemEntryService.getParentByFields ItemEntryService.getParentByFields}
|
|
15
|
+
*/
|
|
16
|
+
getLinkFieldsByParent<ParentItemType extends ApiItemType, ItemTypeType extends ApiItemType>(parent: EntryParent<ParentItemType>, itemType: ItemTypeType): Partial<FieldMap<ItemTypeType>>;
|
|
17
|
+
/**
|
|
18
|
+
* @description
|
|
19
|
+
* Gets an {@link EntryParent EntryParent} object from the fields
|
|
20
|
+
*
|
|
21
|
+
* @remark
|
|
22
|
+
* Opposite of {@link ItemEntryService.getLinkFieldsByParent ItemEntryService.getLinkFieldsByParent}
|
|
23
|
+
*/
|
|
24
|
+
getParentByFields<ItemTypeType extends ApiItemType>(parentType: ApiItemType, itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): EntryParent;
|
|
25
|
+
getFullName(firstName: string, infix: string, lastName: string): string;
|
|
26
|
+
getTitleField<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): TextColumn<ItemTypeType>;
|
|
27
|
+
getLocalDefaultValues<ItemTypeType extends ApiItemType>(): FieldMap<ItemTypeType, ['permissions', 'creator', 'created']>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ItemId } from '@rentman/backend-types';
|
|
2
|
+
export declare abstract class KeyService {
|
|
3
|
+
private static readonly NEW_PREFIX;
|
|
4
|
+
private static idCounter;
|
|
5
|
+
static getCssKey(...args: (string | number)[]): string;
|
|
6
|
+
static getLocalId(): ItemId;
|
|
7
|
+
static isLocalId(itemId: any): boolean;
|
|
8
|
+
static isNewId(itemId: any): boolean;
|
|
9
|
+
private static incrementIdCounter;
|
|
10
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { ItemId } from '@rentman/backend-types';
|
|
3
|
+
import { ApiRequestService, FieldMap, ItemEntry, ItemMap } from '../internal';
|
|
4
|
+
type LockTokenError = {
|
|
5
|
+
isForeign: true;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
export type LockToken = FieldMap<'Locktoken', ['token', 'id']> | LockTokenError;
|
|
9
|
+
export declare class LockService {
|
|
10
|
+
private apiRequestService;
|
|
11
|
+
private lockItems;
|
|
12
|
+
private promises;
|
|
13
|
+
constructor(apiRequestService: ApiRequestService);
|
|
14
|
+
getLocksSignal(): Signal<ItemMap<LockToken>>;
|
|
15
|
+
getLocks(): ItemMap<LockToken>;
|
|
16
|
+
hasLock(lockTokenId: ItemId): boolean;
|
|
17
|
+
isLocked(itemEntry: ItemEntry): boolean;
|
|
18
|
+
getMessage(itemEntry: ItemEntry): undefined | string;
|
|
19
|
+
fetchLock(itemEntry: ItemEntry): Promise<LockToken>;
|
|
20
|
+
deleteLock(itemEntry: ItemEntry): Promise<void>;
|
|
21
|
+
isRemoteLock(token: LockToken): token is LockTokenError;
|
|
22
|
+
private clearLock;
|
|
23
|
+
private requestLock;
|
|
24
|
+
private getValue;
|
|
25
|
+
private setPromise;
|
|
26
|
+
private setToken;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestItemMap, LinkTreeServiceInterface, TransactionCache } from '../internal';
|
|
3
|
+
export type ModuleChangesCompilationResult = {
|
|
4
|
+
itemType: ApiItemType;
|
|
5
|
+
itemId: ItemId;
|
|
6
|
+
items: ApiRequestItemMap;
|
|
7
|
+
};
|
|
8
|
+
export declare class ModuleChangesCompilation {
|
|
9
|
+
private linkTreeService;
|
|
10
|
+
private transaction;
|
|
11
|
+
destination: ApiRequestItemMap;
|
|
12
|
+
private itemsMappedOnParent;
|
|
13
|
+
private transactionChain;
|
|
14
|
+
constructor(linkTreeService: LinkTreeServiceInterface, transaction: TransactionCache);
|
|
15
|
+
process(): ModuleChangesCompilationResult;
|
|
16
|
+
private constructChildItemMap;
|
|
17
|
+
private processItems;
|
|
18
|
+
private processItem;
|
|
19
|
+
private getItemsByParent;
|
|
20
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ChangesDeltaBase, ChangesDeltaBaseItemUpdateDelta, ChangesDeltaItemUpdateMode, ChildChangesDeltaItemCreateDelta, FieldMap, ItemEntry, ItemEntryService } from '../internal';
|
|
3
|
+
export interface ParentChangesDeltaItemUpdateDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemUpdateDelta<ItemTypeType> {
|
|
4
|
+
entry: ItemEntry<ItemTypeType>;
|
|
5
|
+
changes: {
|
|
6
|
+
fields: Readonly<FieldMap<ItemTypeType>>;
|
|
7
|
+
};
|
|
8
|
+
previous: Partial<FieldMap<ItemTypeType>> | null;
|
|
9
|
+
mode: ChangesDeltaItemUpdateMode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @description
|
|
13
|
+
* ChangesDelta used internally by the core
|
|
14
|
+
*
|
|
15
|
+
* ----------
|
|
16
|
+
*
|
|
17
|
+
* The difference between {@link ParentChangesDelta ParentChangesDelta} and {@link ChangesDelta ChangesDelta} is that the ParentChangesDelta
|
|
18
|
+
* assumes 'created' entries are already existing, and deletedEntries don't have changes (since you cannot undo an action that happened on a parent on a child transaction)
|
|
19
|
+
*
|
|
20
|
+
* Use this when calling {@link TransactionCache.applyChangesFromParent applyChangesFromParent}
|
|
21
|
+
*/
|
|
22
|
+
export declare class ParentChangesDelta extends ChangesDeltaBase {
|
|
23
|
+
updated: {
|
|
24
|
+
[itemEntryId: number]: ParentChangesDeltaItemUpdateDelta<any>;
|
|
25
|
+
};
|
|
26
|
+
created: {
|
|
27
|
+
[itemEntryId: string]: ChildChangesDeltaItemCreateDelta;
|
|
28
|
+
};
|
|
29
|
+
constructor(itemEntryService: ItemEntryService, queryItemTypes?: Iterable<ApiItemType>);
|
|
30
|
+
/**
|
|
31
|
+
* @param entry
|
|
32
|
+
* @param fields
|
|
33
|
+
* @param previous - The values of the affected fields before the changes were applied, or `null` if no changes have
|
|
34
|
+
* been made. Because of the nature of item changes also includes values on ancestor transactions.
|
|
35
|
+
* @param mode
|
|
36
|
+
*/
|
|
37
|
+
setItemUpdated<ItemTypeType extends ApiItemType>(entry: ItemEntry<ItemTypeType>, fields: Readonly<Partial<FieldMap<ItemTypeType>>>, previous?: Partial<FieldMap<ItemTypeType>> | null, mode?: ChangesDeltaItemUpdateMode): this;
|
|
38
|
+
setItemDeleted(itemEntry: ItemEntry<any>): this;
|
|
39
|
+
setItemsDeleted(deleted: ItemEntry<any>[]): this;
|
|
40
|
+
setItemCreated<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
|
|
41
|
+
isEmpty(): boolean;
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, ApiRequestColumnArray, LinkTreeServiceInterface, QueryParserBase } from '../internal';
|
|
3
|
+
export declare class QueryColumnExtractor<ItemTypeType extends ApiItemType> extends QueryParserBase<ApiRequestColumnArray> {
|
|
4
|
+
private linkTreeService;
|
|
5
|
+
private itemType;
|
|
6
|
+
constructor(linkTreeService: LinkTreeServiceInterface, itemType: ItemTypeType);
|
|
7
|
+
protected parseEmptyQuery(): ApiRequestColumnArray<ItemTypeType>;
|
|
8
|
+
protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<ItemTypeType>;
|
|
9
|
+
protected parseSearchQuery(): ApiRequestColumnArray<ItemTypeType>;
|
|
10
|
+
protected parseCustomQuery(): ApiRequestColumnArray<ItemTypeType>;
|
|
11
|
+
protected parseComparatorQuery<QueryItemType extends ApiItemType, ColumnId extends keyof ApiFields[QueryItemType]>(key: ApiQueryConditionComparator<QueryItemType, ColumnId>['key']): ApiRequestColumnArray<QueryItemType>;
|
|
12
|
+
protected parseInQuery<QueryItemType extends ApiItemType, ColumnId extends keyof ApiFields[QueryItemType]>(key: ApiQueryConditionIn<QueryItemType, ColumnId>['key'], _value: ApiQueryConditionIn<QueryItemType, ColumnId>['value']): ApiRequestColumnArray;
|
|
13
|
+
protected parseLinkedToQuery<SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], _query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<ItemTypeType>;
|
|
14
|
+
protected parseComplexQuery<QueryItemType extends ApiItemType>(conditions: ApiQueryWithConditions<QueryItemType>['conditions'], _operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<QueryItemType>;
|
|
15
|
+
private parseConditions;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, QueryParserBase } from '../internal';
|
|
3
|
+
type ReturnType = boolean;
|
|
4
|
+
export declare class QueryContainsLocalIdParser extends QueryParserBase<ReturnType> {
|
|
5
|
+
protected parseEmptyQuery(): ReturnType;
|
|
6
|
+
protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(_key: keyof ItemApiFields<MainItemType>, _itemType: SubItemType, _field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, _not: boolean, subQueryDepth: number): ReturnType;
|
|
7
|
+
protected parseSearchQuery(): ReturnType;
|
|
8
|
+
protected parseCustomQuery(): ReturnType;
|
|
9
|
+
protected parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(_key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value']): ReturnType;
|
|
10
|
+
protected parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(_key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value']): ReturnType;
|
|
11
|
+
protected parseLinkedToQuery<SubItemType extends ApiItemType>(_linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, _reverse: boolean, _not: boolean, subQueryDepth: number): ReturnType;
|
|
12
|
+
protected parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], _operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, _not: boolean, subQueryDepth: number): ReturnType;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryConditionCustom, ApiQueryConditionSearch, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, CollectionQuery, QueryParserBase } from '../internal';
|
|
3
|
+
export declare class QueryParser extends QueryParserBase<CollectionQuery<any>> {
|
|
4
|
+
private static formatStringParameters;
|
|
5
|
+
private static formatValue;
|
|
6
|
+
private static processValue;
|
|
7
|
+
private static compareParsedQueries;
|
|
8
|
+
protected parseEmptyQuery(): CollectionQuery<ApiItemType>;
|
|
9
|
+
protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, not: boolean, subQueryDepth: number): CollectionQuery<MainItemType>;
|
|
10
|
+
protected parseSearchQuery<ItemTypeType extends ApiItemType>(value: ApiQueryConditionSearch['search'], not: boolean): CollectionQuery<ItemTypeType>;
|
|
11
|
+
protected parseCustomQuery<ItemTypeType extends ApiItemType, QueryType extends ApiQueryConditionCustom<ItemTypeType>>(custom: QueryType['custom'], parameters: QueryType['parameters'], not: boolean): CollectionQuery<ItemTypeType>;
|
|
12
|
+
protected parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator']): CollectionQuery<ItemTypeType>;
|
|
13
|
+
protected parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value'], not: boolean): CollectionQuery<ItemTypeType>;
|
|
14
|
+
protected parseLinkedToQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, not: boolean, subQueryDepth: number): CollectionQuery<MainItemType>;
|
|
15
|
+
protected parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, not: boolean, subQueryDepth: number): CollectionQuery<ItemTypeType>;
|
|
16
|
+
private parseCustomParameters;
|
|
17
|
+
private parseConditions;
|
|
18
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryConditionCustom, ApiQueryConditionSearch, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions } from '../internal';
|
|
3
|
+
/**
|
|
4
|
+
* When extending this class, note that:
|
|
5
|
+
* - It already provides default values (`not` for `IN` queries, `operator` for `conditions` queries, `field` for
|
|
6
|
+
* sub queries, etc.).
|
|
7
|
+
* - It normalizes comparators (`not` `=` becomes `!=`, etc.).
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class QueryParserBase<ReturnType, ParseReturnType = ReturnType> {
|
|
10
|
+
private static normalizeOperator;
|
|
11
|
+
private static isLinkedToQuery;
|
|
12
|
+
private static isCustomQuery;
|
|
13
|
+
private static isSearchQuery;
|
|
14
|
+
private static isQueryWithConditions;
|
|
15
|
+
private static isSubQuery;
|
|
16
|
+
run<ItemTypeType extends ApiItemType>(query: ApiQuery<ItemTypeType>): ReturnType;
|
|
17
|
+
/**
|
|
18
|
+
* @param subQueryDepth As the query language supports nested queries, this parameter denotes how deeply we're
|
|
19
|
+
* nested. `subQueryDepth` should increase whenever this method is called from {@link parseSubQuery} or
|
|
20
|
+
* {@link parseLinkedToQuery}.
|
|
21
|
+
*/
|
|
22
|
+
protected parseQuery<ItemTypeType extends ApiItemType>(query: unknown, subQueryDepth: number): ParseReturnType;
|
|
23
|
+
protected abstract parseEmptyQuery(): ParseReturnType;
|
|
24
|
+
protected abstract parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, not: boolean, subQueryDepth: number): ParseReturnType;
|
|
25
|
+
protected abstract parseSearchQuery(value: ApiQueryConditionSearch['search'], not: boolean): ParseReturnType;
|
|
26
|
+
protected abstract parseCustomQuery<ItemTypeType extends ApiItemType, QueryType extends ApiQueryConditionCustom<ItemTypeType>>(custom: QueryType['custom'], parameters: QueryType['parameters'], not: boolean): ParseReturnType;
|
|
27
|
+
protected abstract parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator'], query: ApiQueryConditionComparator<ItemTypeType, ColumnId>): ParseReturnType;
|
|
28
|
+
protected abstract parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value'], not: boolean): ParseReturnType;
|
|
29
|
+
protected abstract parseLinkedToQuery<SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, not: boolean, subQueryDepth: number): ParseReturnType;
|
|
30
|
+
protected abstract parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, not: boolean, subQueryDepth: number): ParseReturnType;
|
|
31
|
+
private _parseSimpleQuery;
|
|
32
|
+
}
|