Skip to content

Commit 5ba8346

Browse files
Add up to date index mgmnt examples for dev-reorg (#231)
1 parent 4368e94 commit 5ba8346

1 file changed

Lines changed: 141 additions & 0 deletions

File tree

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
// Run this using dotnet-script: https://github.com/filipw/dotnet-script
2+
//
3+
// dotnet script IndexHelloWorld.csx
4+
//
5+
6+
#r "nuget: CouchbaseNetClient, 3.2.5"
7+
8+
using System;
9+
using System.Threading.Tasks;
10+
using Couchbase;
11+
using Couchbase.Management.Query;
12+
using Couchbase.Core.Exceptions;
13+
14+
await new IndexHelloWorld().ExampleAsync();
15+
16+
public class IndexHelloWorld
17+
{
18+
public async Task ExampleAsync()
19+
{
20+
var cluster = await Cluster.ConnectAsync("couchbase://localhost", "Administrator", "password");
21+
22+
{
23+
Console.WriteLine("[primary]");
24+
// NOTE:
25+
// * Bucket names containing a `-` need to be escaped, see https://issues.couchbase.com/browse/NCBC-2955.
26+
// * The `IgnoreIfExists` option is currently not working as expected, see https://issues.couchbase.com/browse/NCBC-2647.
27+
// tag::primary[]
28+
try
29+
{
30+
await cluster.QueryIndexes.CreatePrimaryIndexAsync(
31+
"`travel-sample`",
32+
options => options.IgnoreIfExists(true)
33+
);
34+
}
35+
catch (InternalServerFailureException)
36+
{
37+
Console.WriteLine("Index already exists");
38+
}
39+
// end::primary[]
40+
Console.WriteLine("Index creation complete");
41+
}
42+
43+
{
44+
Console.WriteLine("\n[named-primary]");
45+
// tag::named-primary[]
46+
await cluster.QueryIndexes.CreatePrimaryIndexAsync(
47+
"`travel-sample`",
48+
options => options.IndexName("named_primary_index")
49+
);
50+
// end::named-primary[]
51+
Console.WriteLine("Named primary index creation complete");
52+
}
53+
54+
{
55+
Console.WriteLine("\n[secondary]");
56+
// tag::secondary[]
57+
await cluster.QueryIndexes.CreateIndexAsync(
58+
"`travel-sample`",
59+
"index_name",
60+
new[] { "name" }
61+
);
62+
// end::secondary[]
63+
Console.WriteLine("Index creation complete");
64+
}
65+
66+
{
67+
Console.WriteLine("\n[composite]");
68+
// tag::composite[]
69+
await cluster.QueryIndexes.CreateIndexAsync(
70+
"`travel-sample`",
71+
"index_travel_info",
72+
new[] { "name", "id", "icao", "iata" }
73+
);
74+
// end::composite[]
75+
Console.WriteLine("Index creation complete");
76+
}
77+
78+
{
79+
Console.WriteLine("\n[drop-primary]");
80+
// tag::drop-primary[]
81+
await cluster.QueryIndexes.DropPrimaryIndexAsync("`travel-sample`");
82+
// end::drop-primary[]
83+
Console.WriteLine("Primary index deleted successfully");
84+
}
85+
86+
{
87+
Console.WriteLine("\n[drop-named-primary]");
88+
// tag::drop-named-primary[]
89+
await cluster.QueryIndexes.DropPrimaryIndexAsync(
90+
"`travel-sample`",
91+
options => options.IndexName("named_primary_index")
92+
);
93+
// end::drop-named-primary[]
94+
Console.WriteLine("Named primary index deleted successfully");
95+
}
96+
97+
{
98+
Console.WriteLine("\n[drop-secondary]");
99+
// tag::drop-secondary[]
100+
await cluster.QueryIndexes.DropIndexAsync("`travel-sample`", "index_name");
101+
// end::drop-secondary[]
102+
Console.WriteLine("Index deleted successfully");
103+
}
104+
105+
{
106+
Console.WriteLine("\n[defer-create]");
107+
// tag::defer-create-primary[]
108+
await cluster.QueryIndexes.CreatePrimaryIndexAsync(
109+
"`travel-sample`",
110+
options => options.Deferred(true)
111+
);
112+
// end::defer-create-primary[]
113+
114+
// tag::defer-create-secondary[]
115+
await cluster.QueryIndexes.CreateIndexAsync(
116+
"`travel-sample`",
117+
"idx_name_email",
118+
new[] { "name", "email" },
119+
options => options.Deferred(true)
120+
);
121+
// end::defer-create-secondary[]
122+
Console.WriteLine("Created deferred indexes");
123+
}
124+
125+
{
126+
Console.WriteLine("\n[defer-build]");
127+
// tag::defer-build[]
128+
// Start building any deferred indexes which were previously created.
129+
await cluster.QueryIndexes.BuildDeferredIndexesAsync("`travel-sample`");
130+
131+
// Wait for the deferred indexes to be ready for use.
132+
await cluster.QueryIndexes.WatchIndexesAsync(
133+
"`travel-sample`",
134+
new[] { "idx_name_email" },
135+
options => options.WatchPrimary(true)
136+
);
137+
// end::defer-build[]
138+
Console.WriteLine("Deferred indexes ready");
139+
}
140+
}
141+
}

0 commit comments

Comments
 (0)