public CompiledStatement compile()

in harry-core/src/harry/ddl/SchemaSpec.java [242:292]


    public CompiledStatement compile()
    {
        StringBuilder sb = new StringBuilder();

        sb.append("CREATE TABLE IF NOT EXISTS ");
        sb.append(keyspace)
          .append(".")
          .append(table)
          .append(" (");

        SeparatorAppender commaAppender = new SeparatorAppender();
        for (ColumnSpec<?> cd : partitionKeys)
        {
            commaAppender.accept(sb);
            sb.append(cd.toCQL());
            if (partitionKeys.size() == 1 && clusteringKeys.size() == 0)
                sb.append(" PRIMARY KEY");
        }

        for (ColumnSpec<?> cd : concat(clusteringKeys,
                                       staticColumns,
                                       regularColumns))
        {
            commaAppender.accept(sb);
            sb.append(cd.toCQL());
        }

        if (clusteringKeys.size() > 0 || partitionKeys.size() > 1)
        {
            sb.append(", ").append(getPrimaryKeyCql());
        }

        sb.append(')');

        Runnable appendWith = doOnce(() -> sb.append(" WITH "));

        if (isCompactStorage)
        {
            appendWith.run();
            sb.append("COMPACT STORAGE AND");
        }

        if (clusteringKeys.size() > 0)
        {
            appendWith.run();
            sb.append(getClusteringOrderCql())
              .append(';');
        }

        return new CompiledStatement(sb.toString());
    }