Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
e79dbad6
Commit
e79dbad6
authored
Jan 10, 2026
by
yangjianbo
Browse files
Merge branch 'main' into test
parents
6a9cc13e
d1a6d6b1
Changes
83
Hide whitespace changes
Inline
Side-by-side
backend/ent/promocode_query.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"database/sql/driver"
"fmt"
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/predicate"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
)
// PromoCodeQuery is the builder for querying PromoCode entities.
type
PromoCodeQuery
struct
{
config
ctx
*
QueryContext
order
[]
promocode
.
OrderOption
inters
[]
Interceptor
predicates
[]
predicate
.
PromoCode
withUsageRecords
*
PromoCodeUsageQuery
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
}
// Where adds a new predicate for the PromoCodeQuery builder.
func
(
_q
*
PromoCodeQuery
)
Where
(
ps
...
predicate
.
PromoCode
)
*
PromoCodeQuery
{
_q
.
predicates
=
append
(
_q
.
predicates
,
ps
...
)
return
_q
}
// Limit the number of records to be returned by this query.
func
(
_q
*
PromoCodeQuery
)
Limit
(
limit
int
)
*
PromoCodeQuery
{
_q
.
ctx
.
Limit
=
&
limit
return
_q
}
// Offset to start from.
func
(
_q
*
PromoCodeQuery
)
Offset
(
offset
int
)
*
PromoCodeQuery
{
_q
.
ctx
.
Offset
=
&
offset
return
_q
}
// Unique configures the query builder to filter duplicate records on query.
// By default, unique is set to true, and can be disabled using this method.
func
(
_q
*
PromoCodeQuery
)
Unique
(
unique
bool
)
*
PromoCodeQuery
{
_q
.
ctx
.
Unique
=
&
unique
return
_q
}
// Order specifies how the records should be ordered.
func
(
_q
*
PromoCodeQuery
)
Order
(
o
...
promocode
.
OrderOption
)
*
PromoCodeQuery
{
_q
.
order
=
append
(
_q
.
order
,
o
...
)
return
_q
}
// QueryUsageRecords chains the current query on the "usage_records" edge.
func
(
_q
*
PromoCodeQuery
)
QueryUsageRecords
()
*
PromoCodeUsageQuery
{
query
:=
(
&
PromoCodeUsageClient
{
config
:
_q
.
config
})
.
Query
()
query
.
path
=
func
(
ctx
context
.
Context
)
(
fromU
*
sql
.
Selector
,
err
error
)
{
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
nil
,
err
}
selector
:=
_q
.
sqlQuery
(
ctx
)
if
err
:=
selector
.
Err
();
err
!=
nil
{
return
nil
,
err
}
step
:=
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
promocode
.
Table
,
promocode
.
FieldID
,
selector
),
sqlgraph
.
To
(
promocodeusage
.
Table
,
promocodeusage
.
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
O2M
,
false
,
promocode
.
UsageRecordsTable
,
promocode
.
UsageRecordsColumn
),
)
fromU
=
sqlgraph
.
SetNeighbors
(
_q
.
driver
.
Dialect
(),
step
)
return
fromU
,
nil
}
return
query
}
// First returns the first PromoCode entity from the query.
// Returns a *NotFoundError when no PromoCode was found.
func
(
_q
*
PromoCodeQuery
)
First
(
ctx
context
.
Context
)
(
*
PromoCode
,
error
)
{
nodes
,
err
:=
_q
.
Limit
(
1
)
.
All
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryFirst
))
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
nodes
)
==
0
{
return
nil
,
&
NotFoundError
{
promocode
.
Label
}
}
return
nodes
[
0
],
nil
}
// FirstX is like First, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
FirstX
(
ctx
context
.
Context
)
*
PromoCode
{
node
,
err
:=
_q
.
First
(
ctx
)
if
err
!=
nil
&&
!
IsNotFound
(
err
)
{
panic
(
err
)
}
return
node
}
// FirstID returns the first PromoCode ID from the query.
// Returns a *NotFoundError when no PromoCode ID was found.
func
(
_q
*
PromoCodeQuery
)
FirstID
(
ctx
context
.
Context
)
(
id
int64
,
err
error
)
{
var
ids
[]
int64
if
ids
,
err
=
_q
.
Limit
(
1
)
.
IDs
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryFirstID
));
err
!=
nil
{
return
}
if
len
(
ids
)
==
0
{
err
=
&
NotFoundError
{
promocode
.
Label
}
return
}
return
ids
[
0
],
nil
}
// FirstIDX is like FirstID, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
FirstIDX
(
ctx
context
.
Context
)
int64
{
id
,
err
:=
_q
.
FirstID
(
ctx
)
if
err
!=
nil
&&
!
IsNotFound
(
err
)
{
panic
(
err
)
}
return
id
}
// Only returns a single PromoCode entity found by the query, ensuring it only returns one.
// Returns a *NotSingularError when more than one PromoCode entity is found.
// Returns a *NotFoundError when no PromoCode entities are found.
func
(
_q
*
PromoCodeQuery
)
Only
(
ctx
context
.
Context
)
(
*
PromoCode
,
error
)
{
nodes
,
err
:=
_q
.
Limit
(
2
)
.
All
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryOnly
))
if
err
!=
nil
{
return
nil
,
err
}
switch
len
(
nodes
)
{
case
1
:
return
nodes
[
0
],
nil
case
0
:
return
nil
,
&
NotFoundError
{
promocode
.
Label
}
default
:
return
nil
,
&
NotSingularError
{
promocode
.
Label
}
}
}
// OnlyX is like Only, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
OnlyX
(
ctx
context
.
Context
)
*
PromoCode
{
node
,
err
:=
_q
.
Only
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
node
}
// OnlyID is like Only, but returns the only PromoCode ID in the query.
// Returns a *NotSingularError when more than one PromoCode ID is found.
// Returns a *NotFoundError when no entities are found.
func
(
_q
*
PromoCodeQuery
)
OnlyID
(
ctx
context
.
Context
)
(
id
int64
,
err
error
)
{
var
ids
[]
int64
if
ids
,
err
=
_q
.
Limit
(
2
)
.
IDs
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryOnlyID
));
err
!=
nil
{
return
}
switch
len
(
ids
)
{
case
1
:
id
=
ids
[
0
]
case
0
:
err
=
&
NotFoundError
{
promocode
.
Label
}
default
:
err
=
&
NotSingularError
{
promocode
.
Label
}
}
return
}
// OnlyIDX is like OnlyID, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
OnlyIDX
(
ctx
context
.
Context
)
int64
{
id
,
err
:=
_q
.
OnlyID
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
id
}
// All executes the query and returns a list of PromoCodes.
func
(
_q
*
PromoCodeQuery
)
All
(
ctx
context
.
Context
)
([]
*
PromoCode
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryAll
)
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
nil
,
err
}
qr
:=
querierAll
[[]
*
PromoCode
,
*
PromoCodeQuery
]()
return
withInterceptors
[[]
*
PromoCode
](
ctx
,
_q
,
qr
,
_q
.
inters
)
}
// AllX is like All, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
AllX
(
ctx
context
.
Context
)
[]
*
PromoCode
{
nodes
,
err
:=
_q
.
All
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
nodes
}
// IDs executes the query and returns a list of PromoCode IDs.
func
(
_q
*
PromoCodeQuery
)
IDs
(
ctx
context
.
Context
)
(
ids
[]
int64
,
err
error
)
{
if
_q
.
ctx
.
Unique
==
nil
&&
_q
.
path
!=
nil
{
_q
.
Unique
(
true
)
}
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryIDs
)
if
err
=
_q
.
Select
(
promocode
.
FieldID
)
.
Scan
(
ctx
,
&
ids
);
err
!=
nil
{
return
nil
,
err
}
return
ids
,
nil
}
// IDsX is like IDs, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
IDsX
(
ctx
context
.
Context
)
[]
int64
{
ids
,
err
:=
_q
.
IDs
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
ids
}
// Count returns the count of the given query.
func
(
_q
*
PromoCodeQuery
)
Count
(
ctx
context
.
Context
)
(
int
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryCount
)
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
0
,
err
}
return
withInterceptors
[
int
](
ctx
,
_q
,
querierCount
[
*
PromoCodeQuery
](),
_q
.
inters
)
}
// CountX is like Count, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
CountX
(
ctx
context
.
Context
)
int
{
count
,
err
:=
_q
.
Count
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
count
}
// Exist returns true if the query has elements in the graph.
func
(
_q
*
PromoCodeQuery
)
Exist
(
ctx
context
.
Context
)
(
bool
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryExist
)
switch
_
,
err
:=
_q
.
FirstID
(
ctx
);
{
case
IsNotFound
(
err
)
:
return
false
,
nil
case
err
!=
nil
:
return
false
,
fmt
.
Errorf
(
"ent: check existence: %w"
,
err
)
default
:
return
true
,
nil
}
}
// ExistX is like Exist, but panics if an error occurs.
func
(
_q
*
PromoCodeQuery
)
ExistX
(
ctx
context
.
Context
)
bool
{
exist
,
err
:=
_q
.
Exist
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
exist
}
// Clone returns a duplicate of the PromoCodeQuery builder, including all associated steps. It can be
// used to prepare common query builders and use them differently after the clone is made.
func
(
_q
*
PromoCodeQuery
)
Clone
()
*
PromoCodeQuery
{
if
_q
==
nil
{
return
nil
}
return
&
PromoCodeQuery
{
config
:
_q
.
config
,
ctx
:
_q
.
ctx
.
Clone
(),
order
:
append
([]
promocode
.
OrderOption
{},
_q
.
order
...
),
inters
:
append
([]
Interceptor
{},
_q
.
inters
...
),
predicates
:
append
([]
predicate
.
PromoCode
{},
_q
.
predicates
...
),
withUsageRecords
:
_q
.
withUsageRecords
.
Clone
(),
// clone intermediate query.
sql
:
_q
.
sql
.
Clone
(),
path
:
_q
.
path
,
}
}
// WithUsageRecords tells the query-builder to eager-load the nodes that are connected to
// the "usage_records" edge. The optional arguments are used to configure the query builder of the edge.
func
(
_q
*
PromoCodeQuery
)
WithUsageRecords
(
opts
...
func
(
*
PromoCodeUsageQuery
))
*
PromoCodeQuery
{
query
:=
(
&
PromoCodeUsageClient
{
config
:
_q
.
config
})
.
Query
()
for
_
,
opt
:=
range
opts
{
opt
(
query
)
}
_q
.
withUsageRecords
=
query
return
_q
}
// GroupBy is used to group vertices by one or more fields/columns.
// It is often used with aggregate functions, like: count, max, mean, min, sum.
//
// Example:
//
// var v []struct {
// Code string `json:"code,omitempty"`
// Count int `json:"count,omitempty"`
// }
//
// client.PromoCode.Query().
// GroupBy(promocode.FieldCode).
// Aggregate(ent.Count()).
// Scan(ctx, &v)
func
(
_q
*
PromoCodeQuery
)
GroupBy
(
field
string
,
fields
...
string
)
*
PromoCodeGroupBy
{
_q
.
ctx
.
Fields
=
append
([]
string
{
field
},
fields
...
)
grbuild
:=
&
PromoCodeGroupBy
{
build
:
_q
}
grbuild
.
flds
=
&
_q
.
ctx
.
Fields
grbuild
.
label
=
promocode
.
Label
grbuild
.
scan
=
grbuild
.
Scan
return
grbuild
}
// Select allows the selection one or more fields/columns for the given query,
// instead of selecting all fields in the entity.
//
// Example:
//
// var v []struct {
// Code string `json:"code,omitempty"`
// }
//
// client.PromoCode.Query().
// Select(promocode.FieldCode).
// Scan(ctx, &v)
func
(
_q
*
PromoCodeQuery
)
Select
(
fields
...
string
)
*
PromoCodeSelect
{
_q
.
ctx
.
Fields
=
append
(
_q
.
ctx
.
Fields
,
fields
...
)
sbuild
:=
&
PromoCodeSelect
{
PromoCodeQuery
:
_q
}
sbuild
.
label
=
promocode
.
Label
sbuild
.
flds
,
sbuild
.
scan
=
&
_q
.
ctx
.
Fields
,
sbuild
.
Scan
return
sbuild
}
// Aggregate returns a PromoCodeSelect configured with the given aggregations.
func
(
_q
*
PromoCodeQuery
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeSelect
{
return
_q
.
Select
()
.
Aggregate
(
fns
...
)
}
func
(
_q
*
PromoCodeQuery
)
prepareQuery
(
ctx
context
.
Context
)
error
{
for
_
,
inter
:=
range
_q
.
inters
{
if
inter
==
nil
{
return
fmt
.
Errorf
(
"ent: uninitialized interceptor (forgotten import ent/runtime?)"
)
}
if
trv
,
ok
:=
inter
.
(
Traverser
);
ok
{
if
err
:=
trv
.
Traverse
(
ctx
,
_q
);
err
!=
nil
{
return
err
}
}
}
for
_
,
f
:=
range
_q
.
ctx
.
Fields
{
if
!
promocode
.
ValidColumn
(
f
)
{
return
&
ValidationError
{
Name
:
f
,
err
:
fmt
.
Errorf
(
"ent: invalid field %q for query"
,
f
)}
}
}
if
_q
.
path
!=
nil
{
prev
,
err
:=
_q
.
path
(
ctx
)
if
err
!=
nil
{
return
err
}
_q
.
sql
=
prev
}
return
nil
}
func
(
_q
*
PromoCodeQuery
)
sqlAll
(
ctx
context
.
Context
,
hooks
...
queryHook
)
([]
*
PromoCode
,
error
)
{
var
(
nodes
=
[]
*
PromoCode
{}
_spec
=
_q
.
querySpec
()
loadedTypes
=
[
1
]
bool
{
_q
.
withUsageRecords
!=
nil
,
}
)
_spec
.
ScanValues
=
func
(
columns
[]
string
)
([]
any
,
error
)
{
return
(
*
PromoCode
)
.
scanValues
(
nil
,
columns
)
}
_spec
.
Assign
=
func
(
columns
[]
string
,
values
[]
any
)
error
{
node
:=
&
PromoCode
{
config
:
_q
.
config
}
nodes
=
append
(
nodes
,
node
)
node
.
Edges
.
loadedTypes
=
loadedTypes
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
if
err
:=
sqlgraph
.
QueryNodes
(
ctx
,
_q
.
driver
,
_spec
);
err
!=
nil
{
return
nil
,
err
}
if
len
(
nodes
)
==
0
{
return
nodes
,
nil
}
if
query
:=
_q
.
withUsageRecords
;
query
!=
nil
{
if
err
:=
_q
.
loadUsageRecords
(
ctx
,
query
,
nodes
,
func
(
n
*
PromoCode
)
{
n
.
Edges
.
UsageRecords
=
[]
*
PromoCodeUsage
{}
},
func
(
n
*
PromoCode
,
e
*
PromoCodeUsage
)
{
n
.
Edges
.
UsageRecords
=
append
(
n
.
Edges
.
UsageRecords
,
e
)
});
err
!=
nil
{
return
nil
,
err
}
}
return
nodes
,
nil
}
func
(
_q
*
PromoCodeQuery
)
loadUsageRecords
(
ctx
context
.
Context
,
query
*
PromoCodeUsageQuery
,
nodes
[]
*
PromoCode
,
init
func
(
*
PromoCode
),
assign
func
(
*
PromoCode
,
*
PromoCodeUsage
))
error
{
fks
:=
make
([]
driver
.
Value
,
0
,
len
(
nodes
))
nodeids
:=
make
(
map
[
int64
]
*
PromoCode
)
for
i
:=
range
nodes
{
fks
=
append
(
fks
,
nodes
[
i
]
.
ID
)
nodeids
[
nodes
[
i
]
.
ID
]
=
nodes
[
i
]
if
init
!=
nil
{
init
(
nodes
[
i
])
}
}
if
len
(
query
.
ctx
.
Fields
)
>
0
{
query
.
ctx
.
AppendFieldOnce
(
promocodeusage
.
FieldPromoCodeID
)
}
query
.
Where
(
predicate
.
PromoCodeUsage
(
func
(
s
*
sql
.
Selector
)
{
s
.
Where
(
sql
.
InValues
(
s
.
C
(
promocode
.
UsageRecordsColumn
),
fks
...
))
}))
neighbors
,
err
:=
query
.
All
(
ctx
)
if
err
!=
nil
{
return
err
}
for
_
,
n
:=
range
neighbors
{
fk
:=
n
.
PromoCodeID
node
,
ok
:=
nodeids
[
fk
]
if
!
ok
{
return
fmt
.
Errorf
(
`unexpected referenced foreign-key "promo_code_id" returned %v for node %v`
,
fk
,
n
.
ID
)
}
assign
(
node
,
n
)
}
return
nil
}
func
(
_q
*
PromoCodeQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
}
return
sqlgraph
.
CountNodes
(
ctx
,
_q
.
driver
,
_spec
)
}
func
(
_q
*
PromoCodeQuery
)
querySpec
()
*
sqlgraph
.
QuerySpec
{
_spec
:=
sqlgraph
.
NewQuerySpec
(
promocode
.
Table
,
promocode
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
))
_spec
.
From
=
_q
.
sql
if
unique
:=
_q
.
ctx
.
Unique
;
unique
!=
nil
{
_spec
.
Unique
=
*
unique
}
else
if
_q
.
path
!=
nil
{
_spec
.
Unique
=
true
}
if
fields
:=
_q
.
ctx
.
Fields
;
len
(
fields
)
>
0
{
_spec
.
Node
.
Columns
=
make
([]
string
,
0
,
len
(
fields
))
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
promocode
.
FieldID
)
for
i
:=
range
fields
{
if
fields
[
i
]
!=
promocode
.
FieldID
{
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
fields
[
i
])
}
}
}
if
ps
:=
_q
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
limit
:=
_q
.
ctx
.
Limit
;
limit
!=
nil
{
_spec
.
Limit
=
*
limit
}
if
offset
:=
_q
.
ctx
.
Offset
;
offset
!=
nil
{
_spec
.
Offset
=
*
offset
}
if
ps
:=
_q
.
order
;
len
(
ps
)
>
0
{
_spec
.
Order
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
return
_spec
}
func
(
_q
*
PromoCodeQuery
)
sqlQuery
(
ctx
context
.
Context
)
*
sql
.
Selector
{
builder
:=
sql
.
Dialect
(
_q
.
driver
.
Dialect
())
t1
:=
builder
.
Table
(
promocode
.
Table
)
columns
:=
_q
.
ctx
.
Fields
if
len
(
columns
)
==
0
{
columns
=
promocode
.
Columns
}
selector
:=
builder
.
Select
(
t1
.
Columns
(
columns
...
)
...
)
.
From
(
t1
)
if
_q
.
sql
!=
nil
{
selector
=
_q
.
sql
selector
.
Select
(
selector
.
Columns
(
columns
...
)
...
)
}
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
for
_
,
p
:=
range
_q
.
order
{
p
(
selector
)
}
if
offset
:=
_q
.
ctx
.
Offset
;
offset
!=
nil
{
// limit is mandatory for offset clause. We start
// with default value, and override it below if needed.
selector
.
Offset
(
*
offset
)
.
Limit
(
math
.
MaxInt32
)
}
if
limit
:=
_q
.
ctx
.
Limit
;
limit
!=
nil
{
selector
.
Limit
(
*
limit
)
}
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
PromoCodeQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
PromoCodeQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
PromoCodeQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
PromoCodeQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// PromoCodeGroupBy is the group-by builder for PromoCode entities.
type
PromoCodeGroupBy
struct
{
selector
build
*
PromoCodeQuery
}
// Aggregate adds the given aggregation functions to the group-by query.
func
(
_g
*
PromoCodeGroupBy
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeGroupBy
{
_g
.
fns
=
append
(
_g
.
fns
,
fns
...
)
return
_g
}
// Scan applies the selector query and scans the result into the given value.
func
(
_g
*
PromoCodeGroupBy
)
Scan
(
ctx
context
.
Context
,
v
any
)
error
{
ctx
=
setContextOp
(
ctx
,
_g
.
build
.
ctx
,
ent
.
OpQueryGroupBy
)
if
err
:=
_g
.
build
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
err
}
return
scanWithInterceptors
[
*
PromoCodeQuery
,
*
PromoCodeGroupBy
](
ctx
,
_g
.
build
,
_g
,
_g
.
build
.
inters
,
v
)
}
func
(
_g
*
PromoCodeGroupBy
)
sqlScan
(
ctx
context
.
Context
,
root
*
PromoCodeQuery
,
v
any
)
error
{
selector
:=
root
.
sqlQuery
(
ctx
)
.
Select
()
aggregation
:=
make
([]
string
,
0
,
len
(
_g
.
fns
))
for
_
,
fn
:=
range
_g
.
fns
{
aggregation
=
append
(
aggregation
,
fn
(
selector
))
}
if
len
(
selector
.
SelectedColumns
())
==
0
{
columns
:=
make
([]
string
,
0
,
len
(
*
_g
.
flds
)
+
len
(
_g
.
fns
))
for
_
,
f
:=
range
*
_g
.
flds
{
columns
=
append
(
columns
,
selector
.
C
(
f
))
}
columns
=
append
(
columns
,
aggregation
...
)
selector
.
Select
(
columns
...
)
}
selector
.
GroupBy
(
selector
.
Columns
(
*
_g
.
flds
...
)
...
)
if
err
:=
selector
.
Err
();
err
!=
nil
{
return
err
}
rows
:=
&
sql
.
Rows
{}
query
,
args
:=
selector
.
Query
()
if
err
:=
_g
.
build
.
driver
.
Query
(
ctx
,
query
,
args
,
rows
);
err
!=
nil
{
return
err
}
defer
rows
.
Close
()
return
sql
.
ScanSlice
(
rows
,
v
)
}
// PromoCodeSelect is the builder for selecting fields of PromoCode entities.
type
PromoCodeSelect
struct
{
*
PromoCodeQuery
selector
}
// Aggregate adds the given aggregation functions to the selector query.
func
(
_s
*
PromoCodeSelect
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeSelect
{
_s
.
fns
=
append
(
_s
.
fns
,
fns
...
)
return
_s
}
// Scan applies the selector query and scans the result into the given value.
func
(
_s
*
PromoCodeSelect
)
Scan
(
ctx
context
.
Context
,
v
any
)
error
{
ctx
=
setContextOp
(
ctx
,
_s
.
ctx
,
ent
.
OpQuerySelect
)
if
err
:=
_s
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
err
}
return
scanWithInterceptors
[
*
PromoCodeQuery
,
*
PromoCodeSelect
](
ctx
,
_s
.
PromoCodeQuery
,
_s
,
_s
.
inters
,
v
)
}
func
(
_s
*
PromoCodeSelect
)
sqlScan
(
ctx
context
.
Context
,
root
*
PromoCodeQuery
,
v
any
)
error
{
selector
:=
root
.
sqlQuery
(
ctx
)
aggregation
:=
make
([]
string
,
0
,
len
(
_s
.
fns
))
for
_
,
fn
:=
range
_s
.
fns
{
aggregation
=
append
(
aggregation
,
fn
(
selector
))
}
switch
n
:=
len
(
*
_s
.
selector
.
flds
);
{
case
n
==
0
&&
len
(
aggregation
)
>
0
:
selector
.
Select
(
aggregation
...
)
case
n
!=
0
&&
len
(
aggregation
)
>
0
:
selector
.
AppendSelect
(
aggregation
...
)
}
rows
:=
&
sql
.
Rows
{}
query
,
args
:=
selector
.
Query
()
if
err
:=
_s
.
driver
.
Query
(
ctx
,
query
,
args
,
rows
);
err
!=
nil
{
return
err
}
defer
rows
.
Close
()
return
sql
.
ScanSlice
(
rows
,
v
)
}
backend/ent/promocode_update.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"errors"
"fmt"
"time"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/predicate"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
)
// PromoCodeUpdate is the builder for updating PromoCode entities.
type
PromoCodeUpdate
struct
{
config
hooks
[]
Hook
mutation
*
PromoCodeMutation
}
// Where appends a list predicates to the PromoCodeUpdate builder.
func
(
_u
*
PromoCodeUpdate
)
Where
(
ps
...
predicate
.
PromoCode
)
*
PromoCodeUpdate
{
_u
.
mutation
.
Where
(
ps
...
)
return
_u
}
// SetCode sets the "code" field.
func
(
_u
*
PromoCodeUpdate
)
SetCode
(
v
string
)
*
PromoCodeUpdate
{
_u
.
mutation
.
SetCode
(
v
)
return
_u
}
// SetNillableCode sets the "code" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableCode
(
v
*
string
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetCode
(
*
v
)
}
return
_u
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
_u
*
PromoCodeUpdate
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUpdate
{
_u
.
mutation
.
ResetBonusAmount
()
_u
.
mutation
.
SetBonusAmount
(
v
)
return
_u
}
// SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableBonusAmount
(
v
*
float64
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetBonusAmount
(
*
v
)
}
return
_u
}
// AddBonusAmount adds value to the "bonus_amount" field.
func
(
_u
*
PromoCodeUpdate
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUpdate
{
_u
.
mutation
.
AddBonusAmount
(
v
)
return
_u
}
// SetMaxUses sets the "max_uses" field.
func
(
_u
*
PromoCodeUpdate
)
SetMaxUses
(
v
int
)
*
PromoCodeUpdate
{
_u
.
mutation
.
ResetMaxUses
()
_u
.
mutation
.
SetMaxUses
(
v
)
return
_u
}
// SetNillableMaxUses sets the "max_uses" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableMaxUses
(
v
*
int
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetMaxUses
(
*
v
)
}
return
_u
}
// AddMaxUses adds value to the "max_uses" field.
func
(
_u
*
PromoCodeUpdate
)
AddMaxUses
(
v
int
)
*
PromoCodeUpdate
{
_u
.
mutation
.
AddMaxUses
(
v
)
return
_u
}
// SetUsedCount sets the "used_count" field.
func
(
_u
*
PromoCodeUpdate
)
SetUsedCount
(
v
int
)
*
PromoCodeUpdate
{
_u
.
mutation
.
ResetUsedCount
()
_u
.
mutation
.
SetUsedCount
(
v
)
return
_u
}
// SetNillableUsedCount sets the "used_count" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableUsedCount
(
v
*
int
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetUsedCount
(
*
v
)
}
return
_u
}
// AddUsedCount adds value to the "used_count" field.
func
(
_u
*
PromoCodeUpdate
)
AddUsedCount
(
v
int
)
*
PromoCodeUpdate
{
_u
.
mutation
.
AddUsedCount
(
v
)
return
_u
}
// SetStatus sets the "status" field.
func
(
_u
*
PromoCodeUpdate
)
SetStatus
(
v
string
)
*
PromoCodeUpdate
{
_u
.
mutation
.
SetStatus
(
v
)
return
_u
}
// SetNillableStatus sets the "status" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableStatus
(
v
*
string
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetStatus
(
*
v
)
}
return
_u
}
// SetExpiresAt sets the "expires_at" field.
func
(
_u
*
PromoCodeUpdate
)
SetExpiresAt
(
v
time
.
Time
)
*
PromoCodeUpdate
{
_u
.
mutation
.
SetExpiresAt
(
v
)
return
_u
}
// SetNillableExpiresAt sets the "expires_at" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableExpiresAt
(
v
*
time
.
Time
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetExpiresAt
(
*
v
)
}
return
_u
}
// ClearExpiresAt clears the value of the "expires_at" field.
func
(
_u
*
PromoCodeUpdate
)
ClearExpiresAt
()
*
PromoCodeUpdate
{
_u
.
mutation
.
ClearExpiresAt
()
return
_u
}
// SetNotes sets the "notes" field.
func
(
_u
*
PromoCodeUpdate
)
SetNotes
(
v
string
)
*
PromoCodeUpdate
{
_u
.
mutation
.
SetNotes
(
v
)
return
_u
}
// SetNillableNotes sets the "notes" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdate
)
SetNillableNotes
(
v
*
string
)
*
PromoCodeUpdate
{
if
v
!=
nil
{
_u
.
SetNotes
(
*
v
)
}
return
_u
}
// ClearNotes clears the value of the "notes" field.
func
(
_u
*
PromoCodeUpdate
)
ClearNotes
()
*
PromoCodeUpdate
{
_u
.
mutation
.
ClearNotes
()
return
_u
}
// SetUpdatedAt sets the "updated_at" field.
func
(
_u
*
PromoCodeUpdate
)
SetUpdatedAt
(
v
time
.
Time
)
*
PromoCodeUpdate
{
_u
.
mutation
.
SetUpdatedAt
(
v
)
return
_u
}
// AddUsageRecordIDs adds the "usage_records" edge to the PromoCodeUsage entity by IDs.
func
(
_u
*
PromoCodeUpdate
)
AddUsageRecordIDs
(
ids
...
int64
)
*
PromoCodeUpdate
{
_u
.
mutation
.
AddUsageRecordIDs
(
ids
...
)
return
_u
}
// AddUsageRecords adds the "usage_records" edges to the PromoCodeUsage entity.
func
(
_u
*
PromoCodeUpdate
)
AddUsageRecords
(
v
...*
PromoCodeUsage
)
*
PromoCodeUpdate
{
ids
:=
make
([]
int64
,
len
(
v
))
for
i
:=
range
v
{
ids
[
i
]
=
v
[
i
]
.
ID
}
return
_u
.
AddUsageRecordIDs
(
ids
...
)
}
// Mutation returns the PromoCodeMutation object of the builder.
func
(
_u
*
PromoCodeUpdate
)
Mutation
()
*
PromoCodeMutation
{
return
_u
.
mutation
}
// ClearUsageRecords clears all "usage_records" edges to the PromoCodeUsage entity.
func
(
_u
*
PromoCodeUpdate
)
ClearUsageRecords
()
*
PromoCodeUpdate
{
_u
.
mutation
.
ClearUsageRecords
()
return
_u
}
// RemoveUsageRecordIDs removes the "usage_records" edge to PromoCodeUsage entities by IDs.
func
(
_u
*
PromoCodeUpdate
)
RemoveUsageRecordIDs
(
ids
...
int64
)
*
PromoCodeUpdate
{
_u
.
mutation
.
RemoveUsageRecordIDs
(
ids
...
)
return
_u
}
// RemoveUsageRecords removes "usage_records" edges to PromoCodeUsage entities.
func
(
_u
*
PromoCodeUpdate
)
RemoveUsageRecords
(
v
...*
PromoCodeUsage
)
*
PromoCodeUpdate
{
ids
:=
make
([]
int64
,
len
(
v
))
for
i
:=
range
v
{
ids
[
i
]
=
v
[
i
]
.
ID
}
return
_u
.
RemoveUsageRecordIDs
(
ids
...
)
}
// Save executes the query and returns the number of nodes affected by the update operation.
func
(
_u
*
PromoCodeUpdate
)
Save
(
ctx
context
.
Context
)
(
int
,
error
)
{
_u
.
defaults
()
return
withHooks
(
ctx
,
_u
.
sqlSave
,
_u
.
mutation
,
_u
.
hooks
)
}
// SaveX is like Save, but panics if an error occurs.
func
(
_u
*
PromoCodeUpdate
)
SaveX
(
ctx
context
.
Context
)
int
{
affected
,
err
:=
_u
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
affected
}
// Exec executes the query.
func
(
_u
*
PromoCodeUpdate
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_u
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_u
*
PromoCodeUpdate
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_u
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// defaults sets the default values of the builder before save.
func
(
_u
*
PromoCodeUpdate
)
defaults
()
{
if
_
,
ok
:=
_u
.
mutation
.
UpdatedAt
();
!
ok
{
v
:=
promocode
.
UpdateDefaultUpdatedAt
()
_u
.
mutation
.
SetUpdatedAt
(
v
)
}
}
// check runs all checks and user-defined validators on the builder.
func
(
_u
*
PromoCodeUpdate
)
check
()
error
{
if
v
,
ok
:=
_u
.
mutation
.
Code
();
ok
{
if
err
:=
promocode
.
CodeValidator
(
v
);
err
!=
nil
{
return
&
ValidationError
{
Name
:
"code"
,
err
:
fmt
.
Errorf
(
`ent: validator failed for field "PromoCode.code": %w`
,
err
)}
}
}
if
v
,
ok
:=
_u
.
mutation
.
Status
();
ok
{
if
err
:=
promocode
.
StatusValidator
(
v
);
err
!=
nil
{
return
&
ValidationError
{
Name
:
"status"
,
err
:
fmt
.
Errorf
(
`ent: validator failed for field "PromoCode.status": %w`
,
err
)}
}
}
return
nil
}
func
(
_u
*
PromoCodeUpdate
)
sqlSave
(
ctx
context
.
Context
)
(
_node
int
,
err
error
)
{
if
err
:=
_u
.
check
();
err
!=
nil
{
return
_node
,
err
}
_spec
:=
sqlgraph
.
NewUpdateSpec
(
promocode
.
Table
,
promocode
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
))
if
ps
:=
_u
.
mutation
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
value
,
ok
:=
_u
.
mutation
.
Code
();
ok
{
_spec
.
SetField
(
promocode
.
FieldCode
,
field
.
TypeString
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
BonusAmount
();
ok
{
_spec
.
SetField
(
promocode
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedBonusAmount
();
ok
{
_spec
.
AddField
(
promocode
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
MaxUses
();
ok
{
_spec
.
SetField
(
promocode
.
FieldMaxUses
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedMaxUses
();
ok
{
_spec
.
AddField
(
promocode
.
FieldMaxUses
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
UsedCount
();
ok
{
_spec
.
SetField
(
promocode
.
FieldUsedCount
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedUsedCount
();
ok
{
_spec
.
AddField
(
promocode
.
FieldUsedCount
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
Status
();
ok
{
_spec
.
SetField
(
promocode
.
FieldStatus
,
field
.
TypeString
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
ExpiresAt
();
ok
{
_spec
.
SetField
(
promocode
.
FieldExpiresAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
ExpiresAtCleared
()
{
_spec
.
ClearField
(
promocode
.
FieldExpiresAt
,
field
.
TypeTime
)
}
if
value
,
ok
:=
_u
.
mutation
.
Notes
();
ok
{
_spec
.
SetField
(
promocode
.
FieldNotes
,
field
.
TypeString
,
value
)
}
if
_u
.
mutation
.
NotesCleared
()
{
_spec
.
ClearField
(
promocode
.
FieldNotes
,
field
.
TypeString
)
}
if
value
,
ok
:=
_u
.
mutation
.
UpdatedAt
();
ok
{
_spec
.
SetField
(
promocode
.
FieldUpdatedAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
UsageRecordsCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
RemovedUsageRecordsIDs
();
len
(
nodes
)
>
0
&&
!
_u
.
mutation
.
UsageRecordsCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
UsageRecordsIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
if
_node
,
err
=
sqlgraph
.
UpdateNodes
(
ctx
,
_u
.
driver
,
_spec
);
err
!=
nil
{
if
_
,
ok
:=
err
.
(
*
sqlgraph
.
NotFoundError
);
ok
{
err
=
&
NotFoundError
{
promocode
.
Label
}
}
else
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
return
0
,
err
}
_u
.
mutation
.
done
=
true
return
_node
,
nil
}
// PromoCodeUpdateOne is the builder for updating a single PromoCode entity.
type
PromoCodeUpdateOne
struct
{
config
fields
[]
string
hooks
[]
Hook
mutation
*
PromoCodeMutation
}
// SetCode sets the "code" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetCode
(
v
string
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
SetCode
(
v
)
return
_u
}
// SetNillableCode sets the "code" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableCode
(
v
*
string
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetCode
(
*
v
)
}
return
_u
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ResetBonusAmount
()
_u
.
mutation
.
SetBonusAmount
(
v
)
return
_u
}
// SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableBonusAmount
(
v
*
float64
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetBonusAmount
(
*
v
)
}
return
_u
}
// AddBonusAmount adds value to the "bonus_amount" field.
func
(
_u
*
PromoCodeUpdateOne
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
AddBonusAmount
(
v
)
return
_u
}
// SetMaxUses sets the "max_uses" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetMaxUses
(
v
int
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ResetMaxUses
()
_u
.
mutation
.
SetMaxUses
(
v
)
return
_u
}
// SetNillableMaxUses sets the "max_uses" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableMaxUses
(
v
*
int
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetMaxUses
(
*
v
)
}
return
_u
}
// AddMaxUses adds value to the "max_uses" field.
func
(
_u
*
PromoCodeUpdateOne
)
AddMaxUses
(
v
int
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
AddMaxUses
(
v
)
return
_u
}
// SetUsedCount sets the "used_count" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetUsedCount
(
v
int
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ResetUsedCount
()
_u
.
mutation
.
SetUsedCount
(
v
)
return
_u
}
// SetNillableUsedCount sets the "used_count" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableUsedCount
(
v
*
int
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetUsedCount
(
*
v
)
}
return
_u
}
// AddUsedCount adds value to the "used_count" field.
func
(
_u
*
PromoCodeUpdateOne
)
AddUsedCount
(
v
int
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
AddUsedCount
(
v
)
return
_u
}
// SetStatus sets the "status" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetStatus
(
v
string
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
SetStatus
(
v
)
return
_u
}
// SetNillableStatus sets the "status" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableStatus
(
v
*
string
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetStatus
(
*
v
)
}
return
_u
}
// SetExpiresAt sets the "expires_at" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetExpiresAt
(
v
time
.
Time
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
SetExpiresAt
(
v
)
return
_u
}
// SetNillableExpiresAt sets the "expires_at" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableExpiresAt
(
v
*
time
.
Time
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetExpiresAt
(
*
v
)
}
return
_u
}
// ClearExpiresAt clears the value of the "expires_at" field.
func
(
_u
*
PromoCodeUpdateOne
)
ClearExpiresAt
()
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ClearExpiresAt
()
return
_u
}
// SetNotes sets the "notes" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetNotes
(
v
string
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
SetNotes
(
v
)
return
_u
}
// SetNillableNotes sets the "notes" field if the given value is not nil.
func
(
_u
*
PromoCodeUpdateOne
)
SetNillableNotes
(
v
*
string
)
*
PromoCodeUpdateOne
{
if
v
!=
nil
{
_u
.
SetNotes
(
*
v
)
}
return
_u
}
// ClearNotes clears the value of the "notes" field.
func
(
_u
*
PromoCodeUpdateOne
)
ClearNotes
()
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ClearNotes
()
return
_u
}
// SetUpdatedAt sets the "updated_at" field.
func
(
_u
*
PromoCodeUpdateOne
)
SetUpdatedAt
(
v
time
.
Time
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
SetUpdatedAt
(
v
)
return
_u
}
// AddUsageRecordIDs adds the "usage_records" edge to the PromoCodeUsage entity by IDs.
func
(
_u
*
PromoCodeUpdateOne
)
AddUsageRecordIDs
(
ids
...
int64
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
AddUsageRecordIDs
(
ids
...
)
return
_u
}
// AddUsageRecords adds the "usage_records" edges to the PromoCodeUsage entity.
func
(
_u
*
PromoCodeUpdateOne
)
AddUsageRecords
(
v
...*
PromoCodeUsage
)
*
PromoCodeUpdateOne
{
ids
:=
make
([]
int64
,
len
(
v
))
for
i
:=
range
v
{
ids
[
i
]
=
v
[
i
]
.
ID
}
return
_u
.
AddUsageRecordIDs
(
ids
...
)
}
// Mutation returns the PromoCodeMutation object of the builder.
func
(
_u
*
PromoCodeUpdateOne
)
Mutation
()
*
PromoCodeMutation
{
return
_u
.
mutation
}
// ClearUsageRecords clears all "usage_records" edges to the PromoCodeUsage entity.
func
(
_u
*
PromoCodeUpdateOne
)
ClearUsageRecords
()
*
PromoCodeUpdateOne
{
_u
.
mutation
.
ClearUsageRecords
()
return
_u
}
// RemoveUsageRecordIDs removes the "usage_records" edge to PromoCodeUsage entities by IDs.
func
(
_u
*
PromoCodeUpdateOne
)
RemoveUsageRecordIDs
(
ids
...
int64
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
RemoveUsageRecordIDs
(
ids
...
)
return
_u
}
// RemoveUsageRecords removes "usage_records" edges to PromoCodeUsage entities.
func
(
_u
*
PromoCodeUpdateOne
)
RemoveUsageRecords
(
v
...*
PromoCodeUsage
)
*
PromoCodeUpdateOne
{
ids
:=
make
([]
int64
,
len
(
v
))
for
i
:=
range
v
{
ids
[
i
]
=
v
[
i
]
.
ID
}
return
_u
.
RemoveUsageRecordIDs
(
ids
...
)
}
// Where appends a list predicates to the PromoCodeUpdate builder.
func
(
_u
*
PromoCodeUpdateOne
)
Where
(
ps
...
predicate
.
PromoCode
)
*
PromoCodeUpdateOne
{
_u
.
mutation
.
Where
(
ps
...
)
return
_u
}
// Select allows selecting one or more fields (columns) of the returned entity.
// The default is selecting all fields defined in the entity schema.
func
(
_u
*
PromoCodeUpdateOne
)
Select
(
field
string
,
fields
...
string
)
*
PromoCodeUpdateOne
{
_u
.
fields
=
append
([]
string
{
field
},
fields
...
)
return
_u
}
// Save executes the query and returns the updated PromoCode entity.
func
(
_u
*
PromoCodeUpdateOne
)
Save
(
ctx
context
.
Context
)
(
*
PromoCode
,
error
)
{
_u
.
defaults
()
return
withHooks
(
ctx
,
_u
.
sqlSave
,
_u
.
mutation
,
_u
.
hooks
)
}
// SaveX is like Save, but panics if an error occurs.
func
(
_u
*
PromoCodeUpdateOne
)
SaveX
(
ctx
context
.
Context
)
*
PromoCode
{
node
,
err
:=
_u
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
node
}
// Exec executes the query on the entity.
func
(
_u
*
PromoCodeUpdateOne
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_u
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_u
*
PromoCodeUpdateOne
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_u
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// defaults sets the default values of the builder before save.
func
(
_u
*
PromoCodeUpdateOne
)
defaults
()
{
if
_
,
ok
:=
_u
.
mutation
.
UpdatedAt
();
!
ok
{
v
:=
promocode
.
UpdateDefaultUpdatedAt
()
_u
.
mutation
.
SetUpdatedAt
(
v
)
}
}
// check runs all checks and user-defined validators on the builder.
func
(
_u
*
PromoCodeUpdateOne
)
check
()
error
{
if
v
,
ok
:=
_u
.
mutation
.
Code
();
ok
{
if
err
:=
promocode
.
CodeValidator
(
v
);
err
!=
nil
{
return
&
ValidationError
{
Name
:
"code"
,
err
:
fmt
.
Errorf
(
`ent: validator failed for field "PromoCode.code": %w`
,
err
)}
}
}
if
v
,
ok
:=
_u
.
mutation
.
Status
();
ok
{
if
err
:=
promocode
.
StatusValidator
(
v
);
err
!=
nil
{
return
&
ValidationError
{
Name
:
"status"
,
err
:
fmt
.
Errorf
(
`ent: validator failed for field "PromoCode.status": %w`
,
err
)}
}
}
return
nil
}
func
(
_u
*
PromoCodeUpdateOne
)
sqlSave
(
ctx
context
.
Context
)
(
_node
*
PromoCode
,
err
error
)
{
if
err
:=
_u
.
check
();
err
!=
nil
{
return
_node
,
err
}
_spec
:=
sqlgraph
.
NewUpdateSpec
(
promocode
.
Table
,
promocode
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
))
id
,
ok
:=
_u
.
mutation
.
ID
()
if
!
ok
{
return
nil
,
&
ValidationError
{
Name
:
"id"
,
err
:
errors
.
New
(
`ent: missing "PromoCode.id" for update`
)}
}
_spec
.
Node
.
ID
.
Value
=
id
if
fields
:=
_u
.
fields
;
len
(
fields
)
>
0
{
_spec
.
Node
.
Columns
=
make
([]
string
,
0
,
len
(
fields
))
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
promocode
.
FieldID
)
for
_
,
f
:=
range
fields
{
if
!
promocode
.
ValidColumn
(
f
)
{
return
nil
,
&
ValidationError
{
Name
:
f
,
err
:
fmt
.
Errorf
(
"ent: invalid field %q for query"
,
f
)}
}
if
f
!=
promocode
.
FieldID
{
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
f
)
}
}
}
if
ps
:=
_u
.
mutation
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
value
,
ok
:=
_u
.
mutation
.
Code
();
ok
{
_spec
.
SetField
(
promocode
.
FieldCode
,
field
.
TypeString
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
BonusAmount
();
ok
{
_spec
.
SetField
(
promocode
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedBonusAmount
();
ok
{
_spec
.
AddField
(
promocode
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
MaxUses
();
ok
{
_spec
.
SetField
(
promocode
.
FieldMaxUses
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedMaxUses
();
ok
{
_spec
.
AddField
(
promocode
.
FieldMaxUses
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
UsedCount
();
ok
{
_spec
.
SetField
(
promocode
.
FieldUsedCount
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedUsedCount
();
ok
{
_spec
.
AddField
(
promocode
.
FieldUsedCount
,
field
.
TypeInt
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
Status
();
ok
{
_spec
.
SetField
(
promocode
.
FieldStatus
,
field
.
TypeString
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
ExpiresAt
();
ok
{
_spec
.
SetField
(
promocode
.
FieldExpiresAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
ExpiresAtCleared
()
{
_spec
.
ClearField
(
promocode
.
FieldExpiresAt
,
field
.
TypeTime
)
}
if
value
,
ok
:=
_u
.
mutation
.
Notes
();
ok
{
_spec
.
SetField
(
promocode
.
FieldNotes
,
field
.
TypeString
,
value
)
}
if
_u
.
mutation
.
NotesCleared
()
{
_spec
.
ClearField
(
promocode
.
FieldNotes
,
field
.
TypeString
)
}
if
value
,
ok
:=
_u
.
mutation
.
UpdatedAt
();
ok
{
_spec
.
SetField
(
promocode
.
FieldUpdatedAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
UsageRecordsCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
RemovedUsageRecordsIDs
();
len
(
nodes
)
>
0
&&
!
_u
.
mutation
.
UsageRecordsCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
UsageRecordsIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
O2M
,
Inverse
:
false
,
Table
:
promocode
.
UsageRecordsTable
,
Columns
:
[]
string
{
promocode
.
UsageRecordsColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
_node
=
&
PromoCode
{
config
:
_u
.
config
}
_spec
.
Assign
=
_node
.
assignValues
_spec
.
ScanValues
=
_node
.
scanValues
if
err
=
sqlgraph
.
UpdateNode
(
ctx
,
_u
.
driver
,
_spec
);
err
!=
nil
{
if
_
,
ok
:=
err
.
(
*
sqlgraph
.
NotFoundError
);
ok
{
err
=
&
NotFoundError
{
promocode
.
Label
}
}
else
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
return
nil
,
err
}
_u
.
mutation
.
done
=
true
return
_node
,
nil
}
backend/ent/promocodeusage.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"fmt"
"strings"
"time"
"entgo.io/ent"
"entgo.io/ent/dialect/sql"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
"github.com/Wei-Shaw/sub2api/ent/user"
)
// PromoCodeUsage is the model entity for the PromoCodeUsage schema.
type
PromoCodeUsage
struct
{
config
`json:"-"`
// ID of the ent.
ID
int64
`json:"id,omitempty"`
// 优惠码ID
PromoCodeID
int64
`json:"promo_code_id,omitempty"`
// 使用用户ID
UserID
int64
`json:"user_id,omitempty"`
// 实际赠送金额
BonusAmount
float64
`json:"bonus_amount,omitempty"`
// 使用时间
UsedAt
time
.
Time
`json:"used_at,omitempty"`
// Edges holds the relations/edges for other nodes in the graph.
// The values are being populated by the PromoCodeUsageQuery when eager-loading is set.
Edges
PromoCodeUsageEdges
`json:"edges"`
selectValues
sql
.
SelectValues
}
// PromoCodeUsageEdges holds the relations/edges for other nodes in the graph.
type
PromoCodeUsageEdges
struct
{
// PromoCode holds the value of the promo_code edge.
PromoCode
*
PromoCode
`json:"promo_code,omitempty"`
// User holds the value of the user edge.
User
*
User
`json:"user,omitempty"`
// loadedTypes holds the information for reporting if a
// type was loaded (or requested) in eager-loading or not.
loadedTypes
[
2
]
bool
}
// PromoCodeOrErr returns the PromoCode value or an error if the edge
// was not loaded in eager-loading, or loaded but was not found.
func
(
e
PromoCodeUsageEdges
)
PromoCodeOrErr
()
(
*
PromoCode
,
error
)
{
if
e
.
PromoCode
!=
nil
{
return
e
.
PromoCode
,
nil
}
else
if
e
.
loadedTypes
[
0
]
{
return
nil
,
&
NotFoundError
{
label
:
promocode
.
Label
}
}
return
nil
,
&
NotLoadedError
{
edge
:
"promo_code"
}
}
// UserOrErr returns the User value or an error if the edge
// was not loaded in eager-loading, or loaded but was not found.
func
(
e
PromoCodeUsageEdges
)
UserOrErr
()
(
*
User
,
error
)
{
if
e
.
User
!=
nil
{
return
e
.
User
,
nil
}
else
if
e
.
loadedTypes
[
1
]
{
return
nil
,
&
NotFoundError
{
label
:
user
.
Label
}
}
return
nil
,
&
NotLoadedError
{
edge
:
"user"
}
}
// scanValues returns the types for scanning values from sql.Rows.
func
(
*
PromoCodeUsage
)
scanValues
(
columns
[]
string
)
([]
any
,
error
)
{
values
:=
make
([]
any
,
len
(
columns
))
for
i
:=
range
columns
{
switch
columns
[
i
]
{
case
promocodeusage
.
FieldBonusAmount
:
values
[
i
]
=
new
(
sql
.
NullFloat64
)
case
promocodeusage
.
FieldID
,
promocodeusage
.
FieldPromoCodeID
,
promocodeusage
.
FieldUserID
:
values
[
i
]
=
new
(
sql
.
NullInt64
)
case
promocodeusage
.
FieldUsedAt
:
values
[
i
]
=
new
(
sql
.
NullTime
)
default
:
values
[
i
]
=
new
(
sql
.
UnknownType
)
}
}
return
values
,
nil
}
// assignValues assigns the values that were returned from sql.Rows (after scanning)
// to the PromoCodeUsage fields.
func
(
_m
*
PromoCodeUsage
)
assignValues
(
columns
[]
string
,
values
[]
any
)
error
{
if
m
,
n
:=
len
(
values
),
len
(
columns
);
m
<
n
{
return
fmt
.
Errorf
(
"mismatch number of scan values: %d != %d"
,
m
,
n
)
}
for
i
:=
range
columns
{
switch
columns
[
i
]
{
case
promocodeusage
.
FieldID
:
value
,
ok
:=
values
[
i
]
.
(
*
sql
.
NullInt64
)
if
!
ok
{
return
fmt
.
Errorf
(
"unexpected type %T for field id"
,
value
)
}
_m
.
ID
=
int64
(
value
.
Int64
)
case
promocodeusage
.
FieldPromoCodeID
:
if
value
,
ok
:=
values
[
i
]
.
(
*
sql
.
NullInt64
);
!
ok
{
return
fmt
.
Errorf
(
"unexpected type %T for field promo_code_id"
,
values
[
i
])
}
else
if
value
.
Valid
{
_m
.
PromoCodeID
=
value
.
Int64
}
case
promocodeusage
.
FieldUserID
:
if
value
,
ok
:=
values
[
i
]
.
(
*
sql
.
NullInt64
);
!
ok
{
return
fmt
.
Errorf
(
"unexpected type %T for field user_id"
,
values
[
i
])
}
else
if
value
.
Valid
{
_m
.
UserID
=
value
.
Int64
}
case
promocodeusage
.
FieldBonusAmount
:
if
value
,
ok
:=
values
[
i
]
.
(
*
sql
.
NullFloat64
);
!
ok
{
return
fmt
.
Errorf
(
"unexpected type %T for field bonus_amount"
,
values
[
i
])
}
else
if
value
.
Valid
{
_m
.
BonusAmount
=
value
.
Float64
}
case
promocodeusage
.
FieldUsedAt
:
if
value
,
ok
:=
values
[
i
]
.
(
*
sql
.
NullTime
);
!
ok
{
return
fmt
.
Errorf
(
"unexpected type %T for field used_at"
,
values
[
i
])
}
else
if
value
.
Valid
{
_m
.
UsedAt
=
value
.
Time
}
default
:
_m
.
selectValues
.
Set
(
columns
[
i
],
values
[
i
])
}
}
return
nil
}
// Value returns the ent.Value that was dynamically selected and assigned to the PromoCodeUsage.
// This includes values selected through modifiers, order, etc.
func
(
_m
*
PromoCodeUsage
)
Value
(
name
string
)
(
ent
.
Value
,
error
)
{
return
_m
.
selectValues
.
Get
(
name
)
}
// QueryPromoCode queries the "promo_code" edge of the PromoCodeUsage entity.
func
(
_m
*
PromoCodeUsage
)
QueryPromoCode
()
*
PromoCodeQuery
{
return
NewPromoCodeUsageClient
(
_m
.
config
)
.
QueryPromoCode
(
_m
)
}
// QueryUser queries the "user" edge of the PromoCodeUsage entity.
func
(
_m
*
PromoCodeUsage
)
QueryUser
()
*
UserQuery
{
return
NewPromoCodeUsageClient
(
_m
.
config
)
.
QueryUser
(
_m
)
}
// Update returns a builder for updating this PromoCodeUsage.
// Note that you need to call PromoCodeUsage.Unwrap() before calling this method if this PromoCodeUsage
// was returned from a transaction, and the transaction was committed or rolled back.
func
(
_m
*
PromoCodeUsage
)
Update
()
*
PromoCodeUsageUpdateOne
{
return
NewPromoCodeUsageClient
(
_m
.
config
)
.
UpdateOne
(
_m
)
}
// Unwrap unwraps the PromoCodeUsage entity that was returned from a transaction after it was closed,
// so that all future queries will be executed through the driver which created the transaction.
func
(
_m
*
PromoCodeUsage
)
Unwrap
()
*
PromoCodeUsage
{
_tx
,
ok
:=
_m
.
config
.
driver
.
(
*
txDriver
)
if
!
ok
{
panic
(
"ent: PromoCodeUsage is not a transactional entity"
)
}
_m
.
config
.
driver
=
_tx
.
drv
return
_m
}
// String implements the fmt.Stringer.
func
(
_m
*
PromoCodeUsage
)
String
()
string
{
var
builder
strings
.
Builder
builder
.
WriteString
(
"PromoCodeUsage("
)
builder
.
WriteString
(
fmt
.
Sprintf
(
"id=%v, "
,
_m
.
ID
))
builder
.
WriteString
(
"promo_code_id="
)
builder
.
WriteString
(
fmt
.
Sprintf
(
"%v"
,
_m
.
PromoCodeID
))
builder
.
WriteString
(
", "
)
builder
.
WriteString
(
"user_id="
)
builder
.
WriteString
(
fmt
.
Sprintf
(
"%v"
,
_m
.
UserID
))
builder
.
WriteString
(
", "
)
builder
.
WriteString
(
"bonus_amount="
)
builder
.
WriteString
(
fmt
.
Sprintf
(
"%v"
,
_m
.
BonusAmount
))
builder
.
WriteString
(
", "
)
builder
.
WriteString
(
"used_at="
)
builder
.
WriteString
(
_m
.
UsedAt
.
Format
(
time
.
ANSIC
))
builder
.
WriteByte
(
')'
)
return
builder
.
String
()
}
// PromoCodeUsages is a parsable slice of PromoCodeUsage.
type
PromoCodeUsages
[]
*
PromoCodeUsage
backend/ent/promocodeusage/promocodeusage.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
promocodeusage
import
(
"time"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
)
const
(
// Label holds the string label denoting the promocodeusage type in the database.
Label
=
"promo_code_usage"
// FieldID holds the string denoting the id field in the database.
FieldID
=
"id"
// FieldPromoCodeID holds the string denoting the promo_code_id field in the database.
FieldPromoCodeID
=
"promo_code_id"
// FieldUserID holds the string denoting the user_id field in the database.
FieldUserID
=
"user_id"
// FieldBonusAmount holds the string denoting the bonus_amount field in the database.
FieldBonusAmount
=
"bonus_amount"
// FieldUsedAt holds the string denoting the used_at field in the database.
FieldUsedAt
=
"used_at"
// EdgePromoCode holds the string denoting the promo_code edge name in mutations.
EdgePromoCode
=
"promo_code"
// EdgeUser holds the string denoting the user edge name in mutations.
EdgeUser
=
"user"
// Table holds the table name of the promocodeusage in the database.
Table
=
"promo_code_usages"
// PromoCodeTable is the table that holds the promo_code relation/edge.
PromoCodeTable
=
"promo_code_usages"
// PromoCodeInverseTable is the table name for the PromoCode entity.
// It exists in this package in order to avoid circular dependency with the "promocode" package.
PromoCodeInverseTable
=
"promo_codes"
// PromoCodeColumn is the table column denoting the promo_code relation/edge.
PromoCodeColumn
=
"promo_code_id"
// UserTable is the table that holds the user relation/edge.
UserTable
=
"promo_code_usages"
// UserInverseTable is the table name for the User entity.
// It exists in this package in order to avoid circular dependency with the "user" package.
UserInverseTable
=
"users"
// UserColumn is the table column denoting the user relation/edge.
UserColumn
=
"user_id"
)
// Columns holds all SQL columns for promocodeusage fields.
var
Columns
=
[]
string
{
FieldID
,
FieldPromoCodeID
,
FieldUserID
,
FieldBonusAmount
,
FieldUsedAt
,
}
// ValidColumn reports if the column name is valid (part of the table columns).
func
ValidColumn
(
column
string
)
bool
{
for
i
:=
range
Columns
{
if
column
==
Columns
[
i
]
{
return
true
}
}
return
false
}
var
(
// DefaultUsedAt holds the default value on creation for the "used_at" field.
DefaultUsedAt
func
()
time
.
Time
)
// OrderOption defines the ordering options for the PromoCodeUsage queries.
type
OrderOption
func
(
*
sql
.
Selector
)
// ByID orders the results by the id field.
func
ByID
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
sql
.
OrderByField
(
FieldID
,
opts
...
)
.
ToFunc
()
}
// ByPromoCodeID orders the results by the promo_code_id field.
func
ByPromoCodeID
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
sql
.
OrderByField
(
FieldPromoCodeID
,
opts
...
)
.
ToFunc
()
}
// ByUserID orders the results by the user_id field.
func
ByUserID
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
sql
.
OrderByField
(
FieldUserID
,
opts
...
)
.
ToFunc
()
}
// ByBonusAmount orders the results by the bonus_amount field.
func
ByBonusAmount
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
sql
.
OrderByField
(
FieldBonusAmount
,
opts
...
)
.
ToFunc
()
}
// ByUsedAt orders the results by the used_at field.
func
ByUsedAt
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
sql
.
OrderByField
(
FieldUsedAt
,
opts
...
)
.
ToFunc
()
}
// ByPromoCodeField orders the results by promo_code field.
func
ByPromoCodeField
(
field
string
,
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
func
(
s
*
sql
.
Selector
)
{
sqlgraph
.
OrderByNeighborTerms
(
s
,
newPromoCodeStep
(),
sql
.
OrderByField
(
field
,
opts
...
))
}
}
// ByUserField orders the results by user field.
func
ByUserField
(
field
string
,
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
func
(
s
*
sql
.
Selector
)
{
sqlgraph
.
OrderByNeighborTerms
(
s
,
newUserStep
(),
sql
.
OrderByField
(
field
,
opts
...
))
}
}
func
newPromoCodeStep
()
*
sqlgraph
.
Step
{
return
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
sqlgraph
.
To
(
PromoCodeInverseTable
,
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
PromoCodeTable
,
PromoCodeColumn
),
)
}
func
newUserStep
()
*
sqlgraph
.
Step
{
return
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
sqlgraph
.
To
(
UserInverseTable
,
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
UserTable
,
UserColumn
),
)
}
backend/ent/promocodeusage/where.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
promocodeusage
import
(
"time"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"github.com/Wei-Shaw/sub2api/ent/predicate"
)
// ID filters vertices based on their ID field.
func
ID
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldID
,
id
))
}
// IDEQ applies the EQ predicate on the ID field.
func
IDEQ
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldID
,
id
))
}
// IDNEQ applies the NEQ predicate on the ID field.
func
IDNEQ
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNEQ
(
FieldID
,
id
))
}
// IDIn applies the In predicate on the ID field.
func
IDIn
(
ids
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldIn
(
FieldID
,
ids
...
))
}
// IDNotIn applies the NotIn predicate on the ID field.
func
IDNotIn
(
ids
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNotIn
(
FieldID
,
ids
...
))
}
// IDGT applies the GT predicate on the ID field.
func
IDGT
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGT
(
FieldID
,
id
))
}
// IDGTE applies the GTE predicate on the ID field.
func
IDGTE
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGTE
(
FieldID
,
id
))
}
// IDLT applies the LT predicate on the ID field.
func
IDLT
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLT
(
FieldID
,
id
))
}
// IDLTE applies the LTE predicate on the ID field.
func
IDLTE
(
id
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLTE
(
FieldID
,
id
))
}
// PromoCodeID applies equality check predicate on the "promo_code_id" field. It's identical to PromoCodeIDEQ.
func
PromoCodeID
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldPromoCodeID
,
v
))
}
// UserID applies equality check predicate on the "user_id" field. It's identical to UserIDEQ.
func
UserID
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldUserID
,
v
))
}
// BonusAmount applies equality check predicate on the "bonus_amount" field. It's identical to BonusAmountEQ.
func
BonusAmount
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldBonusAmount
,
v
))
}
// UsedAt applies equality check predicate on the "used_at" field. It's identical to UsedAtEQ.
func
UsedAt
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldUsedAt
,
v
))
}
// PromoCodeIDEQ applies the EQ predicate on the "promo_code_id" field.
func
PromoCodeIDEQ
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldPromoCodeID
,
v
))
}
// PromoCodeIDNEQ applies the NEQ predicate on the "promo_code_id" field.
func
PromoCodeIDNEQ
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNEQ
(
FieldPromoCodeID
,
v
))
}
// PromoCodeIDIn applies the In predicate on the "promo_code_id" field.
func
PromoCodeIDIn
(
vs
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldIn
(
FieldPromoCodeID
,
vs
...
))
}
// PromoCodeIDNotIn applies the NotIn predicate on the "promo_code_id" field.
func
PromoCodeIDNotIn
(
vs
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNotIn
(
FieldPromoCodeID
,
vs
...
))
}
// UserIDEQ applies the EQ predicate on the "user_id" field.
func
UserIDEQ
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldUserID
,
v
))
}
// UserIDNEQ applies the NEQ predicate on the "user_id" field.
func
UserIDNEQ
(
v
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNEQ
(
FieldUserID
,
v
))
}
// UserIDIn applies the In predicate on the "user_id" field.
func
UserIDIn
(
vs
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldIn
(
FieldUserID
,
vs
...
))
}
// UserIDNotIn applies the NotIn predicate on the "user_id" field.
func
UserIDNotIn
(
vs
...
int64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNotIn
(
FieldUserID
,
vs
...
))
}
// BonusAmountEQ applies the EQ predicate on the "bonus_amount" field.
func
BonusAmountEQ
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldBonusAmount
,
v
))
}
// BonusAmountNEQ applies the NEQ predicate on the "bonus_amount" field.
func
BonusAmountNEQ
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNEQ
(
FieldBonusAmount
,
v
))
}
// BonusAmountIn applies the In predicate on the "bonus_amount" field.
func
BonusAmountIn
(
vs
...
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldIn
(
FieldBonusAmount
,
vs
...
))
}
// BonusAmountNotIn applies the NotIn predicate on the "bonus_amount" field.
func
BonusAmountNotIn
(
vs
...
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNotIn
(
FieldBonusAmount
,
vs
...
))
}
// BonusAmountGT applies the GT predicate on the "bonus_amount" field.
func
BonusAmountGT
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGT
(
FieldBonusAmount
,
v
))
}
// BonusAmountGTE applies the GTE predicate on the "bonus_amount" field.
func
BonusAmountGTE
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGTE
(
FieldBonusAmount
,
v
))
}
// BonusAmountLT applies the LT predicate on the "bonus_amount" field.
func
BonusAmountLT
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLT
(
FieldBonusAmount
,
v
))
}
// BonusAmountLTE applies the LTE predicate on the "bonus_amount" field.
func
BonusAmountLTE
(
v
float64
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLTE
(
FieldBonusAmount
,
v
))
}
// UsedAtEQ applies the EQ predicate on the "used_at" field.
func
UsedAtEQ
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldEQ
(
FieldUsedAt
,
v
))
}
// UsedAtNEQ applies the NEQ predicate on the "used_at" field.
func
UsedAtNEQ
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNEQ
(
FieldUsedAt
,
v
))
}
// UsedAtIn applies the In predicate on the "used_at" field.
func
UsedAtIn
(
vs
...
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldIn
(
FieldUsedAt
,
vs
...
))
}
// UsedAtNotIn applies the NotIn predicate on the "used_at" field.
func
UsedAtNotIn
(
vs
...
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldNotIn
(
FieldUsedAt
,
vs
...
))
}
// UsedAtGT applies the GT predicate on the "used_at" field.
func
UsedAtGT
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGT
(
FieldUsedAt
,
v
))
}
// UsedAtGTE applies the GTE predicate on the "used_at" field.
func
UsedAtGTE
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldGTE
(
FieldUsedAt
,
v
))
}
// UsedAtLT applies the LT predicate on the "used_at" field.
func
UsedAtLT
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLT
(
FieldUsedAt
,
v
))
}
// UsedAtLTE applies the LTE predicate on the "used_at" field.
func
UsedAtLTE
(
v
time
.
Time
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
FieldLTE
(
FieldUsedAt
,
v
))
}
// HasPromoCode applies the HasEdge predicate on the "promo_code" edge.
func
HasPromoCode
()
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
func
(
s
*
sql
.
Selector
)
{
step
:=
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
PromoCodeTable
,
PromoCodeColumn
),
)
sqlgraph
.
HasNeighbors
(
s
,
step
)
})
}
// HasPromoCodeWith applies the HasEdge predicate on the "promo_code" edge with a given conditions (other predicates).
func
HasPromoCodeWith
(
preds
...
predicate
.
PromoCode
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
func
(
s
*
sql
.
Selector
)
{
step
:=
newPromoCodeStep
()
sqlgraph
.
HasNeighborsWith
(
s
,
step
,
func
(
s
*
sql
.
Selector
)
{
for
_
,
p
:=
range
preds
{
p
(
s
)
}
})
})
}
// HasUser applies the HasEdge predicate on the "user" edge.
func
HasUser
()
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
func
(
s
*
sql
.
Selector
)
{
step
:=
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
UserTable
,
UserColumn
),
)
sqlgraph
.
HasNeighbors
(
s
,
step
)
})
}
// HasUserWith applies the HasEdge predicate on the "user" edge with a given conditions (other predicates).
func
HasUserWith
(
preds
...
predicate
.
User
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
func
(
s
*
sql
.
Selector
)
{
step
:=
newUserStep
()
sqlgraph
.
HasNeighborsWith
(
s
,
step
,
func
(
s
*
sql
.
Selector
)
{
for
_
,
p
:=
range
preds
{
p
(
s
)
}
})
})
}
// And groups predicates with the AND operator between them.
func
And
(
predicates
...
predicate
.
PromoCodeUsage
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
AndPredicates
(
predicates
...
))
}
// Or groups predicates with the OR operator between them.
func
Or
(
predicates
...
predicate
.
PromoCodeUsage
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
OrPredicates
(
predicates
...
))
}
// Not applies the not operator on the given predicate.
func
Not
(
p
predicate
.
PromoCodeUsage
)
predicate
.
PromoCodeUsage
{
return
predicate
.
PromoCodeUsage
(
sql
.
NotPredicates
(
p
))
}
backend/ent/promocodeusage_create.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"errors"
"fmt"
"time"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
"github.com/Wei-Shaw/sub2api/ent/user"
)
// PromoCodeUsageCreate is the builder for creating a PromoCodeUsage entity.
type
PromoCodeUsageCreate
struct
{
config
mutation
*
PromoCodeUsageMutation
hooks
[]
Hook
conflict
[]
sql
.
ConflictOption
}
// SetPromoCodeID sets the "promo_code_id" field.
func
(
_c
*
PromoCodeUsageCreate
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageCreate
{
_c
.
mutation
.
SetPromoCodeID
(
v
)
return
_c
}
// SetUserID sets the "user_id" field.
func
(
_c
*
PromoCodeUsageCreate
)
SetUserID
(
v
int64
)
*
PromoCodeUsageCreate
{
_c
.
mutation
.
SetUserID
(
v
)
return
_c
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
_c
*
PromoCodeUsageCreate
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageCreate
{
_c
.
mutation
.
SetBonusAmount
(
v
)
return
_c
}
// SetUsedAt sets the "used_at" field.
func
(
_c
*
PromoCodeUsageCreate
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageCreate
{
_c
.
mutation
.
SetUsedAt
(
v
)
return
_c
}
// SetNillableUsedAt sets the "used_at" field if the given value is not nil.
func
(
_c
*
PromoCodeUsageCreate
)
SetNillableUsedAt
(
v
*
time
.
Time
)
*
PromoCodeUsageCreate
{
if
v
!=
nil
{
_c
.
SetUsedAt
(
*
v
)
}
return
_c
}
// SetPromoCode sets the "promo_code" edge to the PromoCode entity.
func
(
_c
*
PromoCodeUsageCreate
)
SetPromoCode
(
v
*
PromoCode
)
*
PromoCodeUsageCreate
{
return
_c
.
SetPromoCodeID
(
v
.
ID
)
}
// SetUser sets the "user" edge to the User entity.
func
(
_c
*
PromoCodeUsageCreate
)
SetUser
(
v
*
User
)
*
PromoCodeUsageCreate
{
return
_c
.
SetUserID
(
v
.
ID
)
}
// Mutation returns the PromoCodeUsageMutation object of the builder.
func
(
_c
*
PromoCodeUsageCreate
)
Mutation
()
*
PromoCodeUsageMutation
{
return
_c
.
mutation
}
// Save creates the PromoCodeUsage in the database.
func
(
_c
*
PromoCodeUsageCreate
)
Save
(
ctx
context
.
Context
)
(
*
PromoCodeUsage
,
error
)
{
_c
.
defaults
()
return
withHooks
(
ctx
,
_c
.
sqlSave
,
_c
.
mutation
,
_c
.
hooks
)
}
// SaveX calls Save and panics if Save returns an error.
func
(
_c
*
PromoCodeUsageCreate
)
SaveX
(
ctx
context
.
Context
)
*
PromoCodeUsage
{
v
,
err
:=
_c
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
v
}
// Exec executes the query.
func
(
_c
*
PromoCodeUsageCreate
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_c
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_c
*
PromoCodeUsageCreate
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_c
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// defaults sets the default values of the builder before save.
func
(
_c
*
PromoCodeUsageCreate
)
defaults
()
{
if
_
,
ok
:=
_c
.
mutation
.
UsedAt
();
!
ok
{
v
:=
promocodeusage
.
DefaultUsedAt
()
_c
.
mutation
.
SetUsedAt
(
v
)
}
}
// check runs all checks and user-defined validators on the builder.
func
(
_c
*
PromoCodeUsageCreate
)
check
()
error
{
if
_
,
ok
:=
_c
.
mutation
.
PromoCodeID
();
!
ok
{
return
&
ValidationError
{
Name
:
"promo_code_id"
,
err
:
errors
.
New
(
`ent: missing required field "PromoCodeUsage.promo_code_id"`
)}
}
if
_
,
ok
:=
_c
.
mutation
.
UserID
();
!
ok
{
return
&
ValidationError
{
Name
:
"user_id"
,
err
:
errors
.
New
(
`ent: missing required field "PromoCodeUsage.user_id"`
)}
}
if
_
,
ok
:=
_c
.
mutation
.
BonusAmount
();
!
ok
{
return
&
ValidationError
{
Name
:
"bonus_amount"
,
err
:
errors
.
New
(
`ent: missing required field "PromoCodeUsage.bonus_amount"`
)}
}
if
_
,
ok
:=
_c
.
mutation
.
UsedAt
();
!
ok
{
return
&
ValidationError
{
Name
:
"used_at"
,
err
:
errors
.
New
(
`ent: missing required field "PromoCodeUsage.used_at"`
)}
}
if
len
(
_c
.
mutation
.
PromoCodeIDs
())
==
0
{
return
&
ValidationError
{
Name
:
"promo_code"
,
err
:
errors
.
New
(
`ent: missing required edge "PromoCodeUsage.promo_code"`
)}
}
if
len
(
_c
.
mutation
.
UserIDs
())
==
0
{
return
&
ValidationError
{
Name
:
"user"
,
err
:
errors
.
New
(
`ent: missing required edge "PromoCodeUsage.user"`
)}
}
return
nil
}
func
(
_c
*
PromoCodeUsageCreate
)
sqlSave
(
ctx
context
.
Context
)
(
*
PromoCodeUsage
,
error
)
{
if
err
:=
_c
.
check
();
err
!=
nil
{
return
nil
,
err
}
_node
,
_spec
:=
_c
.
createSpec
()
if
err
:=
sqlgraph
.
CreateNode
(
ctx
,
_c
.
driver
,
_spec
);
err
!=
nil
{
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
return
nil
,
err
}
id
:=
_spec
.
ID
.
Value
.
(
int64
)
_node
.
ID
=
int64
(
id
)
_c
.
mutation
.
id
=
&
_node
.
ID
_c
.
mutation
.
done
=
true
return
_node
,
nil
}
func
(
_c
*
PromoCodeUsageCreate
)
createSpec
()
(
*
PromoCodeUsage
,
*
sqlgraph
.
CreateSpec
)
{
var
(
_node
=
&
PromoCodeUsage
{
config
:
_c
.
config
}
_spec
=
sqlgraph
.
NewCreateSpec
(
promocodeusage
.
Table
,
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
))
)
_spec
.
OnConflict
=
_c
.
conflict
if
value
,
ok
:=
_c
.
mutation
.
BonusAmount
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
_node
.
BonusAmount
=
value
}
if
value
,
ok
:=
_c
.
mutation
.
UsedAt
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldUsedAt
,
field
.
TypeTime
,
value
)
_node
.
UsedAt
=
value
}
if
nodes
:=
_c
.
mutation
.
PromoCodeIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
PromoCodeTable
,
Columns
:
[]
string
{
promocodeusage
.
PromoCodeColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_node
.
PromoCodeID
=
nodes
[
0
]
_spec
.
Edges
=
append
(
_spec
.
Edges
,
edge
)
}
if
nodes
:=
_c
.
mutation
.
UserIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
UserTable
,
Columns
:
[]
string
{
promocodeusage
.
UserColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
user
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_node
.
UserID
=
nodes
[
0
]
_spec
.
Edges
=
append
(
_spec
.
Edges
,
edge
)
}
return
_node
,
_spec
}
// OnConflict allows configuring the `ON CONFLICT` / `ON DUPLICATE KEY` clause
// of the `INSERT` statement. For example:
//
// client.PromoCodeUsage.Create().
// SetPromoCodeID(v).
// OnConflict(
// // Update the row with the new values
// // the was proposed for insertion.
// sql.ResolveWithNewValues(),
// ).
// // Override some of the fields with custom
// // update values.
// Update(func(u *ent.PromoCodeUsageUpsert) {
// SetPromoCodeID(v+v).
// }).
// Exec(ctx)
func
(
_c
*
PromoCodeUsageCreate
)
OnConflict
(
opts
...
sql
.
ConflictOption
)
*
PromoCodeUsageUpsertOne
{
_c
.
conflict
=
opts
return
&
PromoCodeUsageUpsertOne
{
create
:
_c
,
}
}
// OnConflictColumns calls `OnConflict` and configures the columns
// as conflict target. Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(sql.ConflictColumns(columns...)).
// Exec(ctx)
func
(
_c
*
PromoCodeUsageCreate
)
OnConflictColumns
(
columns
...
string
)
*
PromoCodeUsageUpsertOne
{
_c
.
conflict
=
append
(
_c
.
conflict
,
sql
.
ConflictColumns
(
columns
...
))
return
&
PromoCodeUsageUpsertOne
{
create
:
_c
,
}
}
type
(
// PromoCodeUsageUpsertOne is the builder for "upsert"-ing
// one PromoCodeUsage node.
PromoCodeUsageUpsertOne
struct
{
create
*
PromoCodeUsageCreate
}
// PromoCodeUsageUpsert is the "OnConflict" setter.
PromoCodeUsageUpsert
struct
{
*
sql
.
UpdateSet
}
)
// SetPromoCodeID sets the "promo_code_id" field.
func
(
u
*
PromoCodeUsageUpsert
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageUpsert
{
u
.
Set
(
promocodeusage
.
FieldPromoCodeID
,
v
)
return
u
}
// UpdatePromoCodeID sets the "promo_code_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsert
)
UpdatePromoCodeID
()
*
PromoCodeUsageUpsert
{
u
.
SetExcluded
(
promocodeusage
.
FieldPromoCodeID
)
return
u
}
// SetUserID sets the "user_id" field.
func
(
u
*
PromoCodeUsageUpsert
)
SetUserID
(
v
int64
)
*
PromoCodeUsageUpsert
{
u
.
Set
(
promocodeusage
.
FieldUserID
,
v
)
return
u
}
// UpdateUserID sets the "user_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsert
)
UpdateUserID
()
*
PromoCodeUsageUpsert
{
u
.
SetExcluded
(
promocodeusage
.
FieldUserID
)
return
u
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsert
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsert
{
u
.
Set
(
promocodeusage
.
FieldBonusAmount
,
v
)
return
u
}
// UpdateBonusAmount sets the "bonus_amount" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsert
)
UpdateBonusAmount
()
*
PromoCodeUsageUpsert
{
u
.
SetExcluded
(
promocodeusage
.
FieldBonusAmount
)
return
u
}
// AddBonusAmount adds v to the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsert
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsert
{
u
.
Add
(
promocodeusage
.
FieldBonusAmount
,
v
)
return
u
}
// SetUsedAt sets the "used_at" field.
func
(
u
*
PromoCodeUsageUpsert
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageUpsert
{
u
.
Set
(
promocodeusage
.
FieldUsedAt
,
v
)
return
u
}
// UpdateUsedAt sets the "used_at" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsert
)
UpdateUsedAt
()
*
PromoCodeUsageUpsert
{
u
.
SetExcluded
(
promocodeusage
.
FieldUsedAt
)
return
u
}
// UpdateNewValues updates the mutable fields using the new values that were set on create.
// Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(
// sql.ResolveWithNewValues(),
// ).
// Exec(ctx)
func
(
u
*
PromoCodeUsageUpsertOne
)
UpdateNewValues
()
*
PromoCodeUsageUpsertOne
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWithNewValues
())
return
u
}
// Ignore sets each column to itself in case of conflict.
// Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(sql.ResolveWithIgnore()).
// Exec(ctx)
func
(
u
*
PromoCodeUsageUpsertOne
)
Ignore
()
*
PromoCodeUsageUpsertOne
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWithIgnore
())
return
u
}
// DoNothing configures the conflict_action to `DO NOTHING`.
// Supported only by SQLite and PostgreSQL.
func
(
u
*
PromoCodeUsageUpsertOne
)
DoNothing
()
*
PromoCodeUsageUpsertOne
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
DoNothing
())
return
u
}
// Update allows overriding fields `UPDATE` values. See the PromoCodeUsageCreate.OnConflict
// documentation for more info.
func
(
u
*
PromoCodeUsageUpsertOne
)
Update
(
set
func
(
*
PromoCodeUsageUpsert
))
*
PromoCodeUsageUpsertOne
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWith
(
func
(
update
*
sql
.
UpdateSet
)
{
set
(
&
PromoCodeUsageUpsert
{
UpdateSet
:
update
})
}))
return
u
}
// SetPromoCodeID sets the "promo_code_id" field.
func
(
u
*
PromoCodeUsageUpsertOne
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetPromoCodeID
(
v
)
})
}
// UpdatePromoCodeID sets the "promo_code_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertOne
)
UpdatePromoCodeID
()
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdatePromoCodeID
()
})
}
// SetUserID sets the "user_id" field.
func
(
u
*
PromoCodeUsageUpsertOne
)
SetUserID
(
v
int64
)
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetUserID
(
v
)
})
}
// UpdateUserID sets the "user_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertOne
)
UpdateUserID
()
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateUserID
()
})
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsertOne
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetBonusAmount
(
v
)
})
}
// AddBonusAmount adds v to the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsertOne
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
AddBonusAmount
(
v
)
})
}
// UpdateBonusAmount sets the "bonus_amount" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertOne
)
UpdateBonusAmount
()
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateBonusAmount
()
})
}
// SetUsedAt sets the "used_at" field.
func
(
u
*
PromoCodeUsageUpsertOne
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetUsedAt
(
v
)
})
}
// UpdateUsedAt sets the "used_at" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertOne
)
UpdateUsedAt
()
*
PromoCodeUsageUpsertOne
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateUsedAt
()
})
}
// Exec executes the query.
func
(
u
*
PromoCodeUsageUpsertOne
)
Exec
(
ctx
context
.
Context
)
error
{
if
len
(
u
.
create
.
conflict
)
==
0
{
return
errors
.
New
(
"ent: missing options for PromoCodeUsageCreate.OnConflict"
)
}
return
u
.
create
.
Exec
(
ctx
)
}
// ExecX is like Exec, but panics if an error occurs.
func
(
u
*
PromoCodeUsageUpsertOne
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
u
.
create
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// Exec executes the UPSERT query and returns the inserted/updated ID.
func
(
u
*
PromoCodeUsageUpsertOne
)
ID
(
ctx
context
.
Context
)
(
id
int64
,
err
error
)
{
node
,
err
:=
u
.
create
.
Save
(
ctx
)
if
err
!=
nil
{
return
id
,
err
}
return
node
.
ID
,
nil
}
// IDX is like ID, but panics if an error occurs.
func
(
u
*
PromoCodeUsageUpsertOne
)
IDX
(
ctx
context
.
Context
)
int64
{
id
,
err
:=
u
.
ID
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
id
}
// PromoCodeUsageCreateBulk is the builder for creating many PromoCodeUsage entities in bulk.
type
PromoCodeUsageCreateBulk
struct
{
config
err
error
builders
[]
*
PromoCodeUsageCreate
conflict
[]
sql
.
ConflictOption
}
// Save creates the PromoCodeUsage entities in the database.
func
(
_c
*
PromoCodeUsageCreateBulk
)
Save
(
ctx
context
.
Context
)
([]
*
PromoCodeUsage
,
error
)
{
if
_c
.
err
!=
nil
{
return
nil
,
_c
.
err
}
specs
:=
make
([]
*
sqlgraph
.
CreateSpec
,
len
(
_c
.
builders
))
nodes
:=
make
([]
*
PromoCodeUsage
,
len
(
_c
.
builders
))
mutators
:=
make
([]
Mutator
,
len
(
_c
.
builders
))
for
i
:=
range
_c
.
builders
{
func
(
i
int
,
root
context
.
Context
)
{
builder
:=
_c
.
builders
[
i
]
builder
.
defaults
()
var
mut
Mutator
=
MutateFunc
(
func
(
ctx
context
.
Context
,
m
Mutation
)
(
Value
,
error
)
{
mutation
,
ok
:=
m
.
(
*
PromoCodeUsageMutation
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"unexpected mutation type %T"
,
m
)
}
if
err
:=
builder
.
check
();
err
!=
nil
{
return
nil
,
err
}
builder
.
mutation
=
mutation
var
err
error
nodes
[
i
],
specs
[
i
]
=
builder
.
createSpec
()
if
i
<
len
(
mutators
)
-
1
{
_
,
err
=
mutators
[
i
+
1
]
.
Mutate
(
root
,
_c
.
builders
[
i
+
1
]
.
mutation
)
}
else
{
spec
:=
&
sqlgraph
.
BatchCreateSpec
{
Nodes
:
specs
}
spec
.
OnConflict
=
_c
.
conflict
// Invoke the actual operation on the latest mutation in the chain.
if
err
=
sqlgraph
.
BatchCreate
(
ctx
,
_c
.
driver
,
spec
);
err
!=
nil
{
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
}
}
if
err
!=
nil
{
return
nil
,
err
}
mutation
.
id
=
&
nodes
[
i
]
.
ID
if
specs
[
i
]
.
ID
.
Value
!=
nil
{
id
:=
specs
[
i
]
.
ID
.
Value
.
(
int64
)
nodes
[
i
]
.
ID
=
int64
(
id
)
}
mutation
.
done
=
true
return
nodes
[
i
],
nil
})
for
i
:=
len
(
builder
.
hooks
)
-
1
;
i
>=
0
;
i
--
{
mut
=
builder
.
hooks
[
i
](
mut
)
}
mutators
[
i
]
=
mut
}(
i
,
ctx
)
}
if
len
(
mutators
)
>
0
{
if
_
,
err
:=
mutators
[
0
]
.
Mutate
(
ctx
,
_c
.
builders
[
0
]
.
mutation
);
err
!=
nil
{
return
nil
,
err
}
}
return
nodes
,
nil
}
// SaveX is like Save, but panics if an error occurs.
func
(
_c
*
PromoCodeUsageCreateBulk
)
SaveX
(
ctx
context
.
Context
)
[]
*
PromoCodeUsage
{
v
,
err
:=
_c
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
v
}
// Exec executes the query.
func
(
_c
*
PromoCodeUsageCreateBulk
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_c
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_c
*
PromoCodeUsageCreateBulk
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_c
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// OnConflict allows configuring the `ON CONFLICT` / `ON DUPLICATE KEY` clause
// of the `INSERT` statement. For example:
//
// client.PromoCodeUsage.CreateBulk(builders...).
// OnConflict(
// // Update the row with the new values
// // the was proposed for insertion.
// sql.ResolveWithNewValues(),
// ).
// // Override some of the fields with custom
// // update values.
// Update(func(u *ent.PromoCodeUsageUpsert) {
// SetPromoCodeID(v+v).
// }).
// Exec(ctx)
func
(
_c
*
PromoCodeUsageCreateBulk
)
OnConflict
(
opts
...
sql
.
ConflictOption
)
*
PromoCodeUsageUpsertBulk
{
_c
.
conflict
=
opts
return
&
PromoCodeUsageUpsertBulk
{
create
:
_c
,
}
}
// OnConflictColumns calls `OnConflict` and configures the columns
// as conflict target. Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(sql.ConflictColumns(columns...)).
// Exec(ctx)
func
(
_c
*
PromoCodeUsageCreateBulk
)
OnConflictColumns
(
columns
...
string
)
*
PromoCodeUsageUpsertBulk
{
_c
.
conflict
=
append
(
_c
.
conflict
,
sql
.
ConflictColumns
(
columns
...
))
return
&
PromoCodeUsageUpsertBulk
{
create
:
_c
,
}
}
// PromoCodeUsageUpsertBulk is the builder for "upsert"-ing
// a bulk of PromoCodeUsage nodes.
type
PromoCodeUsageUpsertBulk
struct
{
create
*
PromoCodeUsageCreateBulk
}
// UpdateNewValues updates the mutable fields using the new values that
// were set on create. Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(
// sql.ResolveWithNewValues(),
// ).
// Exec(ctx)
func
(
u
*
PromoCodeUsageUpsertBulk
)
UpdateNewValues
()
*
PromoCodeUsageUpsertBulk
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWithNewValues
())
return
u
}
// Ignore sets each column to itself in case of conflict.
// Using this option is equivalent to using:
//
// client.PromoCodeUsage.Create().
// OnConflict(sql.ResolveWithIgnore()).
// Exec(ctx)
func
(
u
*
PromoCodeUsageUpsertBulk
)
Ignore
()
*
PromoCodeUsageUpsertBulk
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWithIgnore
())
return
u
}
// DoNothing configures the conflict_action to `DO NOTHING`.
// Supported only by SQLite and PostgreSQL.
func
(
u
*
PromoCodeUsageUpsertBulk
)
DoNothing
()
*
PromoCodeUsageUpsertBulk
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
DoNothing
())
return
u
}
// Update allows overriding fields `UPDATE` values. See the PromoCodeUsageCreateBulk.OnConflict
// documentation for more info.
func
(
u
*
PromoCodeUsageUpsertBulk
)
Update
(
set
func
(
*
PromoCodeUsageUpsert
))
*
PromoCodeUsageUpsertBulk
{
u
.
create
.
conflict
=
append
(
u
.
create
.
conflict
,
sql
.
ResolveWith
(
func
(
update
*
sql
.
UpdateSet
)
{
set
(
&
PromoCodeUsageUpsert
{
UpdateSet
:
update
})
}))
return
u
}
// SetPromoCodeID sets the "promo_code_id" field.
func
(
u
*
PromoCodeUsageUpsertBulk
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetPromoCodeID
(
v
)
})
}
// UpdatePromoCodeID sets the "promo_code_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertBulk
)
UpdatePromoCodeID
()
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdatePromoCodeID
()
})
}
// SetUserID sets the "user_id" field.
func
(
u
*
PromoCodeUsageUpsertBulk
)
SetUserID
(
v
int64
)
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetUserID
(
v
)
})
}
// UpdateUserID sets the "user_id" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertBulk
)
UpdateUserID
()
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateUserID
()
})
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsertBulk
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetBonusAmount
(
v
)
})
}
// AddBonusAmount adds v to the "bonus_amount" field.
func
(
u
*
PromoCodeUsageUpsertBulk
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
AddBonusAmount
(
v
)
})
}
// UpdateBonusAmount sets the "bonus_amount" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertBulk
)
UpdateBonusAmount
()
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateBonusAmount
()
})
}
// SetUsedAt sets the "used_at" field.
func
(
u
*
PromoCodeUsageUpsertBulk
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
SetUsedAt
(
v
)
})
}
// UpdateUsedAt sets the "used_at" field to the value that was provided on create.
func
(
u
*
PromoCodeUsageUpsertBulk
)
UpdateUsedAt
()
*
PromoCodeUsageUpsertBulk
{
return
u
.
Update
(
func
(
s
*
PromoCodeUsageUpsert
)
{
s
.
UpdateUsedAt
()
})
}
// Exec executes the query.
func
(
u
*
PromoCodeUsageUpsertBulk
)
Exec
(
ctx
context
.
Context
)
error
{
if
u
.
create
.
err
!=
nil
{
return
u
.
create
.
err
}
for
i
,
b
:=
range
u
.
create
.
builders
{
if
len
(
b
.
conflict
)
!=
0
{
return
fmt
.
Errorf
(
"ent: OnConflict was set for builder %d. Set it on the PromoCodeUsageCreateBulk instead"
,
i
)
}
}
if
len
(
u
.
create
.
conflict
)
==
0
{
return
errors
.
New
(
"ent: missing options for PromoCodeUsageCreateBulk.OnConflict"
)
}
return
u
.
create
.
Exec
(
ctx
)
}
// ExecX is like Exec, but panics if an error occurs.
func
(
u
*
PromoCodeUsageUpsertBulk
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
u
.
create
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
backend/ent/promocodeusage_delete.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/predicate"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
)
// PromoCodeUsageDelete is the builder for deleting a PromoCodeUsage entity.
type
PromoCodeUsageDelete
struct
{
config
hooks
[]
Hook
mutation
*
PromoCodeUsageMutation
}
// Where appends a list predicates to the PromoCodeUsageDelete builder.
func
(
_d
*
PromoCodeUsageDelete
)
Where
(
ps
...
predicate
.
PromoCodeUsage
)
*
PromoCodeUsageDelete
{
_d
.
mutation
.
Where
(
ps
...
)
return
_d
}
// Exec executes the deletion query and returns how many vertices were deleted.
func
(
_d
*
PromoCodeUsageDelete
)
Exec
(
ctx
context
.
Context
)
(
int
,
error
)
{
return
withHooks
(
ctx
,
_d
.
sqlExec
,
_d
.
mutation
,
_d
.
hooks
)
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_d
*
PromoCodeUsageDelete
)
ExecX
(
ctx
context
.
Context
)
int
{
n
,
err
:=
_d
.
Exec
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
n
}
func
(
_d
*
PromoCodeUsageDelete
)
sqlExec
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
sqlgraph
.
NewDeleteSpec
(
promocodeusage
.
Table
,
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
))
if
ps
:=
_d
.
mutation
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
affected
,
err
:=
sqlgraph
.
DeleteNodes
(
ctx
,
_d
.
driver
,
_spec
)
if
err
!=
nil
&&
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
_d
.
mutation
.
done
=
true
return
affected
,
err
}
// PromoCodeUsageDeleteOne is the builder for deleting a single PromoCodeUsage entity.
type
PromoCodeUsageDeleteOne
struct
{
_d
*
PromoCodeUsageDelete
}
// Where appends a list predicates to the PromoCodeUsageDelete builder.
func
(
_d
*
PromoCodeUsageDeleteOne
)
Where
(
ps
...
predicate
.
PromoCodeUsage
)
*
PromoCodeUsageDeleteOne
{
_d
.
_d
.
mutation
.
Where
(
ps
...
)
return
_d
}
// Exec executes the deletion query.
func
(
_d
*
PromoCodeUsageDeleteOne
)
Exec
(
ctx
context
.
Context
)
error
{
n
,
err
:=
_d
.
_d
.
Exec
(
ctx
)
switch
{
case
err
!=
nil
:
return
err
case
n
==
0
:
return
&
NotFoundError
{
promocodeusage
.
Label
}
default
:
return
nil
}
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_d
*
PromoCodeUsageDeleteOne
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_d
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
backend/ent/promocodeusage_query.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"fmt"
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/predicate"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
"github.com/Wei-Shaw/sub2api/ent/user"
)
// PromoCodeUsageQuery is the builder for querying PromoCodeUsage entities.
type
PromoCodeUsageQuery
struct
{
config
ctx
*
QueryContext
order
[]
promocodeusage
.
OrderOption
inters
[]
Interceptor
predicates
[]
predicate
.
PromoCodeUsage
withPromoCode
*
PromoCodeQuery
withUser
*
UserQuery
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
}
// Where adds a new predicate for the PromoCodeUsageQuery builder.
func
(
_q
*
PromoCodeUsageQuery
)
Where
(
ps
...
predicate
.
PromoCodeUsage
)
*
PromoCodeUsageQuery
{
_q
.
predicates
=
append
(
_q
.
predicates
,
ps
...
)
return
_q
}
// Limit the number of records to be returned by this query.
func
(
_q
*
PromoCodeUsageQuery
)
Limit
(
limit
int
)
*
PromoCodeUsageQuery
{
_q
.
ctx
.
Limit
=
&
limit
return
_q
}
// Offset to start from.
func
(
_q
*
PromoCodeUsageQuery
)
Offset
(
offset
int
)
*
PromoCodeUsageQuery
{
_q
.
ctx
.
Offset
=
&
offset
return
_q
}
// Unique configures the query builder to filter duplicate records on query.
// By default, unique is set to true, and can be disabled using this method.
func
(
_q
*
PromoCodeUsageQuery
)
Unique
(
unique
bool
)
*
PromoCodeUsageQuery
{
_q
.
ctx
.
Unique
=
&
unique
return
_q
}
// Order specifies how the records should be ordered.
func
(
_q
*
PromoCodeUsageQuery
)
Order
(
o
...
promocodeusage
.
OrderOption
)
*
PromoCodeUsageQuery
{
_q
.
order
=
append
(
_q
.
order
,
o
...
)
return
_q
}
// QueryPromoCode chains the current query on the "promo_code" edge.
func
(
_q
*
PromoCodeUsageQuery
)
QueryPromoCode
()
*
PromoCodeQuery
{
query
:=
(
&
PromoCodeClient
{
config
:
_q
.
config
})
.
Query
()
query
.
path
=
func
(
ctx
context
.
Context
)
(
fromU
*
sql
.
Selector
,
err
error
)
{
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
nil
,
err
}
selector
:=
_q
.
sqlQuery
(
ctx
)
if
err
:=
selector
.
Err
();
err
!=
nil
{
return
nil
,
err
}
step
:=
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
promocodeusage
.
Table
,
promocodeusage
.
FieldID
,
selector
),
sqlgraph
.
To
(
promocode
.
Table
,
promocode
.
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
promocodeusage
.
PromoCodeTable
,
promocodeusage
.
PromoCodeColumn
),
)
fromU
=
sqlgraph
.
SetNeighbors
(
_q
.
driver
.
Dialect
(),
step
)
return
fromU
,
nil
}
return
query
}
// QueryUser chains the current query on the "user" edge.
func
(
_q
*
PromoCodeUsageQuery
)
QueryUser
()
*
UserQuery
{
query
:=
(
&
UserClient
{
config
:
_q
.
config
})
.
Query
()
query
.
path
=
func
(
ctx
context
.
Context
)
(
fromU
*
sql
.
Selector
,
err
error
)
{
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
nil
,
err
}
selector
:=
_q
.
sqlQuery
(
ctx
)
if
err
:=
selector
.
Err
();
err
!=
nil
{
return
nil
,
err
}
step
:=
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
promocodeusage
.
Table
,
promocodeusage
.
FieldID
,
selector
),
sqlgraph
.
To
(
user
.
Table
,
user
.
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
M2O
,
true
,
promocodeusage
.
UserTable
,
promocodeusage
.
UserColumn
),
)
fromU
=
sqlgraph
.
SetNeighbors
(
_q
.
driver
.
Dialect
(),
step
)
return
fromU
,
nil
}
return
query
}
// First returns the first PromoCodeUsage entity from the query.
// Returns a *NotFoundError when no PromoCodeUsage was found.
func
(
_q
*
PromoCodeUsageQuery
)
First
(
ctx
context
.
Context
)
(
*
PromoCodeUsage
,
error
)
{
nodes
,
err
:=
_q
.
Limit
(
1
)
.
All
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryFirst
))
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
nodes
)
==
0
{
return
nil
,
&
NotFoundError
{
promocodeusage
.
Label
}
}
return
nodes
[
0
],
nil
}
// FirstX is like First, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
FirstX
(
ctx
context
.
Context
)
*
PromoCodeUsage
{
node
,
err
:=
_q
.
First
(
ctx
)
if
err
!=
nil
&&
!
IsNotFound
(
err
)
{
panic
(
err
)
}
return
node
}
// FirstID returns the first PromoCodeUsage ID from the query.
// Returns a *NotFoundError when no PromoCodeUsage ID was found.
func
(
_q
*
PromoCodeUsageQuery
)
FirstID
(
ctx
context
.
Context
)
(
id
int64
,
err
error
)
{
var
ids
[]
int64
if
ids
,
err
=
_q
.
Limit
(
1
)
.
IDs
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryFirstID
));
err
!=
nil
{
return
}
if
len
(
ids
)
==
0
{
err
=
&
NotFoundError
{
promocodeusage
.
Label
}
return
}
return
ids
[
0
],
nil
}
// FirstIDX is like FirstID, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
FirstIDX
(
ctx
context
.
Context
)
int64
{
id
,
err
:=
_q
.
FirstID
(
ctx
)
if
err
!=
nil
&&
!
IsNotFound
(
err
)
{
panic
(
err
)
}
return
id
}
// Only returns a single PromoCodeUsage entity found by the query, ensuring it only returns one.
// Returns a *NotSingularError when more than one PromoCodeUsage entity is found.
// Returns a *NotFoundError when no PromoCodeUsage entities are found.
func
(
_q
*
PromoCodeUsageQuery
)
Only
(
ctx
context
.
Context
)
(
*
PromoCodeUsage
,
error
)
{
nodes
,
err
:=
_q
.
Limit
(
2
)
.
All
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryOnly
))
if
err
!=
nil
{
return
nil
,
err
}
switch
len
(
nodes
)
{
case
1
:
return
nodes
[
0
],
nil
case
0
:
return
nil
,
&
NotFoundError
{
promocodeusage
.
Label
}
default
:
return
nil
,
&
NotSingularError
{
promocodeusage
.
Label
}
}
}
// OnlyX is like Only, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
OnlyX
(
ctx
context
.
Context
)
*
PromoCodeUsage
{
node
,
err
:=
_q
.
Only
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
node
}
// OnlyID is like Only, but returns the only PromoCodeUsage ID in the query.
// Returns a *NotSingularError when more than one PromoCodeUsage ID is found.
// Returns a *NotFoundError when no entities are found.
func
(
_q
*
PromoCodeUsageQuery
)
OnlyID
(
ctx
context
.
Context
)
(
id
int64
,
err
error
)
{
var
ids
[]
int64
if
ids
,
err
=
_q
.
Limit
(
2
)
.
IDs
(
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryOnlyID
));
err
!=
nil
{
return
}
switch
len
(
ids
)
{
case
1
:
id
=
ids
[
0
]
case
0
:
err
=
&
NotFoundError
{
promocodeusage
.
Label
}
default
:
err
=
&
NotSingularError
{
promocodeusage
.
Label
}
}
return
}
// OnlyIDX is like OnlyID, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
OnlyIDX
(
ctx
context
.
Context
)
int64
{
id
,
err
:=
_q
.
OnlyID
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
id
}
// All executes the query and returns a list of PromoCodeUsages.
func
(
_q
*
PromoCodeUsageQuery
)
All
(
ctx
context
.
Context
)
([]
*
PromoCodeUsage
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryAll
)
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
nil
,
err
}
qr
:=
querierAll
[[]
*
PromoCodeUsage
,
*
PromoCodeUsageQuery
]()
return
withInterceptors
[[]
*
PromoCodeUsage
](
ctx
,
_q
,
qr
,
_q
.
inters
)
}
// AllX is like All, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
AllX
(
ctx
context
.
Context
)
[]
*
PromoCodeUsage
{
nodes
,
err
:=
_q
.
All
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
nodes
}
// IDs executes the query and returns a list of PromoCodeUsage IDs.
func
(
_q
*
PromoCodeUsageQuery
)
IDs
(
ctx
context
.
Context
)
(
ids
[]
int64
,
err
error
)
{
if
_q
.
ctx
.
Unique
==
nil
&&
_q
.
path
!=
nil
{
_q
.
Unique
(
true
)
}
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryIDs
)
if
err
=
_q
.
Select
(
promocodeusage
.
FieldID
)
.
Scan
(
ctx
,
&
ids
);
err
!=
nil
{
return
nil
,
err
}
return
ids
,
nil
}
// IDsX is like IDs, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
IDsX
(
ctx
context
.
Context
)
[]
int64
{
ids
,
err
:=
_q
.
IDs
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
ids
}
// Count returns the count of the given query.
func
(
_q
*
PromoCodeUsageQuery
)
Count
(
ctx
context
.
Context
)
(
int
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryCount
)
if
err
:=
_q
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
0
,
err
}
return
withInterceptors
[
int
](
ctx
,
_q
,
querierCount
[
*
PromoCodeUsageQuery
](),
_q
.
inters
)
}
// CountX is like Count, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
CountX
(
ctx
context
.
Context
)
int
{
count
,
err
:=
_q
.
Count
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
count
}
// Exist returns true if the query has elements in the graph.
func
(
_q
*
PromoCodeUsageQuery
)
Exist
(
ctx
context
.
Context
)
(
bool
,
error
)
{
ctx
=
setContextOp
(
ctx
,
_q
.
ctx
,
ent
.
OpQueryExist
)
switch
_
,
err
:=
_q
.
FirstID
(
ctx
);
{
case
IsNotFound
(
err
)
:
return
false
,
nil
case
err
!=
nil
:
return
false
,
fmt
.
Errorf
(
"ent: check existence: %w"
,
err
)
default
:
return
true
,
nil
}
}
// ExistX is like Exist, but panics if an error occurs.
func
(
_q
*
PromoCodeUsageQuery
)
ExistX
(
ctx
context
.
Context
)
bool
{
exist
,
err
:=
_q
.
Exist
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
exist
}
// Clone returns a duplicate of the PromoCodeUsageQuery builder, including all associated steps. It can be
// used to prepare common query builders and use them differently after the clone is made.
func
(
_q
*
PromoCodeUsageQuery
)
Clone
()
*
PromoCodeUsageQuery
{
if
_q
==
nil
{
return
nil
}
return
&
PromoCodeUsageQuery
{
config
:
_q
.
config
,
ctx
:
_q
.
ctx
.
Clone
(),
order
:
append
([]
promocodeusage
.
OrderOption
{},
_q
.
order
...
),
inters
:
append
([]
Interceptor
{},
_q
.
inters
...
),
predicates
:
append
([]
predicate
.
PromoCodeUsage
{},
_q
.
predicates
...
),
withPromoCode
:
_q
.
withPromoCode
.
Clone
(),
withUser
:
_q
.
withUser
.
Clone
(),
// clone intermediate query.
sql
:
_q
.
sql
.
Clone
(),
path
:
_q
.
path
,
}
}
// WithPromoCode tells the query-builder to eager-load the nodes that are connected to
// the "promo_code" edge. The optional arguments are used to configure the query builder of the edge.
func
(
_q
*
PromoCodeUsageQuery
)
WithPromoCode
(
opts
...
func
(
*
PromoCodeQuery
))
*
PromoCodeUsageQuery
{
query
:=
(
&
PromoCodeClient
{
config
:
_q
.
config
})
.
Query
()
for
_
,
opt
:=
range
opts
{
opt
(
query
)
}
_q
.
withPromoCode
=
query
return
_q
}
// WithUser tells the query-builder to eager-load the nodes that are connected to
// the "user" edge. The optional arguments are used to configure the query builder of the edge.
func
(
_q
*
PromoCodeUsageQuery
)
WithUser
(
opts
...
func
(
*
UserQuery
))
*
PromoCodeUsageQuery
{
query
:=
(
&
UserClient
{
config
:
_q
.
config
})
.
Query
()
for
_
,
opt
:=
range
opts
{
opt
(
query
)
}
_q
.
withUser
=
query
return
_q
}
// GroupBy is used to group vertices by one or more fields/columns.
// It is often used with aggregate functions, like: count, max, mean, min, sum.
//
// Example:
//
// var v []struct {
// PromoCodeID int64 `json:"promo_code_id,omitempty"`
// Count int `json:"count,omitempty"`
// }
//
// client.PromoCodeUsage.Query().
// GroupBy(promocodeusage.FieldPromoCodeID).
// Aggregate(ent.Count()).
// Scan(ctx, &v)
func
(
_q
*
PromoCodeUsageQuery
)
GroupBy
(
field
string
,
fields
...
string
)
*
PromoCodeUsageGroupBy
{
_q
.
ctx
.
Fields
=
append
([]
string
{
field
},
fields
...
)
grbuild
:=
&
PromoCodeUsageGroupBy
{
build
:
_q
}
grbuild
.
flds
=
&
_q
.
ctx
.
Fields
grbuild
.
label
=
promocodeusage
.
Label
grbuild
.
scan
=
grbuild
.
Scan
return
grbuild
}
// Select allows the selection one or more fields/columns for the given query,
// instead of selecting all fields in the entity.
//
// Example:
//
// var v []struct {
// PromoCodeID int64 `json:"promo_code_id,omitempty"`
// }
//
// client.PromoCodeUsage.Query().
// Select(promocodeusage.FieldPromoCodeID).
// Scan(ctx, &v)
func
(
_q
*
PromoCodeUsageQuery
)
Select
(
fields
...
string
)
*
PromoCodeUsageSelect
{
_q
.
ctx
.
Fields
=
append
(
_q
.
ctx
.
Fields
,
fields
...
)
sbuild
:=
&
PromoCodeUsageSelect
{
PromoCodeUsageQuery
:
_q
}
sbuild
.
label
=
promocodeusage
.
Label
sbuild
.
flds
,
sbuild
.
scan
=
&
_q
.
ctx
.
Fields
,
sbuild
.
Scan
return
sbuild
}
// Aggregate returns a PromoCodeUsageSelect configured with the given aggregations.
func
(
_q
*
PromoCodeUsageQuery
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeUsageSelect
{
return
_q
.
Select
()
.
Aggregate
(
fns
...
)
}
func
(
_q
*
PromoCodeUsageQuery
)
prepareQuery
(
ctx
context
.
Context
)
error
{
for
_
,
inter
:=
range
_q
.
inters
{
if
inter
==
nil
{
return
fmt
.
Errorf
(
"ent: uninitialized interceptor (forgotten import ent/runtime?)"
)
}
if
trv
,
ok
:=
inter
.
(
Traverser
);
ok
{
if
err
:=
trv
.
Traverse
(
ctx
,
_q
);
err
!=
nil
{
return
err
}
}
}
for
_
,
f
:=
range
_q
.
ctx
.
Fields
{
if
!
promocodeusage
.
ValidColumn
(
f
)
{
return
&
ValidationError
{
Name
:
f
,
err
:
fmt
.
Errorf
(
"ent: invalid field %q for query"
,
f
)}
}
}
if
_q
.
path
!=
nil
{
prev
,
err
:=
_q
.
path
(
ctx
)
if
err
!=
nil
{
return
err
}
_q
.
sql
=
prev
}
return
nil
}
func
(
_q
*
PromoCodeUsageQuery
)
sqlAll
(
ctx
context
.
Context
,
hooks
...
queryHook
)
([]
*
PromoCodeUsage
,
error
)
{
var
(
nodes
=
[]
*
PromoCodeUsage
{}
_spec
=
_q
.
querySpec
()
loadedTypes
=
[
2
]
bool
{
_q
.
withPromoCode
!=
nil
,
_q
.
withUser
!=
nil
,
}
)
_spec
.
ScanValues
=
func
(
columns
[]
string
)
([]
any
,
error
)
{
return
(
*
PromoCodeUsage
)
.
scanValues
(
nil
,
columns
)
}
_spec
.
Assign
=
func
(
columns
[]
string
,
values
[]
any
)
error
{
node
:=
&
PromoCodeUsage
{
config
:
_q
.
config
}
nodes
=
append
(
nodes
,
node
)
node
.
Edges
.
loadedTypes
=
loadedTypes
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
if
err
:=
sqlgraph
.
QueryNodes
(
ctx
,
_q
.
driver
,
_spec
);
err
!=
nil
{
return
nil
,
err
}
if
len
(
nodes
)
==
0
{
return
nodes
,
nil
}
if
query
:=
_q
.
withPromoCode
;
query
!=
nil
{
if
err
:=
_q
.
loadPromoCode
(
ctx
,
query
,
nodes
,
nil
,
func
(
n
*
PromoCodeUsage
,
e
*
PromoCode
)
{
n
.
Edges
.
PromoCode
=
e
});
err
!=
nil
{
return
nil
,
err
}
}
if
query
:=
_q
.
withUser
;
query
!=
nil
{
if
err
:=
_q
.
loadUser
(
ctx
,
query
,
nodes
,
nil
,
func
(
n
*
PromoCodeUsage
,
e
*
User
)
{
n
.
Edges
.
User
=
e
});
err
!=
nil
{
return
nil
,
err
}
}
return
nodes
,
nil
}
func
(
_q
*
PromoCodeUsageQuery
)
loadPromoCode
(
ctx
context
.
Context
,
query
*
PromoCodeQuery
,
nodes
[]
*
PromoCodeUsage
,
init
func
(
*
PromoCodeUsage
),
assign
func
(
*
PromoCodeUsage
,
*
PromoCode
))
error
{
ids
:=
make
([]
int64
,
0
,
len
(
nodes
))
nodeids
:=
make
(
map
[
int64
][]
*
PromoCodeUsage
)
for
i
:=
range
nodes
{
fk
:=
nodes
[
i
]
.
PromoCodeID
if
_
,
ok
:=
nodeids
[
fk
];
!
ok
{
ids
=
append
(
ids
,
fk
)
}
nodeids
[
fk
]
=
append
(
nodeids
[
fk
],
nodes
[
i
])
}
if
len
(
ids
)
==
0
{
return
nil
}
query
.
Where
(
promocode
.
IDIn
(
ids
...
))
neighbors
,
err
:=
query
.
All
(
ctx
)
if
err
!=
nil
{
return
err
}
for
_
,
n
:=
range
neighbors
{
nodes
,
ok
:=
nodeids
[
n
.
ID
]
if
!
ok
{
return
fmt
.
Errorf
(
`unexpected foreign-key "promo_code_id" returned %v`
,
n
.
ID
)
}
for
i
:=
range
nodes
{
assign
(
nodes
[
i
],
n
)
}
}
return
nil
}
func
(
_q
*
PromoCodeUsageQuery
)
loadUser
(
ctx
context
.
Context
,
query
*
UserQuery
,
nodes
[]
*
PromoCodeUsage
,
init
func
(
*
PromoCodeUsage
),
assign
func
(
*
PromoCodeUsage
,
*
User
))
error
{
ids
:=
make
([]
int64
,
0
,
len
(
nodes
))
nodeids
:=
make
(
map
[
int64
][]
*
PromoCodeUsage
)
for
i
:=
range
nodes
{
fk
:=
nodes
[
i
]
.
UserID
if
_
,
ok
:=
nodeids
[
fk
];
!
ok
{
ids
=
append
(
ids
,
fk
)
}
nodeids
[
fk
]
=
append
(
nodeids
[
fk
],
nodes
[
i
])
}
if
len
(
ids
)
==
0
{
return
nil
}
query
.
Where
(
user
.
IDIn
(
ids
...
))
neighbors
,
err
:=
query
.
All
(
ctx
)
if
err
!=
nil
{
return
err
}
for
_
,
n
:=
range
neighbors
{
nodes
,
ok
:=
nodeids
[
n
.
ID
]
if
!
ok
{
return
fmt
.
Errorf
(
`unexpected foreign-key "user_id" returned %v`
,
n
.
ID
)
}
for
i
:=
range
nodes
{
assign
(
nodes
[
i
],
n
)
}
}
return
nil
}
func
(
_q
*
PromoCodeUsageQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
}
return
sqlgraph
.
CountNodes
(
ctx
,
_q
.
driver
,
_spec
)
}
func
(
_q
*
PromoCodeUsageQuery
)
querySpec
()
*
sqlgraph
.
QuerySpec
{
_spec
:=
sqlgraph
.
NewQuerySpec
(
promocodeusage
.
Table
,
promocodeusage
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
))
_spec
.
From
=
_q
.
sql
if
unique
:=
_q
.
ctx
.
Unique
;
unique
!=
nil
{
_spec
.
Unique
=
*
unique
}
else
if
_q
.
path
!=
nil
{
_spec
.
Unique
=
true
}
if
fields
:=
_q
.
ctx
.
Fields
;
len
(
fields
)
>
0
{
_spec
.
Node
.
Columns
=
make
([]
string
,
0
,
len
(
fields
))
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
promocodeusage
.
FieldID
)
for
i
:=
range
fields
{
if
fields
[
i
]
!=
promocodeusage
.
FieldID
{
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
fields
[
i
])
}
}
if
_q
.
withPromoCode
!=
nil
{
_spec
.
Node
.
AddColumnOnce
(
promocodeusage
.
FieldPromoCodeID
)
}
if
_q
.
withUser
!=
nil
{
_spec
.
Node
.
AddColumnOnce
(
promocodeusage
.
FieldUserID
)
}
}
if
ps
:=
_q
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
limit
:=
_q
.
ctx
.
Limit
;
limit
!=
nil
{
_spec
.
Limit
=
*
limit
}
if
offset
:=
_q
.
ctx
.
Offset
;
offset
!=
nil
{
_spec
.
Offset
=
*
offset
}
if
ps
:=
_q
.
order
;
len
(
ps
)
>
0
{
_spec
.
Order
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
return
_spec
}
func
(
_q
*
PromoCodeUsageQuery
)
sqlQuery
(
ctx
context
.
Context
)
*
sql
.
Selector
{
builder
:=
sql
.
Dialect
(
_q
.
driver
.
Dialect
())
t1
:=
builder
.
Table
(
promocodeusage
.
Table
)
columns
:=
_q
.
ctx
.
Fields
if
len
(
columns
)
==
0
{
columns
=
promocodeusage
.
Columns
}
selector
:=
builder
.
Select
(
t1
.
Columns
(
columns
...
)
...
)
.
From
(
t1
)
if
_q
.
sql
!=
nil
{
selector
=
_q
.
sql
selector
.
Select
(
selector
.
Columns
(
columns
...
)
...
)
}
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
for
_
,
p
:=
range
_q
.
order
{
p
(
selector
)
}
if
offset
:=
_q
.
ctx
.
Offset
;
offset
!=
nil
{
// limit is mandatory for offset clause. We start
// with default value, and override it below if needed.
selector
.
Offset
(
*
offset
)
.
Limit
(
math
.
MaxInt32
)
}
if
limit
:=
_q
.
ctx
.
Limit
;
limit
!=
nil
{
selector
.
Limit
(
*
limit
)
}
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
PromoCodeUsageQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
PromoCodeUsageQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
PromoCodeUsageQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
PromoCodeUsageQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// PromoCodeUsageGroupBy is the group-by builder for PromoCodeUsage entities.
type
PromoCodeUsageGroupBy
struct
{
selector
build
*
PromoCodeUsageQuery
}
// Aggregate adds the given aggregation functions to the group-by query.
func
(
_g
*
PromoCodeUsageGroupBy
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeUsageGroupBy
{
_g
.
fns
=
append
(
_g
.
fns
,
fns
...
)
return
_g
}
// Scan applies the selector query and scans the result into the given value.
func
(
_g
*
PromoCodeUsageGroupBy
)
Scan
(
ctx
context
.
Context
,
v
any
)
error
{
ctx
=
setContextOp
(
ctx
,
_g
.
build
.
ctx
,
ent
.
OpQueryGroupBy
)
if
err
:=
_g
.
build
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
err
}
return
scanWithInterceptors
[
*
PromoCodeUsageQuery
,
*
PromoCodeUsageGroupBy
](
ctx
,
_g
.
build
,
_g
,
_g
.
build
.
inters
,
v
)
}
func
(
_g
*
PromoCodeUsageGroupBy
)
sqlScan
(
ctx
context
.
Context
,
root
*
PromoCodeUsageQuery
,
v
any
)
error
{
selector
:=
root
.
sqlQuery
(
ctx
)
.
Select
()
aggregation
:=
make
([]
string
,
0
,
len
(
_g
.
fns
))
for
_
,
fn
:=
range
_g
.
fns
{
aggregation
=
append
(
aggregation
,
fn
(
selector
))
}
if
len
(
selector
.
SelectedColumns
())
==
0
{
columns
:=
make
([]
string
,
0
,
len
(
*
_g
.
flds
)
+
len
(
_g
.
fns
))
for
_
,
f
:=
range
*
_g
.
flds
{
columns
=
append
(
columns
,
selector
.
C
(
f
))
}
columns
=
append
(
columns
,
aggregation
...
)
selector
.
Select
(
columns
...
)
}
selector
.
GroupBy
(
selector
.
Columns
(
*
_g
.
flds
...
)
...
)
if
err
:=
selector
.
Err
();
err
!=
nil
{
return
err
}
rows
:=
&
sql
.
Rows
{}
query
,
args
:=
selector
.
Query
()
if
err
:=
_g
.
build
.
driver
.
Query
(
ctx
,
query
,
args
,
rows
);
err
!=
nil
{
return
err
}
defer
rows
.
Close
()
return
sql
.
ScanSlice
(
rows
,
v
)
}
// PromoCodeUsageSelect is the builder for selecting fields of PromoCodeUsage entities.
type
PromoCodeUsageSelect
struct
{
*
PromoCodeUsageQuery
selector
}
// Aggregate adds the given aggregation functions to the selector query.
func
(
_s
*
PromoCodeUsageSelect
)
Aggregate
(
fns
...
AggregateFunc
)
*
PromoCodeUsageSelect
{
_s
.
fns
=
append
(
_s
.
fns
,
fns
...
)
return
_s
}
// Scan applies the selector query and scans the result into the given value.
func
(
_s
*
PromoCodeUsageSelect
)
Scan
(
ctx
context
.
Context
,
v
any
)
error
{
ctx
=
setContextOp
(
ctx
,
_s
.
ctx
,
ent
.
OpQuerySelect
)
if
err
:=
_s
.
prepareQuery
(
ctx
);
err
!=
nil
{
return
err
}
return
scanWithInterceptors
[
*
PromoCodeUsageQuery
,
*
PromoCodeUsageSelect
](
ctx
,
_s
.
PromoCodeUsageQuery
,
_s
,
_s
.
inters
,
v
)
}
func
(
_s
*
PromoCodeUsageSelect
)
sqlScan
(
ctx
context
.
Context
,
root
*
PromoCodeUsageQuery
,
v
any
)
error
{
selector
:=
root
.
sqlQuery
(
ctx
)
aggregation
:=
make
([]
string
,
0
,
len
(
_s
.
fns
))
for
_
,
fn
:=
range
_s
.
fns
{
aggregation
=
append
(
aggregation
,
fn
(
selector
))
}
switch
n
:=
len
(
*
_s
.
selector
.
flds
);
{
case
n
==
0
&&
len
(
aggregation
)
>
0
:
selector
.
Select
(
aggregation
...
)
case
n
!=
0
&&
len
(
aggregation
)
>
0
:
selector
.
AppendSelect
(
aggregation
...
)
}
rows
:=
&
sql
.
Rows
{}
query
,
args
:=
selector
.
Query
()
if
err
:=
_s
.
driver
.
Query
(
ctx
,
query
,
args
,
rows
);
err
!=
nil
{
return
err
}
defer
rows
.
Close
()
return
sql
.
ScanSlice
(
rows
,
v
)
}
backend/ent/promocodeusage_update.go
0 → 100644
View file @
e79dbad6
// Code generated by ent, DO NOT EDIT.
package
ent
import
(
"context"
"errors"
"fmt"
"time"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
"github.com/Wei-Shaw/sub2api/ent/predicate"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
"github.com/Wei-Shaw/sub2api/ent/user"
)
// PromoCodeUsageUpdate is the builder for updating PromoCodeUsage entities.
type
PromoCodeUsageUpdate
struct
{
config
hooks
[]
Hook
mutation
*
PromoCodeUsageMutation
}
// Where appends a list predicates to the PromoCodeUsageUpdate builder.
func
(
_u
*
PromoCodeUsageUpdate
)
Where
(
ps
...
predicate
.
PromoCodeUsage
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
Where
(
ps
...
)
return
_u
}
// SetPromoCodeID sets the "promo_code_id" field.
func
(
_u
*
PromoCodeUsageUpdate
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
SetPromoCodeID
(
v
)
return
_u
}
// SetNillablePromoCodeID sets the "promo_code_id" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdate
)
SetNillablePromoCodeID
(
v
*
int64
)
*
PromoCodeUsageUpdate
{
if
v
!=
nil
{
_u
.
SetPromoCodeID
(
*
v
)
}
return
_u
}
// SetUserID sets the "user_id" field.
func
(
_u
*
PromoCodeUsageUpdate
)
SetUserID
(
v
int64
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
SetUserID
(
v
)
return
_u
}
// SetNillableUserID sets the "user_id" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdate
)
SetNillableUserID
(
v
*
int64
)
*
PromoCodeUsageUpdate
{
if
v
!=
nil
{
_u
.
SetUserID
(
*
v
)
}
return
_u
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
_u
*
PromoCodeUsageUpdate
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
ResetBonusAmount
()
_u
.
mutation
.
SetBonusAmount
(
v
)
return
_u
}
// SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdate
)
SetNillableBonusAmount
(
v
*
float64
)
*
PromoCodeUsageUpdate
{
if
v
!=
nil
{
_u
.
SetBonusAmount
(
*
v
)
}
return
_u
}
// AddBonusAmount adds value to the "bonus_amount" field.
func
(
_u
*
PromoCodeUsageUpdate
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
AddBonusAmount
(
v
)
return
_u
}
// SetUsedAt sets the "used_at" field.
func
(
_u
*
PromoCodeUsageUpdate
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
SetUsedAt
(
v
)
return
_u
}
// SetNillableUsedAt sets the "used_at" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdate
)
SetNillableUsedAt
(
v
*
time
.
Time
)
*
PromoCodeUsageUpdate
{
if
v
!=
nil
{
_u
.
SetUsedAt
(
*
v
)
}
return
_u
}
// SetPromoCode sets the "promo_code" edge to the PromoCode entity.
func
(
_u
*
PromoCodeUsageUpdate
)
SetPromoCode
(
v
*
PromoCode
)
*
PromoCodeUsageUpdate
{
return
_u
.
SetPromoCodeID
(
v
.
ID
)
}
// SetUser sets the "user" edge to the User entity.
func
(
_u
*
PromoCodeUsageUpdate
)
SetUser
(
v
*
User
)
*
PromoCodeUsageUpdate
{
return
_u
.
SetUserID
(
v
.
ID
)
}
// Mutation returns the PromoCodeUsageMutation object of the builder.
func
(
_u
*
PromoCodeUsageUpdate
)
Mutation
()
*
PromoCodeUsageMutation
{
return
_u
.
mutation
}
// ClearPromoCode clears the "promo_code" edge to the PromoCode entity.
func
(
_u
*
PromoCodeUsageUpdate
)
ClearPromoCode
()
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
ClearPromoCode
()
return
_u
}
// ClearUser clears the "user" edge to the User entity.
func
(
_u
*
PromoCodeUsageUpdate
)
ClearUser
()
*
PromoCodeUsageUpdate
{
_u
.
mutation
.
ClearUser
()
return
_u
}
// Save executes the query and returns the number of nodes affected by the update operation.
func
(
_u
*
PromoCodeUsageUpdate
)
Save
(
ctx
context
.
Context
)
(
int
,
error
)
{
return
withHooks
(
ctx
,
_u
.
sqlSave
,
_u
.
mutation
,
_u
.
hooks
)
}
// SaveX is like Save, but panics if an error occurs.
func
(
_u
*
PromoCodeUsageUpdate
)
SaveX
(
ctx
context
.
Context
)
int
{
affected
,
err
:=
_u
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
affected
}
// Exec executes the query.
func
(
_u
*
PromoCodeUsageUpdate
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_u
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_u
*
PromoCodeUsageUpdate
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_u
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// check runs all checks and user-defined validators on the builder.
func
(
_u
*
PromoCodeUsageUpdate
)
check
()
error
{
if
_u
.
mutation
.
PromoCodeCleared
()
&&
len
(
_u
.
mutation
.
PromoCodeIDs
())
>
0
{
return
errors
.
New
(
`ent: clearing a required unique edge "PromoCodeUsage.promo_code"`
)
}
if
_u
.
mutation
.
UserCleared
()
&&
len
(
_u
.
mutation
.
UserIDs
())
>
0
{
return
errors
.
New
(
`ent: clearing a required unique edge "PromoCodeUsage.user"`
)
}
return
nil
}
func
(
_u
*
PromoCodeUsageUpdate
)
sqlSave
(
ctx
context
.
Context
)
(
_node
int
,
err
error
)
{
if
err
:=
_u
.
check
();
err
!=
nil
{
return
_node
,
err
}
_spec
:=
sqlgraph
.
NewUpdateSpec
(
promocodeusage
.
Table
,
promocodeusage
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
))
if
ps
:=
_u
.
mutation
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
value
,
ok
:=
_u
.
mutation
.
BonusAmount
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedBonusAmount
();
ok
{
_spec
.
AddField
(
promocodeusage
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
UsedAt
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldUsedAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
PromoCodeCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
PromoCodeTable
,
Columns
:
[]
string
{
promocodeusage
.
PromoCodeColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
PromoCodeIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
PromoCodeTable
,
Columns
:
[]
string
{
promocodeusage
.
PromoCodeColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
if
_u
.
mutation
.
UserCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
UserTable
,
Columns
:
[]
string
{
promocodeusage
.
UserColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
user
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
UserIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
UserTable
,
Columns
:
[]
string
{
promocodeusage
.
UserColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
user
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
if
_node
,
err
=
sqlgraph
.
UpdateNodes
(
ctx
,
_u
.
driver
,
_spec
);
err
!=
nil
{
if
_
,
ok
:=
err
.
(
*
sqlgraph
.
NotFoundError
);
ok
{
err
=
&
NotFoundError
{
promocodeusage
.
Label
}
}
else
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
return
0
,
err
}
_u
.
mutation
.
done
=
true
return
_node
,
nil
}
// PromoCodeUsageUpdateOne is the builder for updating a single PromoCodeUsage entity.
type
PromoCodeUsageUpdateOne
struct
{
config
fields
[]
string
hooks
[]
Hook
mutation
*
PromoCodeUsageMutation
}
// SetPromoCodeID sets the "promo_code_id" field.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetPromoCodeID
(
v
int64
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
SetPromoCodeID
(
v
)
return
_u
}
// SetNillablePromoCodeID sets the "promo_code_id" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetNillablePromoCodeID
(
v
*
int64
)
*
PromoCodeUsageUpdateOne
{
if
v
!=
nil
{
_u
.
SetPromoCodeID
(
*
v
)
}
return
_u
}
// SetUserID sets the "user_id" field.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetUserID
(
v
int64
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
SetUserID
(
v
)
return
_u
}
// SetNillableUserID sets the "user_id" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetNillableUserID
(
v
*
int64
)
*
PromoCodeUsageUpdateOne
{
if
v
!=
nil
{
_u
.
SetUserID
(
*
v
)
}
return
_u
}
// SetBonusAmount sets the "bonus_amount" field.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetBonusAmount
(
v
float64
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
ResetBonusAmount
()
_u
.
mutation
.
SetBonusAmount
(
v
)
return
_u
}
// SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetNillableBonusAmount
(
v
*
float64
)
*
PromoCodeUsageUpdateOne
{
if
v
!=
nil
{
_u
.
SetBonusAmount
(
*
v
)
}
return
_u
}
// AddBonusAmount adds value to the "bonus_amount" field.
func
(
_u
*
PromoCodeUsageUpdateOne
)
AddBonusAmount
(
v
float64
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
AddBonusAmount
(
v
)
return
_u
}
// SetUsedAt sets the "used_at" field.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetUsedAt
(
v
time
.
Time
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
SetUsedAt
(
v
)
return
_u
}
// SetNillableUsedAt sets the "used_at" field if the given value is not nil.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetNillableUsedAt
(
v
*
time
.
Time
)
*
PromoCodeUsageUpdateOne
{
if
v
!=
nil
{
_u
.
SetUsedAt
(
*
v
)
}
return
_u
}
// SetPromoCode sets the "promo_code" edge to the PromoCode entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetPromoCode
(
v
*
PromoCode
)
*
PromoCodeUsageUpdateOne
{
return
_u
.
SetPromoCodeID
(
v
.
ID
)
}
// SetUser sets the "user" edge to the User entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SetUser
(
v
*
User
)
*
PromoCodeUsageUpdateOne
{
return
_u
.
SetUserID
(
v
.
ID
)
}
// Mutation returns the PromoCodeUsageMutation object of the builder.
func
(
_u
*
PromoCodeUsageUpdateOne
)
Mutation
()
*
PromoCodeUsageMutation
{
return
_u
.
mutation
}
// ClearPromoCode clears the "promo_code" edge to the PromoCode entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
ClearPromoCode
()
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
ClearPromoCode
()
return
_u
}
// ClearUser clears the "user" edge to the User entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
ClearUser
()
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
ClearUser
()
return
_u
}
// Where appends a list predicates to the PromoCodeUsageUpdate builder.
func
(
_u
*
PromoCodeUsageUpdateOne
)
Where
(
ps
...
predicate
.
PromoCodeUsage
)
*
PromoCodeUsageUpdateOne
{
_u
.
mutation
.
Where
(
ps
...
)
return
_u
}
// Select allows selecting one or more fields (columns) of the returned entity.
// The default is selecting all fields defined in the entity schema.
func
(
_u
*
PromoCodeUsageUpdateOne
)
Select
(
field
string
,
fields
...
string
)
*
PromoCodeUsageUpdateOne
{
_u
.
fields
=
append
([]
string
{
field
},
fields
...
)
return
_u
}
// Save executes the query and returns the updated PromoCodeUsage entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
Save
(
ctx
context
.
Context
)
(
*
PromoCodeUsage
,
error
)
{
return
withHooks
(
ctx
,
_u
.
sqlSave
,
_u
.
mutation
,
_u
.
hooks
)
}
// SaveX is like Save, but panics if an error occurs.
func
(
_u
*
PromoCodeUsageUpdateOne
)
SaveX
(
ctx
context
.
Context
)
*
PromoCodeUsage
{
node
,
err
:=
_u
.
Save
(
ctx
)
if
err
!=
nil
{
panic
(
err
)
}
return
node
}
// Exec executes the query on the entity.
func
(
_u
*
PromoCodeUsageUpdateOne
)
Exec
(
ctx
context
.
Context
)
error
{
_
,
err
:=
_u
.
Save
(
ctx
)
return
err
}
// ExecX is like Exec, but panics if an error occurs.
func
(
_u
*
PromoCodeUsageUpdateOne
)
ExecX
(
ctx
context
.
Context
)
{
if
err
:=
_u
.
Exec
(
ctx
);
err
!=
nil
{
panic
(
err
)
}
}
// check runs all checks and user-defined validators on the builder.
func
(
_u
*
PromoCodeUsageUpdateOne
)
check
()
error
{
if
_u
.
mutation
.
PromoCodeCleared
()
&&
len
(
_u
.
mutation
.
PromoCodeIDs
())
>
0
{
return
errors
.
New
(
`ent: clearing a required unique edge "PromoCodeUsage.promo_code"`
)
}
if
_u
.
mutation
.
UserCleared
()
&&
len
(
_u
.
mutation
.
UserIDs
())
>
0
{
return
errors
.
New
(
`ent: clearing a required unique edge "PromoCodeUsage.user"`
)
}
return
nil
}
func
(
_u
*
PromoCodeUsageUpdateOne
)
sqlSave
(
ctx
context
.
Context
)
(
_node
*
PromoCodeUsage
,
err
error
)
{
if
err
:=
_u
.
check
();
err
!=
nil
{
return
_node
,
err
}
_spec
:=
sqlgraph
.
NewUpdateSpec
(
promocodeusage
.
Table
,
promocodeusage
.
Columns
,
sqlgraph
.
NewFieldSpec
(
promocodeusage
.
FieldID
,
field
.
TypeInt64
))
id
,
ok
:=
_u
.
mutation
.
ID
()
if
!
ok
{
return
nil
,
&
ValidationError
{
Name
:
"id"
,
err
:
errors
.
New
(
`ent: missing "PromoCodeUsage.id" for update`
)}
}
_spec
.
Node
.
ID
.
Value
=
id
if
fields
:=
_u
.
fields
;
len
(
fields
)
>
0
{
_spec
.
Node
.
Columns
=
make
([]
string
,
0
,
len
(
fields
))
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
promocodeusage
.
FieldID
)
for
_
,
f
:=
range
fields
{
if
!
promocodeusage
.
ValidColumn
(
f
)
{
return
nil
,
&
ValidationError
{
Name
:
f
,
err
:
fmt
.
Errorf
(
"ent: invalid field %q for query"
,
f
)}
}
if
f
!=
promocodeusage
.
FieldID
{
_spec
.
Node
.
Columns
=
append
(
_spec
.
Node
.
Columns
,
f
)
}
}
}
if
ps
:=
_u
.
mutation
.
predicates
;
len
(
ps
)
>
0
{
_spec
.
Predicate
=
func
(
selector
*
sql
.
Selector
)
{
for
i
:=
range
ps
{
ps
[
i
](
selector
)
}
}
}
if
value
,
ok
:=
_u
.
mutation
.
BonusAmount
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
AddedBonusAmount
();
ok
{
_spec
.
AddField
(
promocodeusage
.
FieldBonusAmount
,
field
.
TypeFloat64
,
value
)
}
if
value
,
ok
:=
_u
.
mutation
.
UsedAt
();
ok
{
_spec
.
SetField
(
promocodeusage
.
FieldUsedAt
,
field
.
TypeTime
,
value
)
}
if
_u
.
mutation
.
PromoCodeCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
PromoCodeTable
,
Columns
:
[]
string
{
promocodeusage
.
PromoCodeColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
PromoCodeIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
PromoCodeTable
,
Columns
:
[]
string
{
promocodeusage
.
PromoCodeColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
promocode
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
if
_u
.
mutation
.
UserCleared
()
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
UserTable
,
Columns
:
[]
string
{
promocodeusage
.
UserColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
user
.
FieldID
,
field
.
TypeInt64
),
},
}
_spec
.
Edges
.
Clear
=
append
(
_spec
.
Edges
.
Clear
,
edge
)
}
if
nodes
:=
_u
.
mutation
.
UserIDs
();
len
(
nodes
)
>
0
{
edge
:=
&
sqlgraph
.
EdgeSpec
{
Rel
:
sqlgraph
.
M2O
,
Inverse
:
true
,
Table
:
promocodeusage
.
UserTable
,
Columns
:
[]
string
{
promocodeusage
.
UserColumn
},
Bidi
:
false
,
Target
:
&
sqlgraph
.
EdgeTarget
{
IDSpec
:
sqlgraph
.
NewFieldSpec
(
user
.
FieldID
,
field
.
TypeInt64
),
},
}
for
_
,
k
:=
range
nodes
{
edge
.
Target
.
Nodes
=
append
(
edge
.
Target
.
Nodes
,
k
)
}
_spec
.
Edges
.
Add
=
append
(
_spec
.
Edges
.
Add
,
edge
)
}
_node
=
&
PromoCodeUsage
{
config
:
_u
.
config
}
_spec
.
Assign
=
_node
.
assignValues
_spec
.
ScanValues
=
_node
.
scanValues
if
err
=
sqlgraph
.
UpdateNode
(
ctx
,
_u
.
driver
,
_spec
);
err
!=
nil
{
if
_
,
ok
:=
err
.
(
*
sqlgraph
.
NotFoundError
);
ok
{
err
=
&
NotFoundError
{
promocodeusage
.
Label
}
}
else
if
sqlgraph
.
IsConstraintError
(
err
)
{
err
=
&
ConstraintError
{
msg
:
err
.
Error
(),
wrap
:
err
}
}
return
nil
,
err
}
_u
.
mutation
.
done
=
true
return
_node
,
nil
}
backend/ent/proxy_query.go
View file @
e79dbad6
...
...
@@ -9,6 +9,7 @@ import (
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
...
...
@@ -25,6 +26,7 @@ type ProxyQuery struct {
inters
[]
Interceptor
predicates
[]
predicate
.
Proxy
withAccounts
*
AccountQuery
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
...
...
@@ -384,6 +386,9 @@ func (_q *ProxyQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Proxy,
node
.
Edges
.
loadedTypes
=
loadedTypes
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
...
...
@@ -439,6 +444,9 @@ func (_q *ProxyQuery) loadAccounts(ctx context.Context, query *AccountQuery, nod
func
(
_q
*
ProxyQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
...
...
@@ -501,6 +509,9 @@ func (_q *ProxyQuery) sqlQuery(ctx context.Context) *sql.Selector {
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
...
...
@@ -518,6 +529,32 @@ func (_q *ProxyQuery) sqlQuery(ctx context.Context) *sql.Selector {
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
ProxyQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
ProxyQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
ProxyQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
ProxyQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// ProxyGroupBy is the group-by builder for Proxy entities.
type
ProxyGroupBy
struct
{
selector
...
...
backend/ent/redeemcode_query.go
View file @
e79dbad6
...
...
@@ -8,6 +8,7 @@ import (
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
...
...
@@ -26,6 +27,7 @@ type RedeemCodeQuery struct {
predicates
[]
predicate
.
RedeemCode
withUser
*
UserQuery
withGroup
*
GroupQuery
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
...
...
@@ -420,6 +422,9 @@ func (_q *RedeemCodeQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*R
node
.
Edges
.
loadedTypes
=
loadedTypes
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
...
...
@@ -511,6 +516,9 @@ func (_q *RedeemCodeQuery) loadGroup(ctx context.Context, query *GroupQuery, nod
func
(
_q
*
RedeemCodeQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
...
...
@@ -579,6 +587,9 @@ func (_q *RedeemCodeQuery) sqlQuery(ctx context.Context) *sql.Selector {
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
...
...
@@ -596,6 +607,32 @@ func (_q *RedeemCodeQuery) sqlQuery(ctx context.Context) *sql.Selector {
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
RedeemCodeQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
RedeemCodeQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
RedeemCodeQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
RedeemCodeQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// RedeemCodeGroupBy is the group-by builder for RedeemCode entities.
type
RedeemCodeGroupBy
struct
{
selector
...
...
backend/ent/runtime/runtime.go
View file @
e79dbad6
...
...
@@ -9,6 +9,8 @@ import (
"github.com/Wei-Shaw/sub2api/ent/accountgroup"
"github.com/Wei-Shaw/sub2api/ent/apikey"
"github.com/Wei-Shaw/sub2api/ent/group"
"github.com/Wei-Shaw/sub2api/ent/promocode"
"github.com/Wei-Shaw/sub2api/ent/promocodeusage"
"github.com/Wei-Shaw/sub2api/ent/proxy"
"github.com/Wei-Shaw/sub2api/ent/redeemcode"
"github.com/Wei-Shaw/sub2api/ent/schema"
...
...
@@ -274,6 +276,60 @@ func init() {
groupDescClaudeCodeOnly
:=
groupFields
[
14
]
.
Descriptor
()
// group.DefaultClaudeCodeOnly holds the default value on creation for the claude_code_only field.
group
.
DefaultClaudeCodeOnly
=
groupDescClaudeCodeOnly
.
Default
.
(
bool
)
promocodeFields
:=
schema
.
PromoCode
{}
.
Fields
()
_
=
promocodeFields
// promocodeDescCode is the schema descriptor for code field.
promocodeDescCode
:=
promocodeFields
[
0
]
.
Descriptor
()
// promocode.CodeValidator is a validator for the "code" field. It is called by the builders before save.
promocode
.
CodeValidator
=
func
()
func
(
string
)
error
{
validators
:=
promocodeDescCode
.
Validators
fns
:=
[
...
]
func
(
string
)
error
{
validators
[
0
]
.
(
func
(
string
)
error
),
validators
[
1
]
.
(
func
(
string
)
error
),
}
return
func
(
code
string
)
error
{
for
_
,
fn
:=
range
fns
{
if
err
:=
fn
(
code
);
err
!=
nil
{
return
err
}
}
return
nil
}
}()
// promocodeDescBonusAmount is the schema descriptor for bonus_amount field.
promocodeDescBonusAmount
:=
promocodeFields
[
1
]
.
Descriptor
()
// promocode.DefaultBonusAmount holds the default value on creation for the bonus_amount field.
promocode
.
DefaultBonusAmount
=
promocodeDescBonusAmount
.
Default
.
(
float64
)
// promocodeDescMaxUses is the schema descriptor for max_uses field.
promocodeDescMaxUses
:=
promocodeFields
[
2
]
.
Descriptor
()
// promocode.DefaultMaxUses holds the default value on creation for the max_uses field.
promocode
.
DefaultMaxUses
=
promocodeDescMaxUses
.
Default
.
(
int
)
// promocodeDescUsedCount is the schema descriptor for used_count field.
promocodeDescUsedCount
:=
promocodeFields
[
3
]
.
Descriptor
()
// promocode.DefaultUsedCount holds the default value on creation for the used_count field.
promocode
.
DefaultUsedCount
=
promocodeDescUsedCount
.
Default
.
(
int
)
// promocodeDescStatus is the schema descriptor for status field.
promocodeDescStatus
:=
promocodeFields
[
4
]
.
Descriptor
()
// promocode.DefaultStatus holds the default value on creation for the status field.
promocode
.
DefaultStatus
=
promocodeDescStatus
.
Default
.
(
string
)
// promocode.StatusValidator is a validator for the "status" field. It is called by the builders before save.
promocode
.
StatusValidator
=
promocodeDescStatus
.
Validators
[
0
]
.
(
func
(
string
)
error
)
// promocodeDescCreatedAt is the schema descriptor for created_at field.
promocodeDescCreatedAt
:=
promocodeFields
[
7
]
.
Descriptor
()
// promocode.DefaultCreatedAt holds the default value on creation for the created_at field.
promocode
.
DefaultCreatedAt
=
promocodeDescCreatedAt
.
Default
.
(
func
()
time
.
Time
)
// promocodeDescUpdatedAt is the schema descriptor for updated_at field.
promocodeDescUpdatedAt
:=
promocodeFields
[
8
]
.
Descriptor
()
// promocode.DefaultUpdatedAt holds the default value on creation for the updated_at field.
promocode
.
DefaultUpdatedAt
=
promocodeDescUpdatedAt
.
Default
.
(
func
()
time
.
Time
)
// promocode.UpdateDefaultUpdatedAt holds the default value on update for the updated_at field.
promocode
.
UpdateDefaultUpdatedAt
=
promocodeDescUpdatedAt
.
UpdateDefault
.
(
func
()
time
.
Time
)
promocodeusageFields
:=
schema
.
PromoCodeUsage
{}
.
Fields
()
_
=
promocodeusageFields
// promocodeusageDescUsedAt is the schema descriptor for used_at field.
promocodeusageDescUsedAt
:=
promocodeusageFields
[
3
]
.
Descriptor
()
// promocodeusage.DefaultUsedAt holds the default value on creation for the used_at field.
promocodeusage
.
DefaultUsedAt
=
promocodeusageDescUsedAt
.
Default
.
(
func
()
time
.
Time
)
proxyMixin
:=
schema
.
Proxy
{}
.
Mixin
()
proxyMixinHooks1
:=
proxyMixin
[
1
]
.
Hooks
()
proxy
.
Hooks
[
0
]
=
proxyMixinHooks1
[
0
]
...
...
backend/ent/schema/promo_code.go
0 → 100644
View file @
e79dbad6
package
schema
import
(
"time"
"github.com/Wei-Shaw/sub2api/internal/service"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/entsql"
"entgo.io/ent/schema"
"entgo.io/ent/schema/edge"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/index"
)
// PromoCode holds the schema definition for the PromoCode entity.
//
// 注册优惠码:用户注册时使用,可获得赠送余额
// 与 RedeemCode 不同,PromoCode 支持多次使用(有使用次数限制)
//
// 删除策略:硬删除
type
PromoCode
struct
{
ent
.
Schema
}
func
(
PromoCode
)
Annotations
()
[]
schema
.
Annotation
{
return
[]
schema
.
Annotation
{
entsql
.
Annotation
{
Table
:
"promo_codes"
},
}
}
func
(
PromoCode
)
Fields
()
[]
ent
.
Field
{
return
[]
ent
.
Field
{
field
.
String
(
"code"
)
.
MaxLen
(
32
)
.
NotEmpty
()
.
Unique
()
.
Comment
(
"优惠码"
),
field
.
Float
(
"bonus_amount"
)
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"decimal(20,8)"
})
.
Default
(
0
)
.
Comment
(
"赠送余额金额"
),
field
.
Int
(
"max_uses"
)
.
Default
(
0
)
.
Comment
(
"最大使用次数,0表示无限制"
),
field
.
Int
(
"used_count"
)
.
Default
(
0
)
.
Comment
(
"已使用次数"
),
field
.
String
(
"status"
)
.
MaxLen
(
20
)
.
Default
(
service
.
PromoCodeStatusActive
)
.
Comment
(
"状态: active, disabled"
),
field
.
Time
(
"expires_at"
)
.
Optional
()
.
Nillable
()
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"timestamptz"
})
.
Comment
(
"过期时间,null表示永不过期"
),
field
.
String
(
"notes"
)
.
Optional
()
.
Nillable
()
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"text"
})
.
Comment
(
"备注"
),
field
.
Time
(
"created_at"
)
.
Immutable
()
.
Default
(
time
.
Now
)
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"timestamptz"
}),
field
.
Time
(
"updated_at"
)
.
Default
(
time
.
Now
)
.
UpdateDefault
(
time
.
Now
)
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"timestamptz"
}),
}
}
func
(
PromoCode
)
Edges
()
[]
ent
.
Edge
{
return
[]
ent
.
Edge
{
edge
.
To
(
"usage_records"
,
PromoCodeUsage
.
Type
),
}
}
func
(
PromoCode
)
Indexes
()
[]
ent
.
Index
{
return
[]
ent
.
Index
{
// code 字段已在 Fields() 中声明 Unique(),无需重复索引
index
.
Fields
(
"status"
),
index
.
Fields
(
"expires_at"
),
}
}
backend/ent/schema/promo_code_usage.go
0 → 100644
View file @
e79dbad6
package
schema
import
(
"time"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/entsql"
"entgo.io/ent/schema"
"entgo.io/ent/schema/edge"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/index"
)
// PromoCodeUsage holds the schema definition for the PromoCodeUsage entity.
//
// 优惠码使用记录:记录每个用户使用优惠码的情况
type
PromoCodeUsage
struct
{
ent
.
Schema
}
func
(
PromoCodeUsage
)
Annotations
()
[]
schema
.
Annotation
{
return
[]
schema
.
Annotation
{
entsql
.
Annotation
{
Table
:
"promo_code_usages"
},
}
}
func
(
PromoCodeUsage
)
Fields
()
[]
ent
.
Field
{
return
[]
ent
.
Field
{
field
.
Int64
(
"promo_code_id"
)
.
Comment
(
"优惠码ID"
),
field
.
Int64
(
"user_id"
)
.
Comment
(
"使用用户ID"
),
field
.
Float
(
"bonus_amount"
)
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"decimal(20,8)"
})
.
Comment
(
"实际赠送金额"
),
field
.
Time
(
"used_at"
)
.
Default
(
time
.
Now
)
.
SchemaType
(
map
[
string
]
string
{
dialect
.
Postgres
:
"timestamptz"
})
.
Comment
(
"使用时间"
),
}
}
func
(
PromoCodeUsage
)
Edges
()
[]
ent
.
Edge
{
return
[]
ent
.
Edge
{
edge
.
From
(
"promo_code"
,
PromoCode
.
Type
)
.
Ref
(
"usage_records"
)
.
Field
(
"promo_code_id"
)
.
Required
()
.
Unique
(),
edge
.
From
(
"user"
,
User
.
Type
)
.
Ref
(
"promo_code_usages"
)
.
Field
(
"user_id"
)
.
Required
()
.
Unique
(),
}
}
func
(
PromoCodeUsage
)
Indexes
()
[]
ent
.
Index
{
return
[]
ent
.
Index
{
index
.
Fields
(
"promo_code_id"
),
index
.
Fields
(
"user_id"
),
// 每个用户每个优惠码只能使用一次
index
.
Fields
(
"promo_code_id"
,
"user_id"
)
.
Unique
(),
}
}
backend/ent/schema/user.go
View file @
e79dbad6
...
...
@@ -74,6 +74,7 @@ func (User) Edges() []ent.Edge {
Through
(
"user_allowed_groups"
,
UserAllowedGroup
.
Type
),
edge
.
To
(
"usage_logs"
,
UsageLog
.
Type
),
edge
.
To
(
"attribute_values"
,
UserAttributeValue
.
Type
),
edge
.
To
(
"promo_code_usages"
,
PromoCodeUsage
.
Type
),
}
}
...
...
backend/ent/setting_query.go
View file @
e79dbad6
...
...
@@ -8,6 +8,7 @@ import (
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
...
...
@@ -22,6 +23,7 @@ type SettingQuery struct {
order
[]
setting
.
OrderOption
inters
[]
Interceptor
predicates
[]
predicate
.
Setting
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
...
...
@@ -343,6 +345,9 @@ func (_q *SettingQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Sett
nodes
=
append
(
nodes
,
node
)
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
...
...
@@ -357,6 +362,9 @@ func (_q *SettingQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Sett
func
(
_q
*
SettingQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
...
...
@@ -419,6 +427,9 @@ func (_q *SettingQuery) sqlQuery(ctx context.Context) *sql.Selector {
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
...
...
@@ -436,6 +447,32 @@ func (_q *SettingQuery) sqlQuery(ctx context.Context) *sql.Selector {
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
SettingQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
SettingQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
SettingQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
SettingQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// SettingGroupBy is the group-by builder for Setting entities.
type
SettingGroupBy
struct
{
selector
...
...
backend/ent/tx.go
View file @
e79dbad6
...
...
@@ -22,6 +22,10 @@ type Tx struct {
AccountGroup
*
AccountGroupClient
// Group is the client for interacting with the Group builders.
Group
*
GroupClient
// PromoCode is the client for interacting with the PromoCode builders.
PromoCode
*
PromoCodeClient
// PromoCodeUsage is the client for interacting with the PromoCodeUsage builders.
PromoCodeUsage
*
PromoCodeUsageClient
// Proxy is the client for interacting with the Proxy builders.
Proxy
*
ProxyClient
// RedeemCode is the client for interacting with the RedeemCode builders.
...
...
@@ -175,6 +179,8 @@ func (tx *Tx) init() {
tx
.
Account
=
NewAccountClient
(
tx
.
config
)
tx
.
AccountGroup
=
NewAccountGroupClient
(
tx
.
config
)
tx
.
Group
=
NewGroupClient
(
tx
.
config
)
tx
.
PromoCode
=
NewPromoCodeClient
(
tx
.
config
)
tx
.
PromoCodeUsage
=
NewPromoCodeUsageClient
(
tx
.
config
)
tx
.
Proxy
=
NewProxyClient
(
tx
.
config
)
tx
.
RedeemCode
=
NewRedeemCodeClient
(
tx
.
config
)
tx
.
Setting
=
NewSettingClient
(
tx
.
config
)
...
...
backend/ent/usagelog_query.go
View file @
e79dbad6
...
...
@@ -8,6 +8,7 @@ import (
"math"
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/schema/field"
...
...
@@ -32,6 +33,7 @@ type UsageLogQuery struct {
withAccount
*
AccountQuery
withGroup
*
GroupQuery
withSubscription
*
UserSubscriptionQuery
modifiers
[]
func
(
*
sql
.
Selector
)
// intermediate query (i.e. traversal path).
sql
*
sql
.
Selector
path
func
(
context
.
Context
)
(
*
sql
.
Selector
,
error
)
...
...
@@ -531,6 +533,9 @@ func (_q *UsageLogQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Usa
node
.
Edges
.
loadedTypes
=
loadedTypes
return
node
.
assignValues
(
columns
,
values
)
}
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
for
i
:=
range
hooks
{
hooks
[
i
](
ctx
,
_spec
)
}
...
...
@@ -727,6 +732,9 @@ func (_q *UsageLogQuery) loadSubscription(ctx context.Context, query *UserSubscr
func
(
_q
*
UsageLogQuery
)
sqlCount
(
ctx
context
.
Context
)
(
int
,
error
)
{
_spec
:=
_q
.
querySpec
()
if
len
(
_q
.
modifiers
)
>
0
{
_spec
.
Modifiers
=
_q
.
modifiers
}
_spec
.
Node
.
Columns
=
_q
.
ctx
.
Fields
if
len
(
_q
.
ctx
.
Fields
)
>
0
{
_spec
.
Unique
=
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
...
...
@@ -804,6 +812,9 @@ func (_q *UsageLogQuery) sqlQuery(ctx context.Context) *sql.Selector {
if
_q
.
ctx
.
Unique
!=
nil
&&
*
_q
.
ctx
.
Unique
{
selector
.
Distinct
()
}
for
_
,
m
:=
range
_q
.
modifiers
{
m
(
selector
)
}
for
_
,
p
:=
range
_q
.
predicates
{
p
(
selector
)
}
...
...
@@ -821,6 +832,32 @@ func (_q *UsageLogQuery) sqlQuery(ctx context.Context) *sql.Selector {
return
selector
}
// ForUpdate locks the selected rows against concurrent updates, and prevent them from being
// updated, deleted or "selected ... for update" by other sessions, until the transaction is
// either committed or rolled-back.
func
(
_q
*
UsageLogQuery
)
ForUpdate
(
opts
...
sql
.
LockOption
)
*
UsageLogQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForUpdate
(
opts
...
)
})
return
_q
}
// ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
// on any rows that are read. Other sessions can read the rows, but cannot modify them
// until your transaction commits.
func
(
_q
*
UsageLogQuery
)
ForShare
(
opts
...
sql
.
LockOption
)
*
UsageLogQuery
{
if
_q
.
driver
.
Dialect
()
==
dialect
.
Postgres
{
_q
.
Unique
(
false
)
}
_q
.
modifiers
=
append
(
_q
.
modifiers
,
func
(
s
*
sql
.
Selector
)
{
s
.
ForShare
(
opts
...
)
})
return
_q
}
// UsageLogGroupBy is the group-by builder for UsageLog entities.
type
UsageLogGroupBy
struct
{
selector
...
...
backend/ent/user.go
View file @
e79dbad6
...
...
@@ -61,11 +61,13 @@ type UserEdges struct {
UsageLogs
[]
*
UsageLog
`json:"usage_logs,omitempty"`
// AttributeValues holds the value of the attribute_values edge.
AttributeValues
[]
*
UserAttributeValue
`json:"attribute_values,omitempty"`
// PromoCodeUsages holds the value of the promo_code_usages edge.
PromoCodeUsages
[]
*
PromoCodeUsage
`json:"promo_code_usages,omitempty"`
// UserAllowedGroups holds the value of the user_allowed_groups edge.
UserAllowedGroups
[]
*
UserAllowedGroup
`json:"user_allowed_groups,omitempty"`
// loadedTypes holds the information for reporting if a
// type was loaded (or requested) in eager-loading or not.
loadedTypes
[
8
]
bool
loadedTypes
[
9
]
bool
}
// APIKeysOrErr returns the APIKeys value or an error if the edge
...
...
@@ -131,10 +133,19 @@ func (e UserEdges) AttributeValuesOrErr() ([]*UserAttributeValue, error) {
return
nil
,
&
NotLoadedError
{
edge
:
"attribute_values"
}
}
// PromoCodeUsagesOrErr returns the PromoCodeUsages value or an error if the edge
// was not loaded in eager-loading.
func
(
e
UserEdges
)
PromoCodeUsagesOrErr
()
([]
*
PromoCodeUsage
,
error
)
{
if
e
.
loadedTypes
[
7
]
{
return
e
.
PromoCodeUsages
,
nil
}
return
nil
,
&
NotLoadedError
{
edge
:
"promo_code_usages"
}
}
// UserAllowedGroupsOrErr returns the UserAllowedGroups value or an error if the edge
// was not loaded in eager-loading.
func
(
e
UserEdges
)
UserAllowedGroupsOrErr
()
([]
*
UserAllowedGroup
,
error
)
{
if
e
.
loadedTypes
[
7
]
{
if
e
.
loadedTypes
[
8
]
{
return
e
.
UserAllowedGroups
,
nil
}
return
nil
,
&
NotLoadedError
{
edge
:
"user_allowed_groups"
}
...
...
@@ -289,6 +300,11 @@ func (_m *User) QueryAttributeValues() *UserAttributeValueQuery {
return
NewUserClient
(
_m
.
config
)
.
QueryAttributeValues
(
_m
)
}
// QueryPromoCodeUsages queries the "promo_code_usages" edge of the User entity.
func
(
_m
*
User
)
QueryPromoCodeUsages
()
*
PromoCodeUsageQuery
{
return
NewUserClient
(
_m
.
config
)
.
QueryPromoCodeUsages
(
_m
)
}
// QueryUserAllowedGroups queries the "user_allowed_groups" edge of the User entity.
func
(
_m
*
User
)
QueryUserAllowedGroups
()
*
UserAllowedGroupQuery
{
return
NewUserClient
(
_m
.
config
)
.
QueryUserAllowedGroups
(
_m
)
...
...
backend/ent/user/user.go
View file @
e79dbad6
...
...
@@ -51,6 +51,8 @@ const (
EdgeUsageLogs
=
"usage_logs"
// EdgeAttributeValues holds the string denoting the attribute_values edge name in mutations.
EdgeAttributeValues
=
"attribute_values"
// EdgePromoCodeUsages holds the string denoting the promo_code_usages edge name in mutations.
EdgePromoCodeUsages
=
"promo_code_usages"
// EdgeUserAllowedGroups holds the string denoting the user_allowed_groups edge name in mutations.
EdgeUserAllowedGroups
=
"user_allowed_groups"
// Table holds the table name of the user in the database.
...
...
@@ -102,6 +104,13 @@ const (
AttributeValuesInverseTable
=
"user_attribute_values"
// AttributeValuesColumn is the table column denoting the attribute_values relation/edge.
AttributeValuesColumn
=
"user_id"
// PromoCodeUsagesTable is the table that holds the promo_code_usages relation/edge.
PromoCodeUsagesTable
=
"promo_code_usages"
// PromoCodeUsagesInverseTable is the table name for the PromoCodeUsage entity.
// It exists in this package in order to avoid circular dependency with the "promocodeusage" package.
PromoCodeUsagesInverseTable
=
"promo_code_usages"
// PromoCodeUsagesColumn is the table column denoting the promo_code_usages relation/edge.
PromoCodeUsagesColumn
=
"user_id"
// UserAllowedGroupsTable is the table that holds the user_allowed_groups relation/edge.
UserAllowedGroupsTable
=
"user_allowed_groups"
// UserAllowedGroupsInverseTable is the table name for the UserAllowedGroup entity.
...
...
@@ -342,6 +351,20 @@ func ByAttributeValues(term sql.OrderTerm, terms ...sql.OrderTerm) OrderOption {
}
}
// ByPromoCodeUsagesCount orders the results by promo_code_usages count.
func
ByPromoCodeUsagesCount
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
func
(
s
*
sql
.
Selector
)
{
sqlgraph
.
OrderByNeighborsCount
(
s
,
newPromoCodeUsagesStep
(),
opts
...
)
}
}
// ByPromoCodeUsages orders the results by promo_code_usages terms.
func
ByPromoCodeUsages
(
term
sql
.
OrderTerm
,
terms
...
sql
.
OrderTerm
)
OrderOption
{
return
func
(
s
*
sql
.
Selector
)
{
sqlgraph
.
OrderByNeighborTerms
(
s
,
newPromoCodeUsagesStep
(),
append
([]
sql
.
OrderTerm
{
term
},
terms
...
)
...
)
}
}
// ByUserAllowedGroupsCount orders the results by user_allowed_groups count.
func
ByUserAllowedGroupsCount
(
opts
...
sql
.
OrderTermOption
)
OrderOption
{
return
func
(
s
*
sql
.
Selector
)
{
...
...
@@ -404,6 +427,13 @@ func newAttributeValuesStep() *sqlgraph.Step {
sqlgraph
.
Edge
(
sqlgraph
.
O2M
,
false
,
AttributeValuesTable
,
AttributeValuesColumn
),
)
}
func
newPromoCodeUsagesStep
()
*
sqlgraph
.
Step
{
return
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
sqlgraph
.
To
(
PromoCodeUsagesInverseTable
,
FieldID
),
sqlgraph
.
Edge
(
sqlgraph
.
O2M
,
false
,
PromoCodeUsagesTable
,
PromoCodeUsagesColumn
),
)
}
func
newUserAllowedGroupsStep
()
*
sqlgraph
.
Step
{
return
sqlgraph
.
NewStep
(
sqlgraph
.
From
(
Table
,
FieldID
),
...
...
Prev
1
2
3
4
5
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment