mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-05-08 21:48:20 +00:00
- Implemented githubTokensDb for managing GitHub tokens with CRUD operations. - Created otificationPreferencesDb to handle user notification preferences. - Added projectsDb for project path management and related operations. - Introduced pushSubscriptionsDb for managing browser push subscriptions. - Developed scanStateDb to track the last scanned timestamp. - Established sessionsDb for session management with CRUD functionalities. - Created userDb for user management, including authentication and onboarding. - Implemented apidKeysDb for storing and managing VAPID keys. feat(database): define schema for new database tables - Added SQL schema definitions for users, API keys, user credentials, notification preferences, VAPID keys, push subscriptions, projects, sessions, scan state, and app configuration. - Included necessary indexes for performance optimization. refactor(shared): enhance type definitions and utility functions - Updated shared types and interfaces for improved clarity and consistency. - Added new types for credential management and provider-specific operations. - Refined utility functions for better error handling and message normalization.
58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
/**
|
|
* VAPID keys repository.
|
|
*
|
|
* Stores and retrieves the Web Push VAPID key pair.
|
|
*/
|
|
|
|
import { getConnection } from '@/modules/database/connection.js';
|
|
|
|
type VapidKeyRow = {
|
|
public_key: string;
|
|
private_key: string;
|
|
};
|
|
|
|
type VapidKeyPair = {
|
|
publicKey: string;
|
|
privateKey: string;
|
|
};
|
|
|
|
export const vapidKeysDb = {
|
|
/** Returns the latest stored VAPID key pair, or null when unset. */
|
|
getVapidKeys(): VapidKeyPair | null {
|
|
const db = getConnection();
|
|
const row = db
|
|
.prepare(
|
|
'SELECT public_key, private_key FROM vapid_keys ORDER BY id DESC LIMIT 1'
|
|
)
|
|
.get() as Pick<VapidKeyRow, 'public_key' | 'private_key'> | undefined;
|
|
|
|
if (!row) return null;
|
|
return {
|
|
publicKey: row.public_key,
|
|
privateKey: row.private_key,
|
|
};
|
|
},
|
|
|
|
/** Persists a new VAPID key pair. */
|
|
createVapidKeys(publicKey: string, privateKey: string): void {
|
|
const db = getConnection();
|
|
db.prepare(
|
|
'INSERT INTO vapid_keys (public_key, private_key) VALUES (?, ?)'
|
|
).run(publicKey, privateKey);
|
|
},
|
|
|
|
/** Replaces all existing keys with a fresh pair. */
|
|
updateVapidKeys(publicKey: string, privateKey: string): void {
|
|
const db = getConnection();
|
|
db.prepare('DELETE FROM vapid_keys').run();
|
|
vapidKeysDb.createVapidKeys(publicKey, privateKey);
|
|
},
|
|
|
|
/** Deletes all VAPID key rows. */
|
|
deleteVapidKeys(): void {
|
|
const db = getConnection();
|
|
db.prepare('DELETE FROM vapid_keys').run();
|
|
},
|
|
};
|
|
|