private async Task <bool> CheckIndexExistsAsync(string tableName, string field)
        {
            return(await Task.Run(async() =>
            {
                Amazon.QLDB.Driver.IAsyncResult result = await qldbDriver.Execute(async transactionExecutor =>
                {
                    IIonValue ionTableName = this.valueFactory.NewString(tableName);
                    return await transactionExecutor.Execute($"SELECT * FROM information_schema.user_tables WHERE name = ?", ionTableName);
                });

                List <IIonValue> ionValues = await result.ToListAsync();
                if (ionValues.Any())
                {
                    IIonList indexes = ionValues.First().GetField("indexes");
                    foreach (IIonValue index in indexes)
                    {
                        string expr = index.GetField("expr").StringValue;
                        if (expr.Contains(field))
                        {
                            return true;
                        }
                    }
                }

                return false;
            }));
        }
        private IEnumerable <string> GetSecondaryOwners(TransactionExecutor transactionExecutor, string vin)
        {
            IIonValue ionVin       = this.valueFactory.NewString(vin);
            IResult   selectResult = transactionExecutor.Execute("SELECT Owners.SecondaryOwners FROM VehicleRegistration AS v WHERE v.VIN = ?", ionVin);

            IIonList secondaryOwners = selectResult.First().GetField("SecondaryOwners") as IIonList;

            if (secondaryOwners != null)
            {
                List <string> secondaryOwnerIds = new List <string>();
                foreach (var owner in secondaryOwners)
                {
                    secondaryOwnerIds.Add(owner?.GetField("PersonId")?.StringValue);
                }
                return(secondaryOwnerIds);
            }
            else
            {
                return(Enumerable.Empty <string>());
            }
        }