import { IdentifiableCassandraPersistence } from 'pip-services3-cassandra-nodex';
import { IIdentifiable, AnyValueMap } from 'pip-services3-commons-nodex';
import { ConfigParams } from 'pip-services3-commons-nodex';
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("123", item1);
console.log(`Created:\n ${JSON.stringify(item)} \n`);
item = await persistence.create("123", item2);
console.log(`Created:\n ${JSON.stringify(item)} \n`);
// Read
item = await persistence.getOneById("123","1");
console.log(`Read:\n ${JSON.stringify(item)} \n`);
let idList = ['1', '2']
let itemList = await persistence.getListByIds("123",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("123",item1U);
console.log(`Updated:\n ${JSON.stringify(item)} \n`);
let value1 = new AnyValueMap({ name: "name_2_Updated" });
item = await persistence.updatePartially ("123","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 ("123", item1U2);
console.log(`Updated or created:\n ${JSON.stringify(item)} \n`);
// Delete
item = await persistence.deleteById("123","1");
console.log(`Deleted:\n ${JSON.stringify(item)} \n`);
// let idList = ['1', '2']
await persistence.deleteByIds("123",idList);
console.log(`Deleted:\n ${JSON.stringify(idList)} \n`);
await persistence.close(null);
console.log('Persistence closed!');
}