forked from fluentcassandra/fluentcassandra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CassandraKeyspaceSchema.cs
62 lines (53 loc) · 1.79 KB
/
CassandraKeyspaceSchema.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
using System;
using System.Collections.Generic;
using System.Linq;
using Apache.Cassandra;
namespace FluentCassandra
{
public class CassandraKeyspaceSchema
{
public const string ReplicaPlacementStrategySimple = "org.apache.cassandra.locator.SimpleStrategy";
public const string ReplicaPlacementStrategyLocal = "org.apache.cassandra.locator.LocalStrategy";
public const string ReplicaPlacementStrategyNetworkTopology = "org.apache.cassandra.locator.NetworkTopologyStrategy";
#if DEBUG
private KsDef _def;
#endif
public CassandraKeyspaceSchema()
{
Strategy = ReplicaPlacementStrategySimple;
StrategyOptions = new Dictionary<string, string>() { { "replication_factor", "1" } };
ColumnFamilies = new List<CassandraColumnFamilySchema>();
DurableWrites = true;
}
public CassandraKeyspaceSchema(KsDef def)
{
#if DEBUG
_def = def;
#endif
Name = def.Name;
Strategy = def.Strategy_class;
StrategyOptions = def.Strategy_options ?? new Dictionary<string, string>();
ColumnFamilies = def.Cf_defs.Select(family => new CassandraColumnFamilySchema(family)).ToList();
DurableWrites = def.Durable_writes;
}
public string Name { get; set; }
public string Strategy { get; set; }
public Dictionary<string,string> StrategyOptions { get; private set; }
public bool DurableWrites { get; set; }
public IList<CassandraColumnFamilySchema> ColumnFamilies { get; set; }
public static implicit operator KsDef(CassandraKeyspaceSchema schema)
{
return new KsDef {
Name = schema.Name,
Strategy_class = schema.Strategy,
Strategy_options = schema.StrategyOptions,
Durable_writes = schema.DurableWrites,
Cf_defs = new List<CfDef>(0)
};
}
public static implicit operator CassandraKeyspaceSchema(KsDef def)
{
return new CassandraKeyspaceSchema(def);
}
}
}