public static IReadOnlyList GetPrimaryKeyColumnsAsync()

in src/TriggersBinding/MySqlTriggerUtils.cs [72:97]


        public static IReadOnlyList<(string name, string type)> GetPrimaryKeyColumnsAsync(MySqlConnection connection, string userTableName, ILogger logger, CancellationToken cancellationToken)
        {
            const int NameIndex = 0, TypeIndex = 1;
            string getPrimaryKeyColumnsQuery = $"SHOW COLUMNS FROM " + userTableName + " WHERE `Key` = 'PRI'";

            using (var getPrimaryKeyColumnsCommand = new MySqlCommand(getPrimaryKeyColumnsQuery, connection))
            using (MySqlDataReader reader = getPrimaryKeyColumnsCommand.ExecuteReaderWithLogging(logger))
            {
                var primaryKeyColumns = new List<(string name, string type)>();

                while (reader.Read())
                {
                    cancellationToken.ThrowIfCancellationRequested();
                    string name = reader.GetString(NameIndex);
                    string type = reader.GetString(TypeIndex);

                    primaryKeyColumns.Add((name, type));
                }

                if (primaryKeyColumns.Count == 0)
                {
                    throw new InvalidOperationException($"Could not find primary key(s) for the given table.");
                }
                return primaryKeyColumns;
            }
        }