entc/integration: add example for composite unique index (#3302)

This commit is contained in:
Ariel Mashraki
2023-02-06 11:17:33 +02:00
committed by GitHub
parent 9881f575ce
commit 8022271f12
18 changed files with 1167 additions and 9 deletions

View File

@@ -949,6 +949,13 @@ func (u *UpdateSet) SetExcluded(name string) *UpdateSet {
// Query returns query representation of an `INSERT INTO` statement.
func (i *InsertBuilder) Query() (string, []any) {
query, args, _ := i.QueryErr()
return query, args
}
// QueryErr returns query representation of an `INSERT INTO`
// statement and any error occurred in building the statement.
func (i *InsertBuilder) QueryErr() (string, []any, error) {
b := i.Builder.clone()
b.WriteString("INSERT INTO ")
b.writeSchema(i.schema)
@@ -969,7 +976,7 @@ func (i *InsertBuilder) Query() (string, []any) {
i.writeConflict(&b)
}
joinReturning(i.returning, &b)
return b.String(), b.args
return b.String(), b.args, b.Err()
}
func (i *InsertBuilder) writeDefault(b *Builder) {

View File

@@ -1050,7 +1050,10 @@ func (c *creator) node(ctx context.Context, drv dialect.Driver) error {
// we interact with an edge-schema with composite primary key.
if c.ID == nil {
c.ensureConflict(insert)
query, args := insert.Query()
query, args, err := insert.QueryErr()
if err != nil {
return err
}
return c.tx.Exec(ctx, query, args, nil)
}
if err := c.insert(ctx, insert); err != nil {
@@ -1096,7 +1099,10 @@ func (c *creator) insert(ctx context.Context, insert *sql.InsertBuilder) error {
// In case of "ON CONFLICT", the record may exist in the
// database, and we need to get back the database id field.
if len(c.CreateSpec.OnConflict) == 0 {
query, args := insert.Query()
query, args, err := insert.QueryErr()
if err != nil {
return err
}
return c.tx.Exec(ctx, query, args, nil)
}
}
@@ -1529,8 +1535,8 @@ func setTableColumns(fields []*FieldSpec, edges map[Rel][]*EdgeSpec, set func(st
// insertLastID invokes the insert query on the transaction and returns the LastInsertID.
func (c *creator) insertLastID(ctx context.Context, insert *sql.InsertBuilder) error {
query, args := insert.Query()
if err := insert.Err(); err != nil {
query, args, err := insert.QueryErr()
if err != nil {
return err
}
// MySQL does not support the "RETURNING" clause.
@@ -1577,8 +1583,8 @@ func (c *creator) insertLastID(ctx context.Context, insert *sql.InsertBuilder) e
// insertLastIDs invokes the batch insert query on the transaction and returns the LastInsertID of all entities.
func (c *batchCreator) insertLastIDs(ctx context.Context, tx dialect.ExecQuerier, insert *sql.InsertBuilder) error {
query, args := insert.Query()
if err := insert.Err(); err != nil {
query, args, err := insert.QueryErr()
if err != nil {
return err
}
// MySQL does not support the "RETURNING" clause.