// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Sb is a syncbase general-purpose client and management utility.
// It currently supports syncQL (the syncbase query language).
//
// The 'sh' command connects to a specified database on a syncbase instance,
// creating it if it does not exist if -create-missing is specified.
// The user can then enter the following at the command line:
//     1. dump - to get a dump of the database
//     2. a syncbase select statement - which is executed and results printed to stdout
//     3. a syncbase delete statement - which is executed to delete k/v pairs from a table
//     4. make-demo - to create demo tables in the database to experiment with, equivalent to -make-demo flag
//     5. exit (or quit) - to exit the program
//
// When the shell is running non-interactively (stdin not connected to a tty),
// errors cause the shell to exit with a non-zero status.
//
// To build client:
//     jiri go install v.io/x/ref/cmd/sb
//
// To run client:
//     $JIRI_ROOT/release/go/bin/sb sh <appname> <dbname>
//
// Sample run (assuming a syncbase service is mounted at '/:8101/syncbase',
// otherwise specify using -service flag):
//     > $JIRI_ROOT/release/go/bin/sb sh -create-missing -make-demo -format=csv demoapp demodb
//     ? select v.Name, v.Address.State from Customers where Type(v) = "Customer";
//     v.Name,v.Address.State
//     John Smith,CA
//     Bat Masterson,IA
//     ? select v.CustId, v.InvoiceNum, v.ShipTo.Zip, v.Amount from Customers where Type(v) = "Invoice" and v.Amount > 100;
//     v.CustId,v.InvoiceNum,v.ShipTo.Zip,v.Amount
//     2,1001,50055,166
//     2,1002,50055,243
//     2,1004,50055,787
//     ? select k, v fro Customers;
//     Error:
//     select k, v fro Customers
//                 ^
//     13: Expected 'from', found fro.
//     ? select k, v from Customers;
//     k,v
//     001,"{Name: ""John Smith"", Id: 1, Active: true, Address: {Street: ""1 Main St."", City: ""Palo Alto"", State: ""CA"", Zip: ""94303""}, Credit: {Agency: Equifax, Report: EquifaxReport: {Rating: 65}}}"
//     001001,"{CustId: 1, InvoiceNum: 1000, Amount: 42, ShipTo: {Street: ""1 Main St."", City: ""Palo Alto"", State: ""CA"", Zip: ""94303""}}"
//     001002,"{CustId: 1, InvoiceNum: 1003, Amount: 7, ShipTo: {Street: ""2 Main St."", City: ""Palo Alto"", State: ""CA"", Zip: ""94303""}}"
//     001003,"{CustId: 1, InvoiceNum: 1005, Amount: 88, ShipTo: {Street: ""3 Main St."", City: ""Palo Alto"", State: ""CA"", Zip: ""94303""}}"
//     002,"{Name: ""Bat Masterson"", Id: 2, Active: true, Address: {Street: ""777 Any St."", City: ""Collins"", State: ""IA"", Zip: ""50055""}, Credit: {Agency: TransUnion, Report: TransUnionReport: {Rating: 80}}}"
//     002001,"{CustId: 2, InvoiceNum: 1001, Amount: 166, ShipTo: {Street: ""777 Any St."", City: ""Collins"", State: ""IA"", Zip: ""50055""}}"
//     002002,"{CustId: 2, InvoiceNum: 1002, Amount: 243, ShipTo: {Street: ""888 Any St."", City: ""Collins"", State: ""IA"", Zip: ""50055""}}"
//     002003,"{CustId: 2, InvoiceNum: 1004, Amount: 787, ShipTo: {Street: ""999 Any St."", City: ""Collins"", State: ""IA"", Zip: ""50055""}}"
//     002004,"{CustId: 2, InvoiceNum: 1006, Amount: 88, ShipTo: {Street: ""101010 Any St."", City: ""Collins"", State: ""IA"", Zip: ""50055""}}"
//     ? delete from Customers where k = "001002";
//     +-------+
//     | Count |
//     +-------+
//     |     1 |
//     +-------+
//     ? exit;
//     >
package main
