good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • a633a10fb558ad5b93247ca57f45480f643f7ce6
  • master default protected
  • fix-license-1
  • mafredri/build-add-makefile
  • mafredri/build-update-to-go1.22
  • mafredri/fix-ci-script-tool-version
  • dependabot/go_modules/internal/examples/internal-deps-4cadc2be3d
  • dependabot/go_modules/internal/examples/internal-deps-46eeb9c117
  • dependabot/go_modules/internal/examples/internal-deps-022ca1aea3
  • mafredri/chore-update-dependabot
  • dependabot/go_modules/internal/thirdparty/github.com/lesismal/nbio-1.5.12
  • dependabot/go_modules/internal/examples/golang.org/x/time-0.7.0
  • dependabot/go_modules/internal/thirdparty/github.com/lesismal/nbio-1.5.11
  • ethan/close-order
  • mafredri/chore-remove-funding
  • mafredri/fix-ci
  • dependabot/go_modules/internal/thirdparty/github.com/gobwas/ws-1.4.0
  • dependabot/go_modules/internal/thirdparty/github.com/gorilla/websocket-1.5.3
  • dependabot/go_modules/internal/thirdparty/github.com/lesismal/nbio-1.5.10
  • dependabot/go_modules/internal/thirdparty/github.com/gin-gonic/gin-1.10.0
  • dependabot/go_modules/internal/examples/golang.org/x/time-0.6.0
  • v1.8.13
  • v1.8.12
  • v1.8.11
  • v1.8.10
  • v1.8.9
  • v1.8.8
  • v1.8.7
  • v1.8.6
  • v1.8.5
  • v1.8.4
  • v1.8.3
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • v1.7.4
  • v1.7.3
  • v1.7.2
  • v1.7.1
  • v1.7.0
  • v1.6.5
41 results

ws_js.go

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    wrapper.go 2.35 KiB
    // Copyright (c) 2012-2014 The upper.io/db authors. All rights reserved.
    //
    // Permission is hereby granted, free of charge, to any person obtaining
    // a copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, sublicense, and/or sell copies of the Software, and to
    // permit persons to whom the Software is furnished to do so, subject to
    // the following conditions:
    //
    // The above copyright notice and this permission notice shall be
    // included in all copies or substantial portions of the Software.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    
    package db
    
    import (
    	"fmt"
    	"reflect"
    )
    
    // This map holds a copy of all registered adapters.
    var wrappers = make(map[string]Database)
    
    // Register associates an adapter's name with a type. Panics if the adapter
    // name is empty or the adapter is nil.
    func Register(name string, adapter Database) {
    
    	if name == `` {
    		panic(`Missing adapter name.`)
    	}
    
    	if _, ok := wrappers[name]; ok != false {
    		panic(`db.Register() called twice for adapter: ` + name)
    	}
    
    	wrappers[name] = adapter
    }
    
    // Open configures a database session using the given adapter's name and the
    // provided settings.
    func Open(adapter string, conn ConnectionURL) (Database, error) {
    
    	driver, ok := wrappers[adapter]
    
    	if ok == false {
    		// Using panic instead of returning error because attemping to use an
    		// adapter that does not exists will never result in success.
    		panic(fmt.Sprintf(`Open: Unknown adapter %s. (see: https://upper.io/db#database-adapters)`, adapter))
    	}
    
    	// Creating a new connection everytime Open() is called.
    	driverType := reflect.ValueOf(driver).Elem().Type()
    	newAdapter := reflect.New(driverType).Interface().(Database)
    
    	// Setting up the connection.
    	if err := newAdapter.Setup(conn); err != nil {
    		return nil, err
    	}
    
    	return newAdapter, nil
    }