1
1
const co = require ( "co" ) ;
2
2
const Promise = require ( "bluebird" ) ;
3
- const cradle = Promise . promisifyAll ( require ( "cradle" ) ) ;
4
-
5
- // A custom Error just for database problems.
6
- function CouchDBError ( message ) {
7
- this . name = "CouchDBError" ;
8
- this . message = ( message || "" ) ;
9
- }
10
- CouchDBError . prototype = Error . prototype ;
11
-
12
- // Connects to a database and returns the DB object.
13
- const connectToDatabase = ( dbName ) => {
14
- try {
15
- return new ( cradle . Connection ) ( ) . database ( dbName ) ;
16
- } catch ( err ) {
17
- throw new CouchDBError ( `DB: Get: Connection to database [${ dbName } ] failed` ) ;
18
- }
19
- } ;
3
+ const fs = Promise . promisifyAll ( require ( "fs" ) ) ;
20
4
21
5
exports . createDatabase = function * createDatabase ( database ) {
22
6
try {
23
- const db = connectToDatabase ( database ) ;
24
- const confirmation = yield db . createAsync ( ) ;
25
- confirmation . error = false ;
7
+ yield fs . mkdirAsync ( `${ __dirname } /../data/${ database } ` ) ;
8
+ const confirmation = {
9
+ error : false
10
+ } ;
26
11
return confirmation ;
27
12
} catch ( err ) {
28
13
return {
@@ -34,9 +19,10 @@ exports.createDatabase = function* createDatabase(database) {
34
19
35
20
exports . deleteDatabase = function * deleteDatabase ( database ) {
36
21
try {
37
- const db = connectToDatabase ( database ) ;
38
- const confirmation = yield db . destroyAsync ( ) ;
39
- confirmation . error = false ;
22
+ yield fs . rmdirAsync ( `${ __dirname } /../data/${ database } ` ) ;
23
+ const confirmation = {
24
+ error : false
25
+ } ;
40
26
return confirmation ;
41
27
} catch ( err ) {
42
28
return {
@@ -49,80 +35,48 @@ exports.deleteDatabase = function* deleteDatabase(database) {
49
35
// Grabs a document from a database in CouchDB.
50
36
exports . getDocument = function * getDocument ( id , database ) {
51
37
try {
52
- const db = connectToDatabase ( database ) ;
53
- const doc = yield db . getAsync ( id ) ;
54
- doc . error = false ;
55
- return doc ;
38
+ const file = yield fs . readFileAsync ( `${ __dirname } /../data/${ database } /${ id } .json` ) ;
39
+ const result = {
40
+ error : false ,
41
+ data : JSON . parse ( file )
42
+ } ;
43
+ return result ;
56
44
} catch ( err ) {
57
45
return {
58
46
error : true ,
59
- message : `DB: Get of [${ id } ] failed`
47
+ message : `DB: Get of [${ database } / ${ id } ] failed`
60
48
} ;
61
49
}
62
50
} ;
63
51
64
52
// Saves a document in a database in CouchDB.
65
53
exports . saveDocument = function * saveDocument ( document , database ) {
66
54
try {
67
- const db = connectToDatabase ( database ) ;
68
- const returnVal = yield db . saveAsync ( document . _id , document ) ;
69
- document . error = false ;
70
- return document ;
55
+ yield fs . writeFileAsync ( `${ __dirname } /../data/${ database } /${ document . _id } .json` , JSON . stringify ( document , null , 2 ) ) ;
56
+ const confirmation = {
57
+ error : false
58
+ } ;
59
+ return confirmation ;
71
60
} catch ( err ) {
72
- throw new Error ( err . stack ) ;
73
61
return {
74
62
error : true ,
75
- message : `DB: Save of [${ document . _id } ] failed`
63
+ message : `DB: Save of [${ database } / ${ id } ] failed`
76
64
} ;
77
65
}
78
66
} ;
79
67
80
68
// Removes a document in a database in CouchDB.
81
69
exports . removeDocument = function * removeDocument ( id , database ) {
82
70
try {
83
- const db = connectToDatabase ( database ) ;
84
- const returnVal = yield db . removeAsync ( id ) ;
85
- returnVal . error = false ;
86
- return returnVal ;
87
- } catch ( err ) {
88
- return {
89
- error : true ,
90
- message : `DB: Delete of [${ id } ] failed`
91
- } ;
92
- }
93
- } ;
94
-
95
- // Gets a view from a database in CouchDB.
96
- exports . runView = function * runView ( path , key , database , opts = { } ) {
97
- try {
98
- const db = connectToDatabase ( database ) ;
99
- const returnVal = { } ;
100
- if ( key !== null ) {
101
- opts . key = key ;
102
- }
103
- returnVal . results = yield db . viewAsync ( path , opts ) ;
104
- returnVal . error = false ;
105
- return returnVal ;
106
- } catch ( err ) {
107
- return {
108
- error : true ,
109
- message : `DB: View of [${ path } ] failed`
71
+ yield fs . unlinkAsync ( `${ __dirname } /../data/${ database } /${ id } .json` ) ;
72
+ const confirmation = {
73
+ error : false
110
74
} ;
111
- }
112
- } ;
113
-
114
- // Saves a view to a database in CouchDB
115
- // Saves a document in a database in CouchDB.
116
- exports . saveView = function * saveView ( id , view , database ) {
117
- try {
118
- const db = connectToDatabase ( database ) ;
119
- const document = yield db . saveAsync ( `_design/${ id } ` , view ) ;
120
- document . error = false ;
121
- return document ;
75
+ return confirmation ;
122
76
} catch ( err ) {
123
77
return {
124
78
error : true ,
125
- message : `DB: Save of [${ id } ] view failed`
79
+ message : `DB: Delete of [${ database } / ${ id } ] failed`
126
80
} ;
127
81
}
128
82
} ;
0 commit comments