import { Action } from '@ngrx/store';

import { Attribute } from '../model';

export const LOAD_ATTRIBUTE_SEARCH_META = '[Attribute] Load Attribute Search Meta';
export const LOAD_ATTRIBUTE_SEARCH_META_SUCCESS = '[Attribute] Load Attribute Search Meta Success';
export const LOAD_ATTRIBUTE_SEARCH_MULTIPLE_META_SUCCESS = '[Attribute] Load Attribute Search Multiple Meta Success';
export const LOAD_ATTRIBUTE_SEARCH_META_FAIL = '[Attribute] Load Attribute Search Meta Fail';

export class LoadAttributeSearchMetaAction implements Action {
    readonly type = LOAD_ATTRIBUTE_SEARCH_META;

    constructor(public payload: string) { }
}

export class LoadAttributeSearchMetaSuccessAction implements Action {
    readonly type = LOAD_ATTRIBUTE_SEARCH_META_SUCCESS;

    constructor(public payload: Attribute[]) { }
}

export class LoadAttributeSearchMultipleMetaSuccessAction implements Action {
    readonly type = LOAD_ATTRIBUTE_SEARCH_MULTIPLE_META_SUCCESS;

    constructor(public payload: Attribute[]) { }
}

export class LoadAttributeSearchMetaFailAction implements Action {
    readonly type = LOAD_ATTRIBUTE_SEARCH_META_FAIL;

    constructor(public payload: {} = null) { }
}

export type Actions
    = LoadAttributeSearchMetaAction
    | LoadAttributeSearchMetaSuccessAction
    | LoadAttributeSearchMultipleMetaSuccessAction
    | LoadAttributeSearchMetaFailAction;