internal static async Task GetUserTableIdAsync()

in src/TriggersBinding/MySqlTriggerUtils.cs [28:60]


        internal static async Task<string> GetUserTableIdAsync(MySqlConnection connection, MySqlObject userTable, ILogger logger, CancellationToken cancellationToken)
        {
            string dbName = userTable.Schema;

            // when schem name is same as schema function
            if (dbName.Equals(MySqlObject.SCHEMA_NAME_FUNCTION, StringComparison.Ordinal))
            {
                var getDbCommand = new MySqlCommand($"SELECT {MySqlObject.SCHEMA_NAME_FUNCTION}", connection);

                using (MySqlDataReader reader = getDbCommand.ExecuteReaderWithLogging(logger))
                {
                    if (!await reader.ReadAsync(cancellationToken))
                    {
                        throw new InvalidOperationException($"Received empty response when querying for the database name");
                    }
                    object objDbName = reader.GetValue(0);
                    if (objDbName is DBNull)
                    {
                        throw new InvalidOperationException($"Could not find database.");
                    }

                    dbName = (string)objDbName;
                }
            }

            using (var sha256 = SHA256.Create())
            {
                byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(dbName.AsAcuteQuotedString() + "." + userTable.AcuteQuotedName));
                string tableId = new Guid(hash.Take(16).ToArray()).ToString("N");

                return tableId;
            }
        }