Files
pwa-push-server/src/subscriptionService.ts
2023-08-22 18:24:57 +08:00

42 lines
938 B
TypeScript

import DBService from './db.js';
import { Subscription } from './Subscription.js';
export interface SubscriptionData {
endpoint: string;
keys: {
p256dh: string;
auth: string;
};
}
class SubscriptionService {
private static instance: SubscriptionService;
private dbService: DBService = DBService.getInstance();
private constructor() {
}
public static getInstance(): SubscriptionService {
if (!SubscriptionService.instance) {
SubscriptionService.instance = new SubscriptionService();
}
return SubscriptionService.instance;
}
async addSubscription(subscription: SubscriptionData): Promise<void> {
await this.dbService.saveSubscription(
subscription.endpoint,
subscription.keys.p256dh,
subscription.keys.auth
);
}
async fetchSubscriptions(): Promise<Subscription[]> {
return this.dbService.getSubscriptions();
}
}
export default SubscriptionService;