redeem proffered tickets, db schema 1.1.0
[squeep-indie-auther] / src / db / abstract.js
index 2e9f46d0bb248dcad86b39cc5e681c046076c733..d5367df933c109f632140517b55790deb0251045 100644 (file)
@@ -47,7 +47,7 @@ class Database {
   /**
    * Query the current schema version.
    * This is a standalone query function, as it is called before statements are loaded.
-   * @returns {SchemaVersionObject}
+   * @returns {Promise<SchemaVersionObject>}
    */
   async _currentSchema() {
     this._notImplemented('_currentSchema', arguments);
@@ -251,6 +251,17 @@ class Database {
   }
 
 
+  /**
+   * Insert or update an almanac entry.
+   * @param {*} dbCtx
+   * @param {String} event
+   * @param {Date=} date
+   */
+  async almanacUpsert(dbCtx, event, date) {
+    this._notImplemented('almanacUpsert', arguments);
+  }
+
+
   /**
    * Fetch the authentication record for an identifier.
    * @param {*} dbCtx
@@ -580,6 +591,44 @@ class Database {
     this._notImplemented('tokensGetByIdentifier', arguments);
   }
 
+
+  /** @typedef {Object} RedeemedTicketData
+   * @property {String} subject
+   * @property {String} resource
+   * @property {String=} iss
+   * @property {String} ticket
+   * @property {String} token
+   */
+  /**
+   * Persist details of a redeemed ticket.
+   * @param {*} dbCtx
+   * @param {RedeemedTicketData} redeemedData
+   * @returns {Promise<void>}
+   */
+  async ticketRedeemed(dbCtx, redeemedData) {
+    this._notImplemented('ticketRedeemed', arguments);
+  }
+
+
+  /**
+   * Update details of a redeemed ticket that it has been published.
+   * @param {*} dbCtx
+   * @param {RedeemedTicketData} redeemedData
+   * @returns {Promise<void>}
+   */
+  async ticketTokenPublished(dbCtx, redeemedData) {
+    this._notImplemented('ticketTokenPublished', arguments);
+  }
+
+  /**
+   * Retrieve redeemed tokens which have not yet been published to queue.
+   * @param {Number} limit
+   * @returns {Promise<RedeemedData[]>}
+   */
+  async ticketTokenGetUnpublished(dbCtx, limit) {
+    this._notImplemented('ticketTokenGetUnpublished', arguments);
+  }
+
 }
 
-module.exports = Database;
\ No newline at end of file
+module.exports = Database;