This commit is contained in:
@@ -1,21 +1,35 @@
|
|||||||
import { Database } from 'arangojs'
|
import { Database } from 'arangojs'
|
||||||
|
|
||||||
const ARANGODB_URL = process.env.ARANGODB_URL || process.env.ARANGODB_INTERNAL_URL || 'http://localhost:8529'
|
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 || ''
|
const ARANGODB_PASSWORD = process.env.ARANGODB_PASSWORD || ''
|
||||||
|
|
||||||
let _db: Database | null = null
|
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 {
|
export function getDb(): Database {
|
||||||
if (!_db) {
|
if (!_db) {
|
||||||
const url = ARANGODB_URL.startsWith('http') ? ARANGODB_URL : `http://${ARANGODB_URL}`
|
_db = database(ARANGODB_DATABASE)
|
||||||
_db = new Database({ url, databaseName: ARANGODB_DATABASE, auth: { username: 'root', password: ARANGODB_PASSWORD } })
|
console.log(`Connected to ArangoDB: ${ARANGODB_URL}/${ARANGODB_DATABASE}`)
|
||||||
console.log(`Connected to ArangoDB: ${url}/${ARANGODB_DATABASE}`)
|
|
||||||
}
|
}
|
||||||
return _db
|
return _db
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ensureDatabase(): Promise<void> {
|
||||||
|
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<void> {
|
export async function ensureGraph(): Promise<void> {
|
||||||
|
await ensureDatabase()
|
||||||
const db = getDb()
|
const db = getDb()
|
||||||
|
|
||||||
const nodes = db.collection('nodes')
|
const nodes = db.collection('nodes')
|
||||||
|
|||||||
Reference in New Issue
Block a user