mirror of
https://github.com/syumai/workers.git
synced 2025-03-11 09:49:12 +00:00
38 lines
878 B
Go
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{}
|
|
}
|