2023-02-26 12:07:38 +09:00

38 lines
878 B
Go

package d1
import (
"context"
"database/sql/driver"
"syscall/js"
"github.com/syumai/workers/cloudflare/internal/cfruntimecontext"
)
type Connector struct {
dbObj js.Value
}
var (
_ driver.Connector = (*Connector)(nil)
)
// OpenConnector returns Connector of D1.
// This method checks DB existence. If DB was not found, this function returns error.
func OpenConnector(ctx context.Context, name string) (driver.Connector, error) {
v := cfruntimecontext.GetRuntimeContextEnv(ctx).Get(name)
if v.IsUndefined() {
return nil, ErrDatabaseNotFound
}
return &Connector{dbObj: v}, nil
}
// Connect returns Conn of D1.
// This method doesn't check DB existence, so this function never return errors.
func (c *Connector) Connect(context.Context) (driver.Conn, error) {
return &Conn{dbObj: c.dbObj}, nil
}
func (c *Connector) Driver() driver.Driver {
return &Driver{}
}