| Line 37: |
Line 37: |
| | | | |
| | this.EnqueuePDIO = function( sw, c1, c2, c3 ) { | | this.EnqueuePDIO = function( sw, c1, c2, c3 ) { |
| − | var k = Enquire( PersonalDataDataBaseName, CurrentPerson, sw, c1, c2, c3 ); | + | return Enquire( PersonalDataDataBaseName, CurrentPerson, sw, c1, c2, c3 ); |
| − | k.onsuccess = function () {
| |
| − | console.log("xturn 5")
| |
| − | return k;
| |
| − | }
| |
| − | console.log("xturn 4")
| |
| − | return k;
| |
| | } | | } |
| | | | |
| Line 63: |
Line 57: |
| | // retrieve record, make record.field1 = field2, push back | | // retrieve record, make record.field1 = field2, push back |
| | | | |
| − | async function Enquire( pddbname, record, sqitch, control_1, control_2, control_3 ) { | + | function Enquire( pddbname, record, sqitch, control_1, control_2, control_3 ) { |
| − | var pddb = window.indexedDB.open(pddbname, 3); | + | return new Promise( |
| − | var inp_obj;
| + | function(resolve, reject) { |
| − | pddb.onupgradeneeded = function() {
| |
| − | var db = pddb.result;
| |
| − | var store = db.createObjectStore(pddbname, {keyPath: "id"});
| |
| | | | |
| − | // shouldn't the index be the wiki.personaldata.io username? | + | var pddb = await window.indexedDB.open(pddbname, 3); |
| | + | var inp_obj; |
| | + | pddb.onupgradeneeded = function() { |
| | + | var db = pddb.result; |
| | + | var store = db.createObjectStore(pddbname, {keyPath: "id"}); |
| | | | |
| − | var index = store.createIndex("NameIndex", ["id"]);
| + | // shouldn't the index be the wiki.personaldata.io username? |
| − | };
| |
| − | pddb.onsuccess = function() {
| |
| − | var db = pddb.result;
| |
| − | var tx = db.transaction(pddbname, "readwrite");
| |
| − | var store = tx.objectStore(pddbname);
| |
| − | var index = store.index("NameIndex");
| |
| | | | |
| − | // Get the original record from the db...
| + | var index = store.createIndex("NameIndex", ["id"]); |
| − | var getRecord = index.get([record.id]);
| + | }; |
| | + | pddb.onsuccess = function() { |
| | + | var db = pddb.result; |
| | + | var tx = db.transaction(pddbname, "readwrite"); |
| | + | var store = tx.objectStore(pddbname); |
| | + | var index = store.index("NameIndex"); |
| | | | |
| − | getRecord.onsuccess = function() {
| + | // Get the original record from the db... |
| − | console.log( "Record found in database: \n <<");
| + | var getRecord = index.get([record.id]); |
| − | console.log( getRecord.result );
| |
| − | console.log( ">>");
| |
| | | | |
| − | // Essential recordAdd
| + | getRecord.onsuccess = function() { |
| − | if ( sqitch === "aggressive push" ) {
| + | console.log( "Record found in database: \n <<"); |
| − | inp_obj = record; | + | console.log( getRecord.result ); |
| − | store.put( inp_obj );
| + | console.log( ">>"); |
| − | return inp_obj;
| |
| − | } else if ( sqitch === "checkin" ) {
| |
| − |
| |
| − | if ( getRecord.result != undefined ) {
| |
| − | console.log("getting from store"); | |
| − | inp_obj = getRecord.result; | |
| − | } else {
| |
| − | console.log("overriding whatever in there"); | |
| − | inp_obj = record;
| |
| − | store.put(inp_obj);
| |
| − | }
| |
| | | | |
| − | } else {
| + | // Essential recordAdd |
| − | if ( getRecord.result != undefined ) {
| + | if ( sqitch === "aggressive push" ) { |
| − | inp_obj = getRecord.result; | + | inp_obj = record; |
| − | if ( sqitch === "get record" ) { | + | await store.put( inp_obj ); |
| − | // if found, let's use that from now on | |
| − | console.log("Getting record"); | |
| − | // let's return it so that our addrecord can be used as a getter as well
| |
| | return inp_obj; | | return inp_obj; |
| − | } | + | } else if ( sqitch === "checkin" ) { |
| − | // | + | |
| − | // endof onsuccess
| + | if ( getRecord.result != undefined ) { |
| − | } else {
| + | console.log("getting from store"); |
| − | console.log("record not found");
| + | inp_obj = getRecord.result; |
| − | if ( sqitch === "update record" ) {
| + | } else { |
| − | inp_obj = record;
| + | console.log("overriding whatever in there"); |
| | + | inp_obj = record; |
| | + | await store.put(inp_obj); |
| | + | } |
| | + | |
| | } else { | | } else { |
| − | return undefined; | + | if ( getRecord.result != undefined ) { |
| − | }
| + | inp_obj = getRecord.result; |
| − | }
| + | if ( sqitch === "get record" ) { |
| − | // endof resultdefined
| + | // if found, let's use that from now on |
| − | }
| + | console.log("Getting record"); |
| − | // endofELSE
| + | // let's return it so that our addrecord can be used as a getter as well |
| − | if ( sqitch === "update record" ) { // Record Update
| + | return inp_obj; |
| − | if ( control_1 != undefined ) {
| + | } |
| − | if ( control_2 != undefined ) {
| + | // |
| − | if ( control_3 != undefined ) { | + | // endof onsuccess |
| − | | + | } else { |
| − | if ( Array.isArray( inp_obj[ control_1 ][ control_2 ] ) ) { | + | console.log("record not found"); |
| − | inp_obj[ control_1 ][ control_2 ].push( control_3 ); | + | if ( sqitch === "update record" ) { |
| | + | inp_obj = record; |
| | } else { | | } else { |
| − | inp_obj[ control_1 ][ control_2 ] = control_3; // => "Bob" | + | return undefined; |
| | } | | } |
| − | store.put(inp_obj); | + | } |
| − | } else {
| + | // endof resultdefined |
| − |
| + | } |
| − | if ( Array.isArray( inp_obj[ control_1 ] ) ) {
| + | // endofELSE |
| − | inp_obj[ control_1 ].push( control_2 );
| + | if ( sqitch === "update record" ) { // Record Update |
| | + | if ( control_1 != undefined ) { |
| | + | if ( control_2 != undefined ) { |
| | + | if ( control_3 != undefined ) { |
| | + | |
| | + | if ( Array.isArray( inp_obj[ control_1 ][ control_2 ] ) ) { |
| | + | inp_obj[ control_1 ][ control_2 ].push( control_3 ); |
| | + | } else { |
| | + | inp_obj[ control_1 ][ control_2 ] = control_3; // => "Bob" |
| | + | } |
| | + | store.put(inp_obj); |
| | + | } else { |
| | + | |
| | + | if ( Array.isArray( inp_obj[ control_1 ] ) ) { |
| | + | inp_obj[ control_1 ].push( control_2 ); |
| | + | } else { |
| | + | inp_obj[ control_1 ] = control_2; |
| | + | } |
| | + | store.put(inp_obj); |
| | + | |
| | + | } |
| | + | // +3 |
| | } else { | | } else { |
| − | inp_obj[ control_1 ] = control_2; | + | store.put(inp_obj); |
| | + | console.log("mark N"); |
| | + | console.log(inp_obj); |
| | + | console.log(inp_obj[ control_1 ]); |
| | + | console.log("mark NN") |
| | + | inp_obj = inp_obj[ control_1 ]; |
| | } | | } |
| − | store.put(inp_obj); | + | // +2 |
| | + | } else { |
| | + | |
| | + | //return inp_obj; |
| | | | |
| | } | | } |
| − | // +3
| + | console.log("return 3") |
| − | } else {
| + | // return inp_obj; |
| − | store.put(inp_obj);
| |
| − | console.log("mark N"); | |
| − | console.log(inp_obj); | |
| − | console.log(inp_obj[ control_1 ]);
| |
| − | console.log("mark NN")
| |
| − | inp_obj = inp_obj[ control_1 ];
| |
| − | }
| |
| − | // +2
| |
| − | } else {
| |
| | | | |
| − | //return inp_obj; | + | }; |
| | + | console.log("return 2") |
| | + | resolve( inp_obj ); |
| | | | |
| − | } | + | }; |
| − | console.log("return 3")
| |
| − | return inp_obj;
| |
| | | | |
| | + | await tx.oncomplete = function() { |
| | + | console.log("return 1") |
| | + | db.close(); |
| | + | }; |
| | }; | | }; |
| − | console.log("return 2") | + | console.log("return 0") |
| − | return inp_obj;
| + | }); |
| − | | + | } |
| − | }; | |
| − | | |
| − | tx.oncomplete = function() {
| |
| − | console.log("return 1")
| |
| − | db.close();
| |
| − | return inp_obj;
| |
| − | };
| |
| − | };
| |
| − | console.log("return 0")
| |
| − | return inp_obj;
| |
| − | }; | |
| | }; | | }; |