Files
motr/middleware/database/bindings.go

67 lines
1.2 KiB
Go

//go:build js && wasm
// +build js,wasm
package database
import (
"database/sql"
"github.com/sonr-io/motr/internal/db/activity"
"github.com/sonr-io/motr/internal/db/network"
"github.com/sonr-io/motr/internal/db/users"
_ "github.com/syumai/workers/cloudflare/d1"
)
var (
activityDB activity.Querier
networkDB network.Querier
userDB users.Querier
)
const (
kActivityBinding = "ACTIVITY_DB"
kNetworkBinding = "NETWORK_DB"
kUsersBinding = "USERS_DB"
)
func IsReady() bool {
return activityDB != nil && networkDB != nil && userDB != nil
}
func (c *connection) initialize() {
c.activity = activity.New(openD1(kActivityBinding))
c.network = network.New(openD1(kNetworkBinding))
c.users = users.New(openD1(kUsersBinding))
c.ready = true
}
func openD1(name string) *sql.DB {
db, err := sql.Open("d1", name)
if err != nil {
panic(err)
}
return db
}
func Activity() activity.Querier {
if activityDB == nil {
panic("activityDB is not initialized")
}
return activityDB
}
func Network() network.Querier {
if networkDB == nil {
panic("networkDB is not initialized")
}
return networkDB
}
func Users() users.Querier {
if userDB == nil {
panic("userDB is not initialized")
}
return userDB
}