diff --git a/vault/src/app.ts b/vault/src/app.ts index b476ea1..3ab511b 100644 --- a/vault/src/app.ts +++ b/vault/src/app.ts @@ -3,38 +3,20 @@ import { MongoClient } from 'mongodb' import { CharacterService } from './character_service' import { DatabaseService } from './database' -import { Command } from 'commander' -// import { Flag } from './flags' +import { Flags } from './flags' -// const portFlag = new Flag('-p', 8080) +const flags = new Flags() -const program = new Command() - -program - .option('-p, --port ', 'server port number', '8080') - .option( - '--mongoPath ', - 'mongo db path', - 'mongodb://rushvault:rushvault@mongo:27017/', - ) - .option( - '--mongoDb ', - 'name of the databse to store collections', - 'rush-vault', - ) - -program.parse() - -const port = program.opts().port +const port = flags.getPort() const address = `0.0.0.0:${port}` const databaseService = new DatabaseService( - program.opts().mongoPath, - program.opts().mongoDb, + flags.getMongoDbAddress(), + flags.getMongoDbName(), ) -const characterService = new CharacterService(databaseService) +const characterService = new CharacterService(databaseService) const app = new Server() app.bindAsync(address, ServerCredentials.createInsecure(), () => { diff --git a/vault/src/flags.ts b/vault/src/flags.ts new file mode 100644 index 0000000..01d7354 --- /dev/null +++ b/vault/src/flags.ts @@ -0,0 +1,32 @@ +import { Command } from 'commander' + +export class Flags { + private readonly program = new Command() + .option('-p, --port ', 'server port number', '8080') + .option( + '--mongoPath ', + 'mongo db path', + 'mongodb://rushvault:rushvault@mongo:27017/', + ) + .option( + '--mongoDb ', + 'name of the databse to store collections', + 'rush-vault', + ) + + constructor() { + this.program.parse() + } + + getPort(): number { + return this.program.opts().port + } + + getMongoDbAddress(): string { + return this.program.opts().mongoPath + } + + getMongoDbName(): string { + return this.program.opts().mongoDb + } +}