File: couchbase.go

package info (click to toggle)
usql 0.19.19-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,652 kB
  • sloc: sql: 1,115; sh: 643; ansic: 191; makefile: 60
file content (43 lines) | stat: -rw-r--r-- 1,049 bytes parent folder | download | duplicates (2)
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
// Package couchbase defines and registers usql's Couchbase driver.
//
// See: https://github.com/couchbase/go_n1ql
package couchbase

import (
	"context"
	"strconv"
	"strings"

	_ "github.com/couchbase/go_n1ql" // DRIVER: n1ql
	"github.com/xo/usql/drivers"
)

func init() {
	drivers.Register("n1ql", drivers.Driver{
		AllowMultilineComments: true,
		Version: func(ctx context.Context, db drivers.DB) (string, error) {
			ver := "<unknown>"
			/*
				var buf []byte
				if err := db.QueryRowContext(ctx, `SELECT ds_version() AS version`).Scan(&buf); err == nil {
					var m map[string]string
					if err := json.Unmarshal(buf, &m); err == nil {
						if s, ok := m["version"]; ok {
							ver = s
						}
					}
				}
			*/
			var v string
			if err := db.QueryRowContext(ctx, `SELECT RAW ds_version()`).Scan(&v); err == nil {
				if s, err := strconv.Unquote(v); err == nil {
					ver = s
				}
			}
			return "Couchbase " + ver, nil
		},
		Err: func(err error) (string, string) {
			return "", strings.TrimPrefix(err.Error(), "N1QL: ")
		},
	})
}