- Added SettingsComponent for user profile management, including display name and password change functionality. - Introduced TokensComponent for managing API tokens, including creation and revocation. - Created LayoutComponent for consistent application layout with navigation and user information. - Established main application structure in index.html and main.ts. - Integrated Tailwind CSS for styling and responsive design. - Configured TypeScript settings for strict type checking and module resolution.
58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
/**
|
|
* Database connection singleton
|
|
*/
|
|
|
|
import * as plugins from '../plugins.ts';
|
|
|
|
let dbInstance: plugins.smartdata.SmartdataDb | null = null;
|
|
|
|
/**
|
|
* Initialize database connection
|
|
*/
|
|
export async function initDb(config: {
|
|
mongoDbUrl: string;
|
|
mongoDbName?: string;
|
|
}): Promise<plugins.smartdata.SmartdataDb> {
|
|
if (dbInstance) {
|
|
return dbInstance;
|
|
}
|
|
|
|
dbInstance = new plugins.smartdata.SmartdataDb({
|
|
mongoDbUrl: config.mongoDbUrl,
|
|
mongoDbName: config.mongoDbName || 'stackregistry',
|
|
});
|
|
|
|
await dbInstance.init();
|
|
console.log('Database connected successfully');
|
|
|
|
return dbInstance;
|
|
}
|
|
|
|
/**
|
|
* Get database instance (must call initDb first)
|
|
*/
|
|
export function getDb(): plugins.smartdata.SmartdataDb {
|
|
if (!dbInstance) {
|
|
throw new Error('Database not initialized. Call initDb() first.');
|
|
}
|
|
return dbInstance;
|
|
}
|
|
|
|
/**
|
|
* Close database connection
|
|
*/
|
|
export async function closeDb(): Promise<void> {
|
|
if (dbInstance) {
|
|
await dbInstance.close();
|
|
dbInstance = null;
|
|
console.log('Database connection closed');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if database is connected
|
|
*/
|
|
export function isDbConnected(): boolean {
|
|
return dbInstance !== null;
|
|
}
|