Skip to main content
Glama

DevDb MCP Server

laravel-local-sqlite-provider.ts2.29 kB
import * as vscode from 'vscode'; import { join } from 'path'; import { DotenvParseOutput, parse } from 'dotenv'; import { DatabaseEngine, DatabaseEngineProvider } from '../../types'; import { SqliteEngine } from '../../database-engines/sqlite-engine'; import { fileExists, getBasePath, getWorkspaceFileContent, isComposerPhpProject } from '../../services/workspace'; export const LaravelLocalSqliteProvider: DatabaseEngineProvider = { name: 'Laravel Local SQLite (default)', type: 'sqlite', id: 'laravel-local-sqlite', description: 'Laravel with local default SQLite database', engine: undefined, async canBeUsedInCurrentWorkspace(): Promise<boolean> { if (!isComposerPhpProject()) { return false; } const configContent = getWorkspaceFileContent('config', 'database.php'); if (!configContent) return false; const envFileContents = getWorkspaceFileContent('.env'); if (!envFileContents) return false; const env = parse(envFileContents); const usesSqlite = env.DB_CONNECTION == 'sqlite'; if (!usesSqlite) return false; const sqliteFilePath = await getSqliteFilePath(configContent.toString(), env) try { this.engine = new SqliteEngine(sqliteFilePath); } catch (error) { vscode.window.showErrorMessage(`SQLite file error ${sqliteFilePath}: ${String(error)}`) return false } return (await this.engine.isOkay()) }, reconnect(): Promise<boolean> { return this.canBeUsedInCurrentWorkspace() }, async getDatabaseEngine(): Promise<DatabaseEngine | undefined> { return this.engine } } async function getSqliteFilePath(configContent: string, envFileContent: DotenvParseOutput): Promise<string> { // Match /env('DB_DATABASE', database_path('database.sqlite'))/ irrespective of whitespace const databasePathRegex = /env\(\s*['"]DB_DATABASE['"]\s*,\s*database_path\(\s*['"]database\.sqlite['"]\s*\)\s*\)/; if (!databasePathRegex.test(configContent)) return ''; const databasePathDefinedInEnv = envFileContent.DB_DATABASE; if (databasePathDefinedInEnv) return databasePathDefinedInEnv; const workspacePath = getBasePath() if (!workspacePath) return '' const databaseFilePath = join(workspacePath, 'database', 'database.sqlite'); const exists = await fileExists(databaseFilePath) if (!exists) return ''; return databaseFilePath }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/damms005/devdb-vscode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server