import {IAction, TAsyncAction} from '../actions' import {TCRUDMethod} from './TCRUDMethod' // Async actions export type TCRUDSaveAction = TAsyncAction & {method: Extract} export type TCRUDUpdateAction = TAsyncAction & {method: Extract} export type TCRUDRemoveAction = TAsyncAction & {method: Extract} export type TCRUDFindOneAction = TAsyncAction & {method: Extract} export type TCRUDFindManyAction = TAsyncAction & {method: Extract} // Synchronous actions export type TCRUDCreateAction = IAction, ActionType> & {method: Extract} export type TCRUDEditAction = IAction<{id: number}, ActionType> & {method: Extract} export type TCRUDChangeAction = IAction<{id?: number, key: keyof T, value: string}, ActionType> & {method: Extract} export type TCRUDAction = TCRUDSaveAction | TCRUDUpdateAction | TCRUDRemoveAction | TCRUDFindOneAction | TCRUDFindManyAction | TCRUDCreateAction | TCRUDEditAction | TCRUDChangeAction