1
0
Files
yel-dspace-angular/src/app/core/json-patch/json-patch-operations.actions.ts
2018-07-26 18:36:36 +02:00

280 lines
7.5 KiB
TypeScript

import { Action } from '@ngrx/store';
import { type } from '../../shared/ngrx/type';
/**
* For each action type in an action group, make a simple
* enum object for all of this group's action types.
*
* The 'type' utility function coerces strings into string
* literal types and runs a simple check to guarantee all
* action types in the application are unique.
*/
export const JsonPatchOperationsActionTypes = {
NEW_JSON_PATCH_ADD_OPERATION: type('dspace/core/patch/NEW_JSON_PATCH_ADD_OPERATION'),
NEW_JSON_PATCH_COPY_OPERATION: type('dspace/core/patch/NEW_JSON_PATCH_COPY_OPERATION'),
NEW_JSON_PATCH_MOVE_OPERATION: type('dspace/core/patch/NEW_JSON_PATCH_MOVE_OPERATION'),
NEW_JSON_PATCH_REMOVE_OPERATION: type('dspace/core/patch/NEW_JSON_PATCH_REMOVE_OPERATION'),
NEW_JSON_PATCH_REPLACE_OPERATION: type('dspace/core/patch/NEW_JSON_PATCH_REPLACE_OPERATION'),
COMMIT_JSON_PATCH_OPERATIONS: type('dspace/core/patch/COMMIT_JSON_PATCH_OPERATIONS'),
ROLLBACK_JSON_PATCH_OPERATIONS: type('dspace/core/patch/ROLLBACK_JSON_PATCH_OPERATIONS'),
FLUSH_JSON_PATCH_OPERATIONS: type('dspace/core/patch/FLUSH_JSON_PATCH_OPERATIONS'),
START_TRANSACTION_JSON_PATCH_OPERATIONS: type('dspace/core/patch/START_TRANSACTION_JSON_PATCH_OPERATIONS'),
};
/* tslint:disable:max-classes-per-file */
/**
* An ngrx action to commit the current transaction
*/
export class CommitPatchOperationsAction implements Action {
type = JsonPatchOperationsActionTypes.COMMIT_JSON_PATCH_OPERATIONS;
payload: {
resourceType: string;
resourceId: string;
};
/**
* Create a new CommitPatchOperationsAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
*/
constructor(resourceType: string, resourceId: string) {
this.payload = { resourceType, resourceId };
}
}
/**
* An ngrx action to rollback the current transaction
*/
export class RollbacktPatchOperationsAction implements Action {
type = JsonPatchOperationsActionTypes.ROLLBACK_JSON_PATCH_OPERATIONS;
payload: {
resourceType: string;
resourceId: string;
};
/**
* Create a new CommitPatchOperationsAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
*/
constructor(resourceType: string, resourceId: string) {
this.payload = { resourceType, resourceId };
}
}
/**
* An ngrx action to initiate a transaction block
*/
export class StartTransactionPatchOperationsAction implements Action {
type = JsonPatchOperationsActionTypes.START_TRANSACTION_JSON_PATCH_OPERATIONS;
payload: {
resourceType: string;
resourceId: string;
startTime: number;
};
/**
* Create a new CommitPatchOperationsAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
* @param startTime
* the start timestamp
*/
constructor(resourceType: string, resourceId: string, startTime: number) {
this.payload = { resourceType, resourceId, startTime };
}
}
/**
* An ngrx action to flush list of the JSON Patch operations
*/
export class FlushPatchOperationsAction implements Action {
type = JsonPatchOperationsActionTypes.FLUSH_JSON_PATCH_OPERATIONS;
payload: {
resourceType: string;
resourceId: string;
};
/**
* Create a new FlushPatchOperationsAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
*/
constructor(resourceType: string, resourceId: string) {
this.payload = { resourceType, resourceId };
}
}
/**
* An ngrx action to Add new HTTP/PATCH ADD operations to state
*/
export class NewPatchAddOperationAction implements Action {
type = JsonPatchOperationsActionTypes.NEW_JSON_PATCH_ADD_OPERATION;
payload: {
resourceType: string;
resourceId: string;
path: string;
value: any
};
/**
* Create a new NewPatchAddOperationAction
*
* @param resourceType
* the resource's type where to add operation
* @param resourceId
* the resource's ID
* @param path
* the path of the operation
* @param value
* the operation's payload
*/
constructor(resourceType: string, resourceId: string, path: string, value: any) {
this.payload = { resourceType, resourceId, path, value };
}
}
/**
* An ngrx action to add new JSON Patch COPY operation to state
*/
export class NewPatchCopyOperationAction implements Action {
type = JsonPatchOperationsActionTypes.NEW_JSON_PATCH_COPY_OPERATION;
payload: {
resourceType: string;
resourceId: string;
from: string;
path: string;
};
/**
* Create a new NewPatchCopyOperationAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
* @param from
* the path to copy the value from
* @param path
* the path where to copy the value
*/
constructor(resourceType: string, resourceId: string, from: string, path: string) {
this.payload = { resourceType, resourceId, from, path };
}
}
/**
* An ngrx action to Add new JSON Patch MOVE operation to state
*/
export class NewPatchMoveOperationAction implements Action {
type = JsonPatchOperationsActionTypes.NEW_JSON_PATCH_MOVE_OPERATION;
payload: {
resourceType: string;
resourceId: string;
from: string;
path: string;
};
/**
* Create a new NewPatchMoveOperationAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
* @param from
* the path to move the value from
* @param path
* the path where to move the value
*/
constructor(resourceType: string, resourceId: string, from: string, path: string) {
this.payload = { resourceType, resourceId, from, path };
}
}
/**
* An ngrx action to Add new JSON Patch REMOVE operation to state
*/
export class NewPatchRemoveOperationAction implements Action {
type = JsonPatchOperationsActionTypes.NEW_JSON_PATCH_REMOVE_OPERATION;
payload: {
resourceType: string;
resourceId: string;
path: string;
};
/**
* Create a new NewPatchRemoveOperationAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
* @param path
* the path of the operation
*/
constructor(resourceType: string, resourceId: string, path: string) {
this.payload = { resourceType, resourceId, path };
}
}
/**
* An ngrx action to add new JSON Patch REPLACE operation to state
*/
export class NewPatchReplaceOperationAction implements Action {
type = JsonPatchOperationsActionTypes.NEW_JSON_PATCH_REPLACE_OPERATION;
payload: {
resourceType: string;
resourceId: string;
path: string;
value: any
};
/**
* Create a new NewPatchReplaceOperationAction
*
* @param resourceType
* the resource's type
* @param resourceId
* the resource's ID
* @param path
* the path of the operation
* @param value
* the operation's payload
*/
constructor(resourceType: string, resourceId: string, path: string, value: any) {
this.payload = { resourceType, resourceId, path, value };
}
}
/* tslint:enable:max-classes-per-file */
/**
* Export a type alias of all actions in this action group
* so that reducers can easily compose action types
*/
export type PatchOperationsActions
= CommitPatchOperationsAction
| FlushPatchOperationsAction
| NewPatchAddOperationAction
| NewPatchCopyOperationAction
| NewPatchMoveOperationAction
| NewPatchRemoveOperationAction
| NewPatchReplaceOperationAction
| RollbacktPatchOperationsAction
| StartTransactionPatchOperationsAction