package io.delphi.qa.auto.awsmfrw.managers.helpers.db.snowflake;

import io.delphi.qa.auto.awsmfrw.common_baby.ICanProvideHelpers;
import io.delphi.qa.auto.awsmfrw.common_baby.delphi.aws.EnAwsSecrets;
import io.delphi.qa.auto.awsmfrw.common_baby.delphi.aws.ICanFetchAwsSecret;
import io.delphi.qa.auto.awsmfrw.managers.helpers.db.SnowflakeClient;
import io.delphi.qa.auto.awsmfrw.suppliers.DelphiDataContainer;

import java.util.List;
import java.util.Map;

public class SfSysAdminImpl
    implements SfRlsAdminInterface, ICanFetchAwsSecret, ICanProvideHelpers<SfSysAdminImpl> {

  {
    System.setProperty("delphi.slz.db.pg.isAutomation", "false");
  }

  private final Map<String, String> adminSecret;
  SnowflakeClient admin;

  public SfSysAdminImpl() {
    this.adminSecret = fetchAwsSecret(EnAwsSecrets.DELPHI_TEST_AUTOMATION_SNOWFLAKE);
    this.admin = new SnowflakeClient(this.adminSecret);
  }

  @Override
  public SnowflakeClient getAdminClient() {
    return admin;
  }

  @Override
  public Map<String, String> getAdminSecret() {
    return adminSecret;
  }

  @Override
  public SfSysAdminImpl init() {
    return this;
  }

  @Override
  public void query(String query) {
    List<String> strings = this.getAdminClient().awsmCustomQuery(query);
    DelphiDataContainer.saveResource("SNOWFLAKE_SYSADMIN_RESULT_LOCATOR", strings);
  }
}
