...
1 package goqu
2
3 import (
4 "github.com/doug-martin/goqu/v9/exec"
5 "github.com/doug-martin/goqu/v9/exp"
6 "github.com/doug-martin/goqu/v9/internal/sb"
7 )
8
9 type TruncateDataset struct {
10 dialect SQLDialect
11 clauses exp.TruncateClauses
12 isPrepared prepared
13 queryFactory exec.QueryFactory
14 err error
15 }
16
17
18 func newTruncateDataset(d string, queryFactory exec.QueryFactory) *TruncateDataset {
19 return &TruncateDataset{
20 clauses: exp.NewTruncateClauses(),
21 dialect: GetDialect(d),
22 queryFactory: queryFactory,
23 }
24 }
25
26 func Truncate(table ...interface{}) *TruncateDataset {
27 return newTruncateDataset("default", nil).Table(table...)
28 }
29
30
31 func (td *TruncateDataset) WithDialect(dl string) *TruncateDataset {
32 ds := td.copy(td.GetClauses())
33 ds.dialect = GetDialect(dl)
34 return ds
35 }
36
37
38
39
40 func (td *TruncateDataset) Prepared(prepared bool) *TruncateDataset {
41 ret := td.copy(td.clauses)
42 ret.isPrepared = preparedFromBool(prepared)
43 return ret
44 }
45
46 func (td *TruncateDataset) IsPrepared() bool {
47 return td.isPrepared.Bool()
48 }
49
50
51 func (td *TruncateDataset) Dialect() SQLDialect {
52 return td.dialect
53 }
54
55
56 func (td *TruncateDataset) SetDialect(dialect SQLDialect) *TruncateDataset {
57 cd := td.copy(td.GetClauses())
58 cd.dialect = dialect
59 return cd
60 }
61
62 func (td *TruncateDataset) Expression() exp.Expression {
63 return td
64 }
65
66
67 func (td *TruncateDataset) Clone() exp.Expression {
68 return td.copy(td.clauses)
69 }
70
71
72 func (td *TruncateDataset) GetClauses() exp.TruncateClauses {
73 return td.clauses
74 }
75
76
77 func (td *TruncateDataset) copy(clauses exp.TruncateClauses) *TruncateDataset {
78 return &TruncateDataset{
79 dialect: td.dialect,
80 clauses: clauses,
81 isPrepared: td.isPrepared,
82 queryFactory: td.queryFactory,
83 err: td.err,
84 }
85 }
86
87
88
89
90
91
92 func (td *TruncateDataset) Table(table ...interface{}) *TruncateDataset {
93 return td.copy(td.clauses.SetTable(exp.NewColumnListExpression(table...)))
94 }
95
96
97 func (td *TruncateDataset) Cascade() *TruncateDataset {
98 opts := td.clauses.Options()
99 opts.Cascade = true
100 return td.copy(td.clauses.SetOptions(opts))
101 }
102
103
104 func (td *TruncateDataset) NoCascade() *TruncateDataset {
105 opts := td.clauses.Options()
106 opts.Cascade = false
107 return td.copy(td.clauses.SetOptions(opts))
108 }
109
110
111 func (td *TruncateDataset) Restrict() *TruncateDataset {
112 opts := td.clauses.Options()
113 opts.Restrict = true
114 return td.copy(td.clauses.SetOptions(opts))
115 }
116
117
118 func (td *TruncateDataset) NoRestrict() *TruncateDataset {
119 opts := td.clauses.Options()
120 opts.Restrict = false
121 return td.copy(td.clauses.SetOptions(opts))
122 }
123
124
125 func (td *TruncateDataset) Identity(identity string) *TruncateDataset {
126 opts := td.clauses.Options()
127 opts.Identity = identity
128 return td.copy(td.clauses.SetOptions(opts))
129 }
130
131
132 func (td *TruncateDataset) Error() error {
133 return td.err
134 }
135
136
137
138
139 func (td *TruncateDataset) SetError(err error) *TruncateDataset {
140 if td.err == nil {
141 td.err = err
142 }
143
144 return td
145 }
146
147
148
149
150
151
152 func (td *TruncateDataset) ToSQL() (sql string, params []interface{}, err error) {
153 return td.truncateSQLBuilder().ToSQL()
154 }
155
156
157
158 func (td *TruncateDataset) Executor() exec.QueryExecutor {
159 return td.queryFactory.FromSQLBuilder(td.truncateSQLBuilder())
160 }
161
162 func (td *TruncateDataset) truncateSQLBuilder() sb.SQLBuilder {
163 buf := sb.NewSQLBuilder(td.isPrepared.Bool())
164 if td.err != nil {
165 return buf.SetError(td.err)
166 }
167 td.dialect.ToTruncateSQL(buf, td.clauses)
168 return buf
169 }
170
View as plain text