in query-builder/src/main/java/com/datastax/dse/driver/internal/querybuilder/schema/DefaultCreateDseTable.java [321:419]
public String asCql() {
StringBuilder builder = new StringBuilder();
builder.append("CREATE TABLE ");
if (ifNotExists) {
builder.append("IF NOT EXISTS ");
}
CqlHelper.qualify(keyspace, tableName, builder);
if (columnsInOrder.isEmpty()) {
// no columns provided yet.
return builder.toString();
}
boolean singlePrimaryKey = partitionKeyColumns.size() == 1 && clusteringKeyColumns.size() == 0;
builder.append(" (");
boolean first = true;
for (Map.Entry<CqlIdentifier, DataType> column : columnsInOrder.entrySet()) {
if (first) {
first = false;
} else {
builder.append(',');
}
builder
.append(column.getKey().asCql(true))
.append(' ')
.append(column.getValue().asCql(true, true));
if (singlePrimaryKey && partitionKeyColumns.contains(column.getKey())) {
builder.append(" PRIMARY KEY");
} else if (staticColumns.contains(column.getKey())) {
builder.append(" STATIC");
}
}
if (!singlePrimaryKey) {
builder.append(",");
CqlHelper.buildPrimaryKey(partitionKeyColumns, clusteringKeyColumns, builder);
}
builder.append(')');
boolean firstOption = true;
if (compactStorage) {
firstOption = false;
builder.append(" WITH COMPACT STORAGE");
}
if (!orderings.isEmpty()) {
if (firstOption) {
builder.append(" WITH ");
firstOption = false;
} else {
builder.append(" AND ");
}
builder.append("CLUSTERING ORDER BY (");
boolean firstClustering = true;
for (Map.Entry<CqlIdentifier, ClusteringOrder> ordering : orderings.entrySet()) {
if (firstClustering) {
firstClustering = false;
} else {
builder.append(',');
}
builder
.append(ordering.getKey().asCql(true))
.append(' ')
.append(ordering.getValue().toString());
}
builder.append(')');
}
if (vertexOperation != null) {
if (firstOption) {
builder.append(" WITH ");
firstOption = false;
} else {
builder.append(" AND ");
}
vertexOperation.append(builder);
} else if (edgeOperation != null) {
if (firstOption) {
builder.append(" WITH ");
firstOption = false;
} else {
builder.append(" AND ");
}
edgeOperation.append(builder);
}
builder.append(OptionsUtils.buildOptions(options, firstOption));
return builder.toString();
}