summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/dialect/feature/feature.go
blob: 89693fc217c2269893e22fa647dab557873535c1 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package feature

import (
	"fmt"
	"strconv"

	"github.com/uptrace/bun/internal"
)

type Feature = internal.Flag

const (
	CTE Feature = 1 << iota
	WithValues
	Returning
	InsertReturning
	Output // mssql
	DefaultPlaceholder
	DoubleColonCast
	ValuesRow
	UpdateMultiTable
	InsertTableAlias
	UpdateTableAlias
	DeleteTableAlias
	AutoIncrement
	Identity
	TableCascade
	TableIdentity
	TableTruncate
	InsertOnConflict     // INSERT ... ON CONFLICT
	InsertOnDuplicateKey // INSERT ... ON DUPLICATE KEY
	InsertIgnore         // INSERT IGNORE ...
	TableNotExists
	OffsetFetch
	SelectExists
	UpdateFromTable
	MSSavepoint
	GeneratedIdentity
	CompositeIn      // ... WHERE (A,B) IN ((N, NN), (N, NN)...)
	UpdateOrderLimit // UPDATE ... ORDER BY ... LIMIT ...
	DeleteOrderLimit // DELETE ... ORDER BY ... LIMIT ...
	DeleteReturning
	AlterColumnExists // ADD/DROP COLUMN IF NOT EXISTS/IF EXISTS
)

type NotSupportError struct {
	Flag Feature
}

func (err *NotSupportError) Error() string {
	name, ok := flag2str[err.Flag]
	if !ok {
		name = strconv.FormatInt(int64(err.Flag), 10)
	}
	return fmt.Sprintf("bun: feature %s is not supported by current dialect", name)
}

func NewNotSupportError(flag Feature) *NotSupportError {
	return &NotSupportError{Flag: flag}
}

var flag2str = map[Feature]string{
	CTE:                  "CTE",
	WithValues:           "WithValues",
	Returning:            "Returning",
	InsertReturning:      "InsertReturning",
	Output:               "Output",
	DefaultPlaceholder:   "DefaultPlaceholder",
	DoubleColonCast:      "DoubleColonCast",
	ValuesRow:            "ValuesRow",
	UpdateMultiTable:     "UpdateMultiTable",
	InsertTableAlias:     "InsertTableAlias",
	UpdateTableAlias:     "UpdateTableAlias",
	DeleteTableAlias:     "DeleteTableAlias",
	AutoIncrement:        "AutoIncrement",
	Identity:             "Identity",
	TableCascade:         "TableCascade",
	TableIdentity:        "TableIdentity",
	TableTruncate:        "TableTruncate",
	InsertOnConflict:     "InsertOnConflict",
	InsertOnDuplicateKey: "InsertOnDuplicateKey",
	InsertIgnore:         "InsertIgnore",
	TableNotExists:       "TableNotExists",
	OffsetFetch:          "OffsetFetch",
	SelectExists:         "SelectExists",
	UpdateFromTable:      "UpdateFromTable",
	MSSavepoint:          "MSSavepoint",
	GeneratedIdentity:    "GeneratedIdentity",
	CompositeIn:          "CompositeIn",
	UpdateOrderLimit:     "UpdateOrderLimit",
	DeleteOrderLimit:     "DeleteOrderLimit",
	DeleteReturning:      "DeleteReturning",
	AlterColumnExists:    "AlterColumnExists",
}