Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

Latest commit

 

History

History
120 lines (97 loc) · 4.52 KB

README.md

File metadata and controls

120 lines (97 loc) · 4.52 KB

Build Status

Ballerina Cassandra Client

Ballerina Cassandra Client is used to connect Ballerina with Cassandra data source. With the Ballerina Cassandra client following operations are supported.

  1. update - To execute a data or schema update query
  2. select - To select data from the datasource
  3. close - To close the cassandra connection.

Compatibility

Version
Ballerina Language Swan Lake Preview1
Cassandra module 0.99.0

Steps to Configure

Extract wso2-cassandra-.zip and copy containing jars in to <BRE_HOME>/bre/lib/

Building from the source

If you want to build Ballerina Cassandra Connector from the source code:

  1. Get a clone or download the source from this repository: https://github.com/wso2-ballerina/module-cassandra
  2. Run the following Maven command from the ballerina directory: mvn clean install
  3. Extract the distribution created at /component/target/wso2-cassandra-<version>.zip. Run the install.{sh/bat} script to install the module. You can uninstall the module by running uninstall.{sh/bat}.

Sample

import ballerinax/cassandra as c;
import ballerina/io;
import ballerina/jsonutils;
import ballerina/xmlutils;

type Person record {
    int id;
    string name;
    float salary;
};

public function main() {
    c:Client conn = new ({
        host: "localhost",
        port: 9042,
        username: "cassandra",
        password: "cassandra",
        options: {
            queryOptionsConfig: {consistencyLevel: "ONE", defaultIdempotence: false},
            protocolOptionsConfig: {sslEnabled: false},
            socketOptionsConfig: {connectTimeoutMillis: 500, readTimeoutMillis: 1000},
            poolingOptionsConfig: {maxConnectionsPerHostLocal: 5, newConnectionThresholdLocal: 10}
        }
    });

    var returned = conn->update("CREATE KEYSPACE testballerina  WITH replication = {'class':'SimpleStrategy'," +
        "'replication_factor' : 3}");
    handleUpdate(returned, "Keyspace testballerina creation");

    returned = conn->update("CREATE TABLE testballerina.person(id int PRIMARY KEY,name text,salary float,income double," +
        "married boolean)");
    handleUpdate(returned, "Table person creation");

    c:Parameter pID = {cqlType: c:TYPE_INT, value: 1};
    c:Parameter pName = {cqlType: c:TYPE_TEXT, value: "Anupama"};
    c:Parameter pSalary = {cqlType: c:TYPE_FLOAT, value: 100.5};
    c:Parameter pIncome = {cqlType: c:TYPE_DOUBLE, value: 1000.5};
    c:Parameter pMarried = {cqlType: c:TYPE_BOOLEAN, value: true};
    returned = conn->update("INSERT INTO testballerina.person(id, name, salary, income, married) values (?,?,?,?,?)",
        pID, pName, pSalary, pIncome, pMarried);
    handleUpdate(returned, "Insert One Row to Table person");

    var selectRet = conn->query("select id, name, salary from testballerina.person where id = ?", Person, pID);

    if (selectRet is table<Person>) {
        foreach var row in selectRet {
            io:println("Person:" + row.id.toString() + "|" + row.name + "|" + row.salary.toString());
        }
    } 

    selectRet = conn->query("select id, name, salary from testballerina.person where id = ? and name = ?" +
        "ALLOW FILTERING", Person, pID, pName);

    if (selectRet is table<record {}>) {
        json jsonRet = jsonutils:fromTable(selectRet);
        io:println("JSON: ", jsonRet);
    } else {
        io:println("Select data from person table failed: " + selectRet.message());
    }

    selectRet = conn->query("select id, name, salary from testballerina.person where salary = ? ALLOW FILTERING",
        Person, pSalary);
    if (selectRet is table<record {}>) {
        xml xmlRet = xmlutils:fromTable(selectRet);
        io:println("XML: ", xmlRet);
    } else {
        io:println("Select data from person table failed: " + selectRet.message());
    }

    returned = conn->update("DROP KEYSPACE testballerina");
    handleUpdate(returned, "Drop keyspace testballerina");

    conn.stop();
    io:println("Connection closed.");
}

function handleUpdate(()|error returned, string message) {
    if (returned is ()) {
        io:println(message + " success ");
    } else {
        io:println(message + " failed: " + returned.message());
    }
}