@@ -31,40 +31,43 @@ function prettyPrint (argv, object, rules) {
3131 console . log ( )
3232}
3333
34- function createServer ( source , object , routes , delay ) {
35- var server = jsonServer . create ( )
34+ function createApp ( source , object , routes , argv ) {
35+ var app = jsonServer . create ( )
3636
3737 var router = jsonServer . router (
3838 is . JSON ( source ) ?
3939 source :
4040 object
4141 )
4242
43- server . use ( jsonServer . defaults )
43+ app . use ( jsonServer . defaults )
4444
4545 if ( routes ) {
4646 var rewriter = jsonServer . rewriter ( routes )
47- server . use ( rewriter )
47+ app . use ( rewriter )
4848 }
4949
50- if ( delay ) {
51- server . use ( pause ( delay ) )
50+ if ( argv . delay ) {
51+ app . use ( pause ( argv . delay ) )
5252 }
5353
54- server . use ( router )
54+ router . db . _ . id = argv . id
55+ app . db = router . db
56+ app . use ( router )
5557
56- return server
58+ return app
5759}
5860
5961module . exports = function ( argv ) {
6062
6163 var source = argv . _ [ 0 ]
64+ var app
6265 var server
6366
6467 console . log ( )
6568 console . log ( chalk . cyan ( ' \\{^_^}/ hi!' ) )
6669
67- function start ( ) {
70+ function start ( cb ) {
6871 console . log ( )
6972 console . log ( chalk . gray ( ' Loading' , source ) )
7073
@@ -81,28 +84,46 @@ module.exports = function (argv) {
8184
8285 console . log ( chalk . gray ( ' Done' ) )
8386
84- // Create server and listen
85- server = createServer ( source , data , routes , argv . delay )
86- . listen ( argv . port , argv . host )
87+ // Create app and server
88+ app = createApp ( source , data , routes , argv )
89+ server = app . listen ( argv . port , argv . host )
8790
8891 // Display server informations
8992 prettyPrint ( argv , data , routes )
93+
94+ cb && cb ( )
9095 } )
9196 }
9297
9398 // Start server
94- start ( )
95-
96- // Watch files
97- if ( argv . watch ) {
98- console . log ( chalk . gray ( ' Watching...' ) )
99- console . log ( )
100- watch ( argv , function ( file ) {
101- console . log ( chalk . gray ( ' ' + file + ' has changed, reloading...' ) )
102- // Restart server
103- server && server . close ( )
104- start ( )
99+ start ( function ( ) {
100+
101+ // Snapshot
102+ console . log (
103+ chalk . gray ( ' Type s + enter at any time to create a snapshot of the database' )
104+ )
105+
106+ process . stdin . resume ( )
107+ process . stdin . setEncoding ( 'utf8' )
108+ process . stdin . on ( 'data' , function ( chunk ) {
109+ if ( chunk . trim ( ) . toLowerCase ( ) === 's' ) {
110+ var file = 'db-' + Date . now ( ) + '.json'
111+ app . db . saveSync ( file )
112+ console . log ( ' Saved snapshot to ' + file + '\n' )
113+ }
105114 } )
106- }
115+
116+ // Watch files
117+ if ( argv . watch ) {
118+ console . log ( chalk . gray ( ' Watching...' ) )
119+ console . log ( )
120+ watch ( argv , function ( file ) {
121+ console . log ( chalk . gray ( ' ' + file + ' has changed, reloading...' ) )
122+ server && server . close ( )
123+ start ( )
124+ } )
125+ }
126+
127+ } )
107128
108129}
0 commit comments