export async function getLedgerMetaData()

in src/core/ledger.ts [141:183]


export async function getLedgerMetaData(
  ledgerSummary: LedgerSummary,
  enqueueSnackbar?: (
    message: SnackbarMessage,
    options?: OptionsObject
  ) => SnackbarKey
): Promise<LedgerInfo> {
  if (!ledgerSummary.Name) {
    return nullLedger;
  }
  let ledger: LedgerInfo;
  if (frontendEndpointValue) {
    const serviceConfigurationOptions: ClientConfiguration = {
      endpoint: frontendEndpointValue,
    };
    ledger = await new QLDB(serviceConfigurationOptions)
      .describeLedger({ Name: ledgerSummary.Name })
      .promise();
  } else {
    ledger = await new QLDB()
      .describeLedger({ Name: ledgerSummary.Name })
      .promise();
  }

  if (ledger.State === "ACTIVE") {
    try {
      const result = await openLedger(ledgerSummary.Name).execute(
        "SELECT * FROM information_schema.user_tables"
      );
      ledger.tables = parseTableInfos(result[0].getResultList());
    } catch (e) {
      const errorMessage = `Unable to execute query on ledger ${
        ledgerSummary.Name
      }. ${
        frontendEndpointValue || sessionEndpointValue
          ? "Make sure you have set session endpoint correctly."
          : ""
      }. ${e}`;
      enqueueSnackbar && enqueueSnackbar(errorMessage, { variant: "error" });
    }
  }
  return ledger;
}