var defined = require('defined');

module.exports = function (opts, prefix) {
    if (!opts) opts = {};
    if (!prefix) prefix = {};
    var xopts = {};
    var gte = defined(prefix.gte, prefix.ge, prefix.start);
    var lte = defined(prefix.lte, prefix.le, prefix.end);
    var ogte = defined(opts.gte, opts.ge, opts.start);
    var olte = defined(opts.lte, opts.le, opts.end);
    
    if (prefix.gt) {
        if (ogte !== undefined) {
            xopts.gte = prefix.gt(ogte);
        }
        else xopts.gt = prefix.gt(opts.gt);
    }
    else if (gte) {
        if (ogte !== undefined) {
            xopts.gte = gte(ogte);
        }
        else xopts.gt = gte(opts.gt);
    }
    
    if (prefix.lt) {
        if (olte !== undefined) {
            xopts.lte = prefix.lt(olte);
        }
        else xopts.lt = prefix.lt(opts.lt);
    }
    else if (lte) {
        if (olte !== undefined) {
            xopts.lte = lte(olte);
        }
        else xopts.lt = lte(opts.lt);
    }
    
    if (prefix.limit !== undefined) {
        xopts.limit = prefix.limit(opts.limit);
    }
    else if (opts.limit !== undefined) {
        xopts.limit = opts.limit;
    }
    return xopts;
};
