/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

import Serializer from './application';
import { PRIMARY_KEY, SLUG_KEY } from 'consul-ui/models/topology';
import { inject as service } from '@ember/service';

export default class TopologySerializer extends Serializer {
  @service('store') store;

  primaryKey = PRIMARY_KEY;
  slugKey = SLUG_KEY;

  respondForQueryRecord(respond, query) {
    const intentionSerializer = this.store.serializerFor('intention');
    return super.respondForQueryRecord(function (cb) {
      return respond(function (headers, body) {
        body.Downstreams.forEach((item) => {
          item.Intention.SourceName = item.Name;
          item.Intention.SourceNS = item.Namespace;
          item.Intention.DestinationName = query.id;
          item.Intention.DestinationNS = query.ns || 'default';
          intentionSerializer.ensureID(item.Intention);
        });
        body.Upstreams.forEach((item) => {
          item.Intention.SourceName = query.id;
          item.Intention.SourceNS = query.ns || 'default';
          item.Intention.DestinationName = item.Name;
          item.Intention.DestinationNS = item.Namespace;
          intentionSerializer.ensureID(item.Intention);
        });
        return cb(headers, {
          ...body,
          [SLUG_KEY]: query.id,
        });
      });
    }, query);
  }
}
