import { Action } from '@ngrx/store';
import { RPCClientError } from '@loafer/ng-rpc';
import { Infra } from '@overflow/commons-typescript/model/infra';

export enum ActionType {
  Read = '[Infra.list] Read',
  ReadSuccess = '[Infra.list] ReadSuccess',
  ReadFailure = '[Infra.list] ReadFailure',
}

export class Read implements Action {
  readonly type = ActionType.Read;

  constructor(public payload: { id: string }) { }
}

export class ReadSuccess implements Action {
  readonly type = ActionType.ReadSuccess;

  constructor(public payload: Infra) { }
}

export class ReadFailure implements Action {
  readonly type = ActionType.ReadFailure;

  constructor(public payload: RPCClientError) { }
}



export type Actions =
  | Read
  | ReadSuccess
  | ReadFailure
  ;