83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
// Copyright (c) 2018, 2024, Oracle and/or its affiliates.
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// This software is dual-licensed to you under the Universal Permissive License
|
|
// (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
|
|
// 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
|
|
// either license.
|
|
//
|
|
// If you elect to accept the software under the Apache License, Version 2.0,
|
|
// the following applies:
|
|
//
|
|
// 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
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
'use strict';
|
|
|
|
const errors = require('./errors.js');
|
|
const nodbUtil = require('./util.js');
|
|
const SodaDocument = require('./sodaDocument.js');
|
|
|
|
class SodaDocCursor {
|
|
|
|
//---------------------------------------------------------------------------
|
|
// close()
|
|
//
|
|
// Close the cursor and make it unusable for further operations.
|
|
//--------------------------------------------------------------------------
|
|
async close() {
|
|
errors.assertArgCount(arguments, 0, 0);
|
|
errors.assert(this._impl, errors.ERR_INVALID_SODA_DOC_CURSOR);
|
|
await this._impl.close();
|
|
delete this._impl;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
// getNext()
|
|
//
|
|
// Return the next document available from the cursor.
|
|
//---------------------------------------------------------------------------
|
|
async getNext() {
|
|
errors.assertArgCount(arguments, 0, 0);
|
|
errors.assert(this._impl, errors.ERR_INVALID_SODA_DOC_CURSOR);
|
|
const docImpl = await this._impl.getNext();
|
|
if (docImpl) {
|
|
const doc = new SodaDocument();
|
|
doc._impl = docImpl;
|
|
return doc;
|
|
}
|
|
}
|
|
|
|
[Symbol.asyncIterator]() {
|
|
const cursor = this;
|
|
return {
|
|
async next() {
|
|
const doc = await cursor.getNext();
|
|
return {value: doc, done: doc === undefined};
|
|
},
|
|
return() {
|
|
return {done: true};
|
|
}
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
nodbUtil.wrapFns(SodaDocCursor.prototype,
|
|
"close",
|
|
"getNext");
|
|
|
|
module.exports = SodaDocCursor;
|