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());
}