This repository has been archived by the owner on May 25, 2021. It is now read-only.
/
CassandraColumnFamily.cs
106 lines (95 loc) · 2.21 KB
/
CassandraColumnFamily.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Apache.Cassandra;
namespace FluentCassandra
{
public class CassandraColumnFamily
{
private CassandraKeyspace _keyspace;
private IConnection _connection;
/// <summary>
///
/// </summary>
/// <param name="keyspace"></param>
/// <param name="connection"></param>
public CassandraColumnFamily(CassandraKeyspace keyspace, IConnection connection)
{
_keyspace = keyspace;
_connection = connection;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
protected Cassandra.Client GetClient()
{
return _connection.Client;
}
/// <summary>
///
/// </summary>
/// <param name="record"></param>
public void Insert(FluentColumnFamily record)
{
Insert(record.ColumnFamily, record.Key, record);
}
/// <summary>
///
/// </summary>
/// <param name="columnFamily"></param>
/// <param name="key"></param>
/// <param name="record"></param>
public void Insert(string columnFamily, string key, FluentColumnFamily record)
{
var utf8 = Encoding.UTF8;
foreach (var col in record)
{
var path = new ColumnPath {
Column_family = columnFamily,
Column = col.NameBytes
};
GetClient().insert(
_keyspace.KeyspaceName,
key,
path,
col.ValueBytes,
col.Timestamp.Ticks,
ConsistencyLevel.ONE
);
}
}
/// <summary>
///
/// </summary>
/// <param name="record"></param>
/// <param name="columnName"></param>
public void Remove(FluentColumnFamily record, string columnName = null)
{
Remove(record.ColumnFamily, record.Key, columnName);
}
/// <summary>
///
/// </summary>
/// <param name="columnFamily"></param>
/// <param name="key"></param>
/// <param name="columnName"></param>
public void Remove(string columnFamily, string key, string columnName = null)
{
var utf8 = Encoding.UTF8;
var path = new ColumnPath {
Column_family = columnFamily
};
if (!String.IsNullOrWhiteSpace(columnName))
path.Column = FluentColumn<string>.GetBytes(columnName);
GetClient().remove(
_keyspace.KeyspaceName,
key,
path,
DateTimeOffset.UtcNow.Ticks,
ConsistencyLevel.ONE
);
}
}
}