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

import Route from 'consul-ui/routing/route';
import { assert } from '@ember/debug';
import { Promise, hash } from 'rsvp';
export default Route.extend({
  // repo: service('repositoryName'),
  isCreate: function (params, transition) {
    return transition.targetName.split('.').pop() === 'create';
  },
  model: function (params, transition) {
    const repo = this.repo;
    assert(
      "`repo` is undefined, please define RepositoryService using `repo: service('repositoryName')`",
      typeof repo !== 'undefined'
    );
    const dc = this.modelFor('dc').dc.Name;
    const nspace = this.optionalParams().nspace;
    const partition = this.optionalParams().partition;
    const create = this.isCreate(...arguments);
    return hash({
      dc: dc,
      partition: partition,
      nspace: nspace,
      create: create,
      ...repo.status({
        item: create
          ? Promise.resolve(
              repo.create({
                Datacenter: dc,
                Namespace: nspace,
                Partition: partition,
              })
            )
          : repo.findBySlug({
              partition: partition,
              ns: nspace,
              dc: dc,
              id: params.id,
            }),
      }),
    });
  },
});
