 # Copyright (c) 2015 Riceball LEE, MIT License
 #xtend                 = require("xtend")
 #util                  = require("abstract-object/lib/util")
-minimatch             = require('minimatch')
 ltgt                  = require('ltgt')
 Errors                = require("abstract-object/Error")
+try EncodingNoSQL     = require("nosql-encoding")
+#AbstractNoSQL         = EncodingNoSQL.super_
 AbstractNoSQL         = require("abstract-nosql")
-try EncodingNoSQL     = require("nosql-encoding")
-SecondaryCache        = require("secondary-cache")
+SubkeyIterator        = require("./subkey-iterator")
+SubkeyCache           = require("./subkey-cache")
 Codec                 = require("buffer-codec")
-try
-  EncodingIterator    = require("encoding-iterator")
-  AbstractIterator    = EncodingIterator.super_
-unless AbstractIterator then try
-  AbstractIterator    = require("abstract-iterator")
 inherits              = require("abstract-object/lib/util/inherits")
 isInheritedFrom       = require("abstract-object/lib/util/isInheritedFrom")
 isFunction            = require("abstract-object/lib/util/isFunction")


  constructor: (aClass)->
    if (this not instanceof SubkeyNoSQL)
      vParentClass = isInheritedFrom aClass, EncodingNoSQL if EncodingNoSQL
      vParentClass = isInheritedFrom aClass, AbstractNoSQL unless vParentClass
      if vParentClass
        inheritsDirectly vParentClass, SubkeyNoSQL if vParentClass isnt SubkeyNoSQL
        return aClass
      else
        throw new InvalidArgumentError("class should be inherited from EncodingNoSQL or AbstractNoSQL")

resolvePathArray      = path.resolveArray
toLtgt                = ltgt.toLtgt


module.exports = class SubkeyNoSQL
  inherits SubkeyNoSQL, EncodingNoSQL

  # Data Operation Type:
  @GET_OP   = GET_OP  = consts.GET_OP
