###
Bongo.js
Unfancy models for MongoDB

@description: Error types
@author: Christopher Thorn
###
class @BongoError extends Error
  constructor:(@message)->
    {constructor} = @
    {@name} = constructor
    Error.call @
    Error.captureStackTrace @, constructor

class @ValidationError extends @BongoError
  constructor:(message, modelConstructor, options)->
    {@path, @value, @option, @errorCode} = options
    @modelConstructor = modelConstructor
    option = if @option then " !~ #{@option}" else ''
    super """
      #{message}:
      #{@modelConstructor?.name or 'model'}({ \"#{@path.join '.'}\": #{@value} })#{option}.
      """

class @ValidationErrors extends @BongoError
  constructor:(@errors, message='Errors were encountered during validation.')->
    super message

class @SchemaError extends @BongoError

class @IndexError extends @BongoError