0% found this document useful (0 votes)
32 views

Namespace Go

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views

Namespace Go

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

// Copyright (C) MongoDB, Inc. 2017-present.

//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

package command

import (
"errors"
"strings"
)

// Namespace encapsulates a database and collection name, which together


// uniquely identifies a collection within a MongoDB cluster.
type Namespace struct {
DB string
Collection string
}

// NewNamespace returns a new Namespace for the


// given database and collection.
func NewNamespace(db, collection string) Namespace { return Namespace{DB: db,
Collection: collection} }

// ParseNamespace parses a namespace string into a Namespace.


//
// The namespace string must contain at least one ".", the first of which is the
separator
// between the database and collection names. If not, the default (invalid)
Namespace is returned.
func ParseNamespace(name string) Namespace {
index := strings.Index(name, ".")
if index == -1 {
return Namespace{}
}

return Namespace{
DB: name[:index],
Collection: name[index+1:],
}
}

// FullName returns the full namespace string, which is the result of joining the
database
// name and the collection name with a "." character.
func (ns *Namespace) FullName() string {
return strings.Join([]string{ns.DB, ns.Collection}, ".")
}

// Validate validates the namespace.


func (ns *Namespace) Validate() error {
if err := ns.validateDB(); err != nil {
return err
}

return ns.validateCollection()
}
// validateDB ensures the database name is not an empty string, contain a ".",
// or contain a " ".
func (ns *Namespace) validateDB() error {
if ns.DB == "" {
return errors.New("database name cannot be empty")
}
if strings.Contains(ns.DB, " ") {
return errors.New("database name cannot contain ' '")
}
if strings.Contains(ns.DB, ".") {
return errors.New("database name cannot contain '.'")
}

return nil
}

// validateCollection ensures the collection name is not an empty string.


func (ns *Namespace) validateCollection() error {
if ns.Collection == "" {
return errors.New("collection name cannot be empty")
}

return nil
}

You might also like