diff --git a/packages/database/src/cli/setup.ts b/packages/database/src/cli/setup.ts index cfcaceb87..f87835104 100644 --- a/packages/database/src/cli/setup.ts +++ b/packages/database/src/cli/setup.ts @@ -11,14 +11,14 @@ const dbName = process.env.ARANGO_DB ?? "lxcat"; const username = process.env.ARANGO_USERNAME ?? "lxcat"; const password = process.env.ARANGO_PASSWORD!; -const db = await LXCatDatabase.create(systemDb(), dbName); +const db = await LXCatDatabase.setup(systemDb(), dbName); if (db.isErr) { console.log(db.error.message); exit(); } -console.log(`Created ${dbName} database.`); +console.log(`Successfully setup the ${dbName} database.`); // Create the `lxcat` user if it doesn't already exist. if (!(await systemDb().listUsers()).find((user) => user.user === username)) { diff --git a/packages/database/src/lxcat-database.ts b/packages/database/src/lxcat-database.ts index 0716d54dc..aaa24784b 100644 --- a/packages/database/src/lxcat-database.ts +++ b/packages/database/src/lxcat-database.ts @@ -5,7 +5,7 @@ import { Database } from "arangojs"; import { CreateDatabaseOptions } from "arangojs/database.js"; import { Result } from "true-myth"; -import { ok } from "true-myth/result"; +import { err, ok } from "true-myth/result"; import { addOrganization, addSession, @@ -131,19 +131,24 @@ export class LXCatDatabase { this.db = db; } - public static async create( + public static async setup( system: Database, name: string, options?: CreateDatabaseOptions, ): Promise> { - const dbResult = await setupDatabase(system, name, options); + let db: Database; - // if (dbResult.isErr) { - // return err(dbResult.error); - // } + if (await system.database(name).exists()) { + db = system.database(name); + } else { + const dbResult = await setupDatabase(system, name, options); - // The `setupDatabase` function errors when the database already exists. - const db = dbResult.isErr ? system.database(name) : dbResult.value; + if (dbResult.isErr) { + return err(dbResult.error); + } + + db = dbResult.value; + } await setupUserCollections(db); await setupSharedCollections(db);