Skip to content

Instantly share code, notes, and snippets.

@jeffrymorris
Last active August 29, 2015 14:18
Show Gist options
  • Save jeffrymorris/a6786084d36d5040e4d9 to your computer and use it in GitHub Desktop.
Save jeffrymorris/a6786084d36d5040e4d9 to your computer and use it in GitHub Desktop.
using System;
using Couchbase.N1QL;
namespace Couchbase.NetClient.N1QLExample
{
class Program
{
static void Main(string[] args)
{
using (var cluster = new Cluster())
{
using (var bucket = cluster.OpenBucket("travel-sample"))
{
Console.Write("Insert successful...");
var result = bucket.Insert(new Document<dynamic>
{
Id = "airline_0",
Content = new
{
id = 0,
type = "airline",
name = "Couchbase Airways",
iata = "CBX",
icao = "CBX",
callsign = "COUCH-BASE",
country = "United States"
}
});
Console.WriteLine("{0}", result.Success);
//ensure that the bucket has a primary index
EnsureIndex(bucket);
var queryRequest =
new QueryRequest().Statement("SELECT * FROM `travel-sample` WHERE type=$1 AND id=$2;")
.AddPositionalParameter("airline")
.AddPositionalParameter(0)
.ScanConsistency(ScanConsistency.RequestPlus);
Console.Write("Executing query...");
//execute the query
var queryResults = bucket.Query<dynamic>(queryRequest);
if (queryResults.Success)
{
foreach (var row in queryResults.Rows)
{
Console.WriteLine("{0}{1}", Environment.NewLine, row);
}
}
else
{
var msg = queryResults.Errors.First().Message;
Console.WriteLine("{0}{1}", Environment.NewLine, msg);
}
Console.Read();
}
}
}
public static void EnsureIndex(IBucket bucket)
{
Console.Write("Checking index on bucket {0}...", bucket.Name);
//Check for the index
var indexes = bucket.Query<dynamic>(new QueryRequest("SELECT keyspace_id FROM system:indexes;"));
var exists = indexes.Rows.Any(row => row.keyspace_id == "travel-sample");
if (exists)
{
Console.WriteLine("found.");
return;
}
Console.WriteLine("not found");
Console.Write("Creating index on {0}...", bucket.Name);
//create a primary index on the bucket
var queryRequest = new QueryRequest("CREATE PRIMARY INDEX ON `travel-sample`")
.Timeout(new TimeSpan(0, 0, 0, 60));
var result = bucket.Query<dynamic>(queryRequest);
Console.WriteLine(result.Success ? "created." : "not created.");
if (!result.Success)
{
Console.WriteLine(result.Errors);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment