mirror of
https://github.com/ent/ent.git
synced 2026-05-03 16:10:59 +03:00
Summary: Pull Request resolved: https://github.com/facebookincubator/ent/pull/101 Reviewed By: alexsn Differential Revision: D17977541 fbshipit-source-id: 118f935e11449661fd91f87b94dde2fb62c9b912
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
// Copyright 2019-present Facebook Inc. All rights reserved.
|
|
// This source code is licensed under the Apache 2.0 license found
|
|
// in the LICENSE file in the root directory of this source tree.
|
|
|
|
package schema
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"strings"
|
|
|
|
"github.com/facebookincubator/ent/dialect"
|
|
)
|
|
|
|
// WriteDriver is a driver that writes all driver exec operations to its writer.
|
|
type WriteDriver struct {
|
|
dialect.Driver // underlying driver.
|
|
io.Writer // target for exec statements.
|
|
}
|
|
|
|
// Exec writes its query and calls the underlying driver Exec method.
|
|
func (w *WriteDriver) Exec(_ context.Context, query string, _, _ interface{}) error {
|
|
if !strings.HasSuffix(query, ";") {
|
|
query += ";"
|
|
}
|
|
_, err := io.WriteString(w, query+"\n")
|
|
return err
|
|
}
|
|
|
|
// Tx writes the transaction start.
|
|
func (w *WriteDriver) Tx(context.Context) (dialect.Tx, error) {
|
|
if _, err := io.WriteString(w, "BEGIN;\n"); err != nil {
|
|
return nil, err
|
|
}
|
|
return w, nil
|
|
}
|
|
|
|
// Commit writes the transaction commit.
|
|
func (w *WriteDriver) Commit() error {
|
|
_, err := io.WriteString(w, "COMMIT;\n")
|
|
return err
|
|
}
|
|
|
|
// Rollback writes the transaction rollback.
|
|
func (w *WriteDriver) Rollback() error {
|
|
_, err := io.WriteString(w, "ROLLBACK;\n")
|
|
return err
|
|
}
|