public string GenerateUpdateStatement(ArtWork artwork)
        {
            var properties = artwork.GetType().GetProperties();

            var sqlStatement = new StringBuilder("");

            foreach (var property in properties)
            {
                var propertyValue = artwork.GetType().GetProperty(property.Name)?.GetValue(artwork);

                if (Properties.ContainsKey(property.Name) && propertyValue != null)
                {
                    sqlStatement.Append($"{Properties[property.Name]} = ");

                    switch (propertyValue)
                    {
                    case string _:
                        sqlStatement.Append($"'{propertyValue}', ");
                        break;

                    case DateTime _:
                        sqlStatement.Append($"'{propertyValue:MM/dd/yyyy}', ");
                        break;

                    case bool value:
                        sqlStatement.Append($"{(value ? 1 : 0)}, ");
                        break;

                    default:
                        sqlStatement.Append($"{propertyValue}, ");
                        break;
                    }
                }
            }

            if (sqlStatement.ToString().Contains(","))
            {
                sqlStatement.Remove(sqlStatement.ToString().LastIndexOf(",", StringComparison.Ordinal), 1);
            }

            return($"UPDATE artwork_table " +
                   $"SET " +
                   sqlStatement +
                   $"WHERE id = {artwork.Id};");
        }
        private string GetSqlValues(ArtWork artwork)
        {
            var properties = artwork.GetType().GetProperties();

            var sqlStatement = new StringBuilder("");

            foreach (var property in properties)
            {
                var propertyValue = artwork.GetType().GetProperty(property.Name)?.GetValue(artwork);

                if (Properties.ContainsKey(property.Name) && propertyValue != null)
                {
                    switch (propertyValue)
                    {
                    case string _:
                        sqlStatement.Append($"'{propertyValue}', ");
                        break;

                    case DateTime _:
                        sqlStatement.Append($"'{propertyValue:MM/dd/yyyy}', ");
                        break;

                    case bool value:
                        sqlStatement.Append($"{(value ? 1 : 0)}, ");
                        break;

                    default:
                        sqlStatement.Append($"{propertyValue}, ");
                        break;
                    }
                }
            }

            if (sqlStatement.ToString().Contains(","))
            {
                sqlStatement.Remove(sqlStatement.ToString().LastIndexOf(",", StringComparison.Ordinal), 2);
            }

            return(sqlStatement.ToString());
        }
        private string GetSqlProperties(ArtWork artwork)
        {
            var properties = artwork.GetType().GetProperties();

            var sqlStatement = new StringBuilder("");

            foreach (var property in properties)
            {
                var propertyValue = artwork.GetType().GetProperty(property.Name)?.GetValue(artwork);

                if (Properties.ContainsKey(property.Name) && propertyValue != null)
                {
                    sqlStatement.Append($"{Properties[property.Name]}, ");
                }
            }

            if (sqlStatement.ToString().Contains(","))
            {
                sqlStatement.Remove(sqlStatement.ToString().LastIndexOf(",", StringComparison.Ordinal), 2);
            }

            return(sqlStatement.ToString());
        }