public IndexBuilder(string name)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Cannot be null or empty.", nameof(name));
            }

            _index      = new IndexEntity();
            _index.Name = name;
        }
        public string Generate(IndexEntity index)
        {
            if (index == null)
            {
                throw new ArgumentNullException(nameof(index));
            }

            var sql = new StringBuilder();

            sql.Append("CREATE ");

            if (index.IsUnique)
            {
                sql.Append("UNIQUE ");
            }

            sql.Append("INDEX ");

            if (index.ExistsCheck)
            {
                sql.Append("IF NOT EXISTS ");
            }

            sql.Append("[");
            sql.Append(index.Name);
            sql.Append("]");

            sql.Append(" ON ");

            sql.Append("[");
            sql.Append(index.Table);
            sql.Append("]");

            sql.Append(" (");
            sql.AppendLine();

            for (int i = 0; i < index.Columns.Count; i++)
            {
                var column = index.Columns[i];

                sql.Append(_indent);
                sql.Append(column);

                if (i + 1 < index.Columns.Count)
                {
                    sql.Append(",");
                }

                sql.AppendLine();
            }

            sql.Append(");");

            return(sql.ToString());
        }