This procedure creates a table having a compound primary key, id and username, and clustering columns name and email.
-
Start Cassandra and Anypoint Studio.
-
Create a new Anypoint Studio project, and in the Package Explorer, open mule-app-properties. Assuming you installed Cassandra locally, add connection properties and values. For example:
username=cassandra password=cassandra host=localhost keyspace=Excelsior port=9042
-
Create a flow by dragging an HTTP connector from the Mule palette to the canvas, select the connector, set the Path in Basic Properties to /createtable and Allowed Methods to POST. In Connector Configuration, click .
-
In HTTP Listener Configuration, set the following options:
-
Host = 0.0.0.0
-
Port = 8081
-
-
Drag a Transform Message component from the Mule palette to the right (process) side of the flow, select the component, and set the output payload as follows:
%dw 1.0 %output application/java --- { "columns": payload.columns, "tableName": payload.tableName, "keyspaceName": payload.keyspaceName } as :object { class : "com.mulesoft.mule.cassandradb.metadata.CreateTableInput" }
-
Drag a Cassandra connector from the Mule palette to the right of the Transform Message component, and select the connector. In Operation, select Create Table, and click .
-
In CassandraDB Username/Password Connection, set the following options to placeholder values, and test the connections:
-
Username: ${username}
-
Password: ${password}
-
Host: ${host}
-
Port: ${port}
-
-
Run the Mule app. In Postman, select POST. Select Body > Raw, select the JSON (application/json) MIME type, and enter the following table description using uppercase for data types.
{ "tableName": "users", "keyspaceName": "Excelsior", "columns": [ { "name": "id", "type": "INT", "primaryKey": "true" }, { "name": "username", "type": "TEXT", "primaryKey": "true" }, { "name": "name", "type": "TEXT", "primaryKey": "false" }, { "name": "email", "type": "TEXT", "primaryKey": "false" } ] }
-
In Postman, click Send, and look for Status: 200 OK. On the cqlsh command line, check that the app created the table:
use Excelsior; describe table users;
Cassandra output:
cassandra@cqlsh:excelsior> use Excelsior; cassandra@cqlsh:excelsior> describe table users; CREATE TABLE excelsior.users ( id int, username text, email text, name text, PRIMARY KEY ((id, username)) ) WITH bloom_filter_fp_chance = 0.01 ...