2016-09-11 16:01:46 +00:00
|
|
|
import * as plugins from './smartdata.plugins'
|
|
|
|
|
2016-09-12 21:47:57 +00:00
|
|
|
export type TConnectionStatus = 'disconnected' | 'connected' | 'failed'
|
2016-09-11 16:01:46 +00:00
|
|
|
|
2016-09-12 21:47:57 +00:00
|
|
|
export class Db {
|
2016-09-11 16:01:46 +00:00
|
|
|
dbUrl: string
|
|
|
|
db: plugins.mongodb.Db
|
2016-09-12 21:47:57 +00:00
|
|
|
status: TConnectionStatus
|
2016-09-11 16:01:46 +00:00
|
|
|
|
|
|
|
constructor(dbUrl: string) {
|
|
|
|
this.dbUrl = dbUrl
|
|
|
|
}
|
|
|
|
|
|
|
|
connect(): plugins.q.Promise<any> {
|
|
|
|
let done = plugins.q.defer()
|
|
|
|
plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => {
|
|
|
|
if (err) { console.log(err) }
|
|
|
|
plugins.assert.equal(null, err)
|
|
|
|
this.db = db
|
|
|
|
plugins.beautylog.success(`connected to database at ${this.dbUrl}`)
|
|
|
|
done.resolve(this.db)
|
|
|
|
})
|
|
|
|
return done.promise
|
|
|
|
}
|
|
|
|
|
|
|
|
close(): plugins.q.Promise<any> {
|
|
|
|
let done = plugins.q.defer()
|
|
|
|
this.db.close()
|
|
|
|
plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`)
|
|
|
|
done.resolve()
|
|
|
|
return done.promise
|
|
|
|
}
|
|
|
|
}
|