123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- import { assert } from 'workbox-core/_private/assert.js';
- import { QueueDb, } from './QueueDb.js';
- import '../_version.js';
- export class QueueStore {
-
- constructor(queueName) {
- this._queueName = queueName;
- this._queueDb = new QueueDb();
- }
-
- async pushEntry(entry) {
- if (process.env.NODE_ENV !== 'production') {
- assert.isType(entry, 'object', {
- moduleName: 'workbox-background-sync',
- className: 'QueueStore',
- funcName: 'pushEntry',
- paramName: 'entry',
- });
- assert.isType(entry.requestData, 'object', {
- moduleName: 'workbox-background-sync',
- className: 'QueueStore',
- funcName: 'pushEntry',
- paramName: 'entry.requestData',
- });
- }
-
- delete entry.id;
- entry.queueName = this._queueName;
- await this._queueDb.addEntry(entry);
- }
-
- async unshiftEntry(entry) {
- if (process.env.NODE_ENV !== 'production') {
- assert.isType(entry, 'object', {
- moduleName: 'workbox-background-sync',
- className: 'QueueStore',
- funcName: 'unshiftEntry',
- paramName: 'entry',
- });
- assert.isType(entry.requestData, 'object', {
- moduleName: 'workbox-background-sync',
- className: 'QueueStore',
- funcName: 'unshiftEntry',
- paramName: 'entry.requestData',
- });
- }
- const firstId = await this._queueDb.getFirstEntryId();
- if (firstId) {
-
- entry.id = firstId - 1;
- }
- else {
-
- delete entry.id;
- }
- entry.queueName = this._queueName;
- await this._queueDb.addEntry(entry);
- }
-
- async popEntry() {
- return this._removeEntry(await this._queueDb.getLastEntryByQueueName(this._queueName));
- }
-
- async shiftEntry() {
- return this._removeEntry(await this._queueDb.getFirstEntryByQueueName(this._queueName));
- }
-
- async getAll() {
- return await this._queueDb.getAllEntriesByQueueName(this._queueName);
- }
-
- async size() {
- return await this._queueDb.getEntryCountByQueueName(this._queueName);
- }
-
- async deleteEntry(id) {
- await this._queueDb.deleteEntry(id);
- }
-
- async _removeEntry(entry) {
- if (entry) {
- await this.deleteEntry(entry.id);
- }
- return entry;
- }
- }
|