import { ConfigParams, References } from "pip-services4-components-node";
import { IIdentifiable } from "pip-services4-data-node";
import { AnyValueMap } from "pip-services4-commons-node";
import { IdentifiableCassandraPersistence } from "pip-services4-cassandra-node";
export class MyData implements IIdentifiable<string> {
public id: string;
public name: string;
public description: string;
}
class MyCassandraPersistence extends IdentifiableCassandraPersistence<MyData, string> {
public constructor() {
super("my_data_table", "mydata_keyspace");
}
protected defineSchema(): void {
this.clearSchema();
this.ensureSchema('CREATE TABLE ' + this.quotedTableName() + ' (id TEXT PRIMARY KEY, name VARCHAR(20), description VARCHAR(20))');
this.ensureIndex('name', { name: 1 }, { unique: true });
}
}
export async function main() {
let persistence = new MyCassandraPersistence();
persistence.configure(ConfigParams.fromTuples(
"connection.host", "localhost",
"connection.port", 9042,
'connection.datacenter', 'datacenter1',
"connection.username", "cassandra",
"connection.password", "cassandra",
));
await persistence.open(null);
await persistence.clear(null);
// Data objects
let item = new MyData();
let item1: MyData = { id: '1', name: 'name_1', description: 'description_1' };
let item2: MyData = { id: '2', name: 'name_2', description: 'description_2' };
// CRUD
// Create
item = await persistence.create(null, item1);
console.log(`Created:\n ${JSON.stringify(item)} \n`);
item = await persistence.create(null, item2);
console.log(`Created:\n ${JSON.stringify(item)} \n`);
// Read
item = await persistence.getOneById(null,"1");
console.log(`Read:\n ${JSON.stringify(item)} \n`);
let idList = ['1', '2']
let itemList = await persistence.getListByIds(null,idList);
console.log(`Read:\n ${JSON.stringify(itemList)} \n`);
// Update
let item1U: MyData = { id: '1', name: 'name_1_Updated', description: 'description_1_Updated' };
item = await persistence.update(null,item1U);
console.log(`Updated:\n ${JSON.stringify(item)} \n`);
let value1 = new AnyValueMap({ name: "name_2_Updated" });
item = await persistence.updatePartially (null,"2",value1);
console.log(`Updated:\n ${JSON.stringify(item)} \n`);
let item1U2: MyData = { id: '1', name: 'name_1_Updated_2', description: 'description_1_Updated_2' };
item = await persistence.set (null, item1U2);
console.log(`Updated or created:\n ${JSON.stringify(item)} \n`);
// Delete
item = await persistence.deleteById(null,"1");
console.log(`Deleted:\n ${JSON.stringify(item)} \n`);
// let idList = ['1', '2']
await persistence.deleteByIds(null,idList);
console.log(`Deleted:\n ${JSON.stringify(idList)} \n`);
await persistence.close(null);
console.log('Persistence closed!');
}