diff --git a/src/db.ts b/src/db.ts index e0f3c3e..a117ae2 100644 --- a/src/db.ts +++ b/src/db.ts @@ -1,21 +1,35 @@ import { Database } from 'arangojs' const ARANGODB_URL = process.env.ARANGODB_URL || process.env.ARANGODB_INTERNAL_URL || 'http://localhost:8529' -const ARANGODB_DATABASE = process.env.ARANGODB_DATABASE || 'optovia_geo' +const ARANGODB_DATABASE = process.env.ARANGODB_DATABASE || 'optovia_maps' const ARANGODB_PASSWORD = process.env.ARANGODB_PASSWORD || '' let _db: Database | null = null +function database(databaseName: string): Database { + const url = ARANGODB_URL.startsWith('http') ? ARANGODB_URL : `http://${ARANGODB_URL}` + return new Database({ url, databaseName, auth: { username: 'root', password: ARANGODB_PASSWORD } }) +} + export function getDb(): Database { if (!_db) { - const url = ARANGODB_URL.startsWith('http') ? ARANGODB_URL : `http://${ARANGODB_URL}` - _db = new Database({ url, databaseName: ARANGODB_DATABASE, auth: { username: 'root', password: ARANGODB_PASSWORD } }) - console.log(`Connected to ArangoDB: ${url}/${ARANGODB_DATABASE}`) + _db = database(ARANGODB_DATABASE) + console.log(`Connected to ArangoDB: ${ARANGODB_URL}/${ARANGODB_DATABASE}`) } return _db } +async function ensureDatabase(): Promise { + const system = database('_system') + const databases = await system.listDatabases() + if (!databases.includes(ARANGODB_DATABASE)) { + await system.createDatabase(ARANGODB_DATABASE) + console.log(`Created ArangoDB database: ${ARANGODB_DATABASE}`) + } +} + export async function ensureGraph(): Promise { + await ensureDatabase() const db = getDb() const nodes = db.collection('nodes')