@@ -45,40 +45,63 @@ var dbPort = process.env.DB_PORT;
45
45
var dbProtocol = process . env . DB_PROTOCOL ;
46
46
var dbPrefix = process . env . DB_PREFIX ;
47
47
var databaseName = dbPrefix + constants . TRIGGER_DB_SUFFIX ;
48
+ var ddname = '_design/filters' ;
48
49
49
50
// Create the Provider Server
50
51
var server = http . createServer ( app ) ;
51
52
server . listen ( app . get ( 'port' ) , function ( ) {
52
53
logger . info ( tid , 'server.listen' , 'Express server listening on port ' + app . get ( 'port' ) ) ;
53
54
} ) ;
54
55
55
- function createDatabase ( nanop ) {
56
-
57
- logger . info ( tid , 'createDatabase' , 'creating the trigger database' ) ;
58
- if ( nanop !== null ) {
59
- nanop . db . create ( databaseName , function ( err , body , header ) {
60
- if ( ! err ) {
61
- logger . info ( tid , databaseName , ' database for triggers was created.' ) ;
62
- } else {
63
- logger . info ( tid , databaseName , 'failed to create the trigger database. it might already exist ' , err ) ;
64
- }
56
+ function createDatabase ( nanop ) {
57
+ logger . info ( tid , 'createDatabase' , 'creating the trigger database' ) ;
58
+ return new Promise ( function ( resolve , reject ) {
59
+ nanop . db . create ( databaseName , function ( err , body ) {
60
+ if ( ! err ) {
61
+ logger . info ( tid , databaseName , ' database for triggers was created.' ) ;
62
+ } else {
63
+ logger . info ( tid , databaseName , 'failed to create the trigger database. it might already exist ' , err ) ;
64
+ }
65
+ var db = nanop . db . use ( databaseName ) ;
66
+ var only_triggers = {
67
+ map : function ( doc ) {
68
+ if ( doc . maxTriggers ) {
69
+ emit ( doc . _id , 1 ) ;
70
+ }
71
+ } . toString ( )
72
+ } ;
73
+
74
+ db . get ( ddname , function ( error , body ) {
75
+ if ( error ) {
76
+ //new design doc
77
+ db . insert ( {
78
+ views : {
79
+ only_triggers : only_triggers
80
+ } ,
81
+ } , ddname , function ( error , body ) {
82
+ if ( error ) {
83
+ reject ( "view could not be created: " + error ) ;
84
+ }
85
+ resolve ( db ) ;
86
+ } ) ;
87
+ }
88
+ else {
89
+ resolve ( db ) ;
90
+ }
91
+ } ) ;
92
+ } ) ;
65
93
} ) ;
66
- var chDb = nanop . db . use ( databaseName ) ;
67
- return chDb ;
68
- } else {
69
- logger . info ( tid , databaseName , 'failed to create the trigger database. nano provider did not get created. check db URL: ' + dbHost ) ;
70
- return null ;
71
- }
72
-
73
94
}
74
95
75
- function createTriggerDb ( ) {
76
-
77
- logger . info ( 'url is ' + dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost ) ;
78
- var nanop = require ( 'nano' ) ( dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost ) ;
79
-
80
- return createDatabase ( nanop ) ;
81
-
96
+ function createTriggerDb ( ) {
97
+ logger . info ( 'url is ' + dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost ) ;
98
+ var nanop = require ( 'nano' ) ( dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost ) ;
99
+ if ( nanop !== null ) {
100
+ return createDatabase ( nanop ) ;
101
+ }
102
+ else {
103
+ Promise . reject ( 'nano provider did not get created. check db URL: ' + dbHost ) ;
104
+ }
82
105
}
83
106
84
107
// Initialize the Provider Server
@@ -92,35 +115,32 @@ function init(server) {
92
115
}
93
116
}
94
117
95
- ///
96
- var nanoDb = createTriggerDb ( ) ;
97
- if ( nanoDb === null ) {
98
- logger . error ( tid , 'init' , 'an error occurred creating database' ) ;
99
- } else {
100
-
101
- logger . info ( tid , 'init' , 'trigger storage database details: ' , nanoDb ) ;
118
+ createTriggerDb ( )
119
+ . then ( nanoDb => {
120
+ logger . info ( tid , 'init' , 'trigger storage database details: ' , nanoDb ) ;
102
121
103
- var providerUtils = new ProviderUtils ( tid , logger , app , retriesBeforeDelete , nanoDb , routerHost ) ;
104
- var providerRAS = new ProviderRAS ( tid , logger , providerUtils ) ;
105
- var providerHealth = new ProviderHealth ( tid , logger , providerUtils ) ;
106
- var providerCreate = new ProviderCreate ( tid , logger , providerUtils ) ;
107
- var providerDelete = new ProviderDelete ( tid , logger , providerUtils ) ;
122
+ var providerUtils = new ProviderUtils ( tid , logger , app , retriesBeforeDelete , nanoDb , routerHost ) ;
123
+ var providerRAS = new ProviderRAS ( tid , logger , providerUtils ) ;
124
+ var providerHealth = new ProviderHealth ( tid , logger , providerUtils ) ;
125
+ var providerCreate = new ProviderCreate ( tid , logger , providerUtils ) ;
126
+ var providerDelete = new ProviderDelete ( tid , logger , providerUtils ) ;
108
127
109
- // RAS Endpoint
110
- app . get ( providerRAS . endPoint , providerRAS . ras ) ;
128
+ // RAS Endpoint
129
+ app . get ( providerRAS . endPoint , providerRAS . ras ) ;
111
130
112
- // Health Endpoint
113
- app . get ( providerHealth . endPoint , providerHealth . health ) ;
131
+ // Health Endpoint
132
+ app . get ( providerHealth . endPoint , providerHealth . health ) ;
114
133
115
- // Endpoint for Creating a new Trigger
116
- app . post ( providerCreate . endPoint , providerUtils . authorize , providerCreate . create ) ;
134
+ // Endpoint for Creating a new Trigger
135
+ app . post ( providerCreate . endPoint , providerUtils . authorize , providerCreate . create ) ;
117
136
118
- // Endpoint for Deleting an existing Trigger.
119
- app . delete ( providerDelete . endPoint , providerUtils . authorize , providerDelete . delete ) ;
137
+ // Endpoint for Deleting an existing Trigger.
138
+ app . delete ( providerDelete . endPoint , providerUtils . authorize , providerDelete . delete ) ;
120
139
121
- providerUtils . initAllTriggers ( ) ;
122
-
123
- }
140
+ providerUtils . initAllTriggers ( ) ;
141
+ } ) . catch ( err => {
142
+ logger . error ( tid , 'init' , 'an error occurred creating database:' , err ) ;
143
+ } ) ;
124
144
125
145
}
126
146
0 commit comments