UNPKG

nosqldb-oraclejs

Version:

Oracle NoSQL Database JS Driver

147 lines (131 loc) 4.97 kB
/*- * * This file is part of Oracle NoSQL Database * Copyright (C) 2014, 2018 Oracle and/or its affiliates. All rights reserved. * * If you have received this file as part of Oracle NoSQL Database the * following applies to the work as a whole: * * Oracle NoSQL Database server software is free software: you can * redistribute it and/or modify it under the terms of the GNU Affero * General Public License as published by the Free Software Foundation, * version 3. * * Oracle NoSQL Database is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Affero General Public License for more details. * * If you have received this file as part of Oracle NoSQL Database Client or * distributed separately the following applies: * * Oracle NoSQL Database client software is free software: you can * redistribute it and/or modify it under the terms of the Apache License * as published by the Apache Software Foundation, version 2.0. * * You should have received a copy of the GNU Affero General Public License * and/or the Apache License in the LICENSE file along with Oracle NoSQL * Database client or server distribution. If not, see * <http://www.gnu.org/licenses/> * or * <http://www.apache.org/licenses/LICENSE-2.0>. * * An active Oracle commercial licensing agreement for this product supersedes * these licenses and in such case the license notices, but not the copyright * notice, may be removed by you in connection with your distribution that is * in accordance with the commercial licensing terms. * * For more information please contact: * * berkeleydb-info_us@oracle.com * */ 'use strict'; /** * This example demonstrates usage of Time-to-Live (TTL) feature of the * Oracle NoSQL Database JS API. * * The example: * - Creates a table. * - Puts a row in the table with a TTL value. * - Gets the row from the table and prints the row with its TTL value. */ // Include nosqldb-oraclejs module var nosqldb = require('nosqldb-oraclejs'); var Types = nosqldb.Types; // Create a configuration object var configuration = new nosqldb.Configuration(); configuration.proxy.startProxy = true; configuration.proxy.host = 'localhost:5010'; configuration.storeHelperHosts = ['localhost:5000']; configuration.storeName = 'kvstore'; // Set a writeOptions object: var writeOptions = new Types.WriteOptions( new Types.Durability( Types.SyncPolicy.NO_SYNC, Types.ReplicaAckPolicy.ALL, Types.SyncPolicy.NO_SYNC), 1000); // Set a readOptions object: var readOptions = new Types.ReadOptions( Types.SimpleConsistency.NONE_REQUIRED, 1000); // Create a store with the specified configuration var store = nosqldb.createStore(configuration); var TABLE_NAME = 'ttl_table'; store.open(function (err) { if (err) throw err; console.log('Connected to the store: ' + configuration.storeName + ' at ' + configuration.storeHelperHosts); // Create a table store.execute(' CREATE TABLE IF NOT EXISTS ' + TABLE_NAME + ' ( id long, name string, PRIMARY KEY(id) ) ', function (err) { if (err) return; store.refreshTables(function (err) { if (err) return; console.log('Created table ' + TABLE_NAME); var row = {id: 1, name: 'John Doe'}; // set updateTTL on WriteOptions writeOptions.updateTTL = true; console.log('Inserting row with TTL: ' + util.inspect(row)); row.ttl = new Types.TimeToLive(42, Types.TimeUnit.HOURS); store.put(TABLE_NAME, row, writeOptions, function (err) { if (err) throw err; else { // This is the primary key var pKey = {id: 1}; store.get(TABLE_NAME, pKey, readOptions, function (error, result) { console.log('Read row: ' + util.inspect(result.currentRow)); console.log('Expiration (UTC) time: ' + result.expirationTime + ' (' + toTTL(result.expirationTime) + ' from now)'); // closing... store.close(function () { console.log('Store closed, shutting down KVProxy...'); store.shutdownProxy(function (err) { if (err) throw err; console.log('KVProxy off.') }); // Shutdown }); // Close }); //Get } }); // Put }); // RefreshTables }); // Execute }); function toTTL(utc) { var duration = (utc - new Date().getTime())/1000; var hours = ~~(duration/(60*60)); var days = ~~(hours/24); hours = hours%24; hours = hours + ' hour' + (hours > 1 ? 's' : ''); days = (days > 0 ? days + ' day' : '') + (days > 1 ? 's ' : ' '); return days + hours; }