Skip to content

Commit c39ef42

Browse files
committed
Initial commit
0 parents  commit c39ef42

File tree

15 files changed

+30938
-0
lines changed

15 files changed

+30938
-0
lines changed

.gitignore

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
2+
# Created by https://www.gitignore.io/api/node,visualstudiocode
3+
# Edit at https://www.gitignore.io/?templates=node,visualstudiocode
4+
5+
### Node ###
6+
# Logs
7+
logs
8+
*.log
9+
npm-debug.log*
10+
yarn-debug.log*
11+
yarn-error.log*
12+
lerna-debug.log*
13+
14+
# Diagnostic reports (https://nodejs.org/api/report.html)
15+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
16+
17+
# Runtime data
18+
pids
19+
*.pid
20+
*.seed
21+
*.pid.lock
22+
23+
# Directory for instrumented libs generated by jscoverage/JSCover
24+
lib-cov
25+
26+
# Coverage directory used by tools like istanbul
27+
coverage
28+
29+
# nyc test coverage
30+
.nyc_output
31+
32+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
33+
.grunt
34+
35+
# Bower dependency directory (https://bower.io/)
36+
bower_components
37+
38+
# node-waf configuration
39+
.lock-wscript
40+
41+
# Compiled binary addons (https://nodejs.org/api/addons.html)
42+
build/Release
43+
44+
# Dependency directories
45+
node_modules/
46+
jspm_packages/
47+
48+
# TypeScript v1 declaration files
49+
typings/
50+
51+
# Optional npm cache directory
52+
.npm
53+
54+
# Optional eslint cache
55+
.eslintcache
56+
57+
# Optional REPL history
58+
.node_repl_history
59+
60+
# Output of 'npm pack'
61+
*.tgz
62+
63+
# Yarn Integrity file
64+
.yarn-integrity
65+
66+
# dotenv environment variables file
67+
.env
68+
.env.test
69+
70+
# parcel-bundler cache (https://parceljs.org/)
71+
.cache
72+
73+
# next.js build output
74+
.next
75+
76+
# nuxt.js build output
77+
.nuxt
78+
79+
# vuepress build output
80+
.vuepress/dist
81+
82+
# Serverless directories
83+
.serverless/
84+
85+
# FuseBox cache
86+
.fusebox/
87+
88+
# DynamoDB Local files
89+
.dynamodb/
90+
91+
### VisualStudioCode ###
92+
.vscode/*
93+
!.vscode/settings.json
94+
!.vscode/tasks.json
95+
!.vscode/launch.json
96+
!.vscode/extensions.json
97+
98+
### VisualStudioCode Patch ###
99+
# Ignore all local history of files
100+
.history
101+
102+
# End of https://www.gitignore.io/api/node,visualstudiocode

app.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
var createError = require("http-errors");
2+
var express = require("express");
3+
var path = require("path");
4+
var cookieParser = require("cookie-parser");
5+
var logger = require("morgan");
6+
7+
// express-fileupload
8+
const fileUpload = require("express-fileupload");
9+
10+
var mongoose = require("mongoose");
11+
12+
var indexRouter = require("./routes/index");
13+
var usersRouter = require("./routes/users");
14+
var storeRouter = require("./routes/store");
15+
16+
var app = express();
17+
18+
// view engine setup
19+
app.set("views", path.join(__dirname, "views"));
20+
app.set("view engine", "pug");
21+
22+
// default options
23+
app.use(fileUpload());
24+
mongoose.connect("mongodb://localhost/switchip", { useNewUrlParser: true });
25+
26+
app.use(logger("dev"));
27+
app.use(express.json());
28+
app.use(express.urlencoded({ extended: false }));
29+
app.use(cookieParser());
30+
app.use(express.static(path.join(__dirname, "public")));
31+
32+
app.use("/", indexRouter);
33+
app.use("/upload", storeRouter);
34+
app.use("/users", usersRouter);
35+
36+
// catch 404 and forward to error handler
37+
app.use(function(req, res, next) {
38+
next(createError(404));
39+
});
40+
41+
// error handler
42+
app.use(function(err, req, res, next) {
43+
// set locals, only providing error in development
44+
res.locals.message = err.message;
45+
res.locals.error = req.app.get("env") === "development" ? err : {};
46+
47+
// render the error page
48+
res.status(err.status || 500);
49+
res.render("error");
50+
});
51+
52+
module.exports = app;

bin/www

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
#!/usr/bin/env node
2+
3+
/**
4+
* Module dependencies.
5+
*/
6+
7+
var app = require('../app');
8+
var debug = require('debug')('switchip:server');
9+
var http = require('http');
10+
11+
/**
12+
* Get port from environment and store in Express.
13+
*/
14+
15+
var port = normalizePort(process.env.PORT || '3000');
16+
app.set('port', port);
17+
18+
/**
19+
* Create HTTP server.
20+
*/
21+
22+
var server = http.createServer(app);
23+
24+
/**
25+
* Listen on provided port, on all network interfaces.
26+
*/
27+
28+
server.listen(port);
29+
server.on('error', onError);
30+
server.on('listening', onListening);
31+
32+
/**
33+
* Normalize a port into a number, string, or false.
34+
*/
35+
36+
function normalizePort(val) {
37+
var port = parseInt(val, 10);
38+
39+
if (isNaN(port)) {
40+
// named pipe
41+
return val;
42+
}
43+
44+
if (port >= 0) {
45+
// port number
46+
return port;
47+
}
48+
49+
return false;
50+
}
51+
52+
/**
53+
* Event listener for HTTP server "error" event.
54+
*/
55+
56+
function onError(error) {
57+
if (error.syscall !== 'listen') {
58+
throw error;
59+
}
60+
61+
var bind = typeof port === 'string'
62+
? 'Pipe ' + port
63+
: 'Port ' + port;
64+
65+
// handle specific listen errors with friendly messages
66+
switch (error.code) {
67+
case 'EACCES':
68+
console.error(bind + ' requires elevated privileges');
69+
process.exit(1);
70+
break;
71+
case 'EADDRINUSE':
72+
console.error(bind + ' is already in use');
73+
process.exit(1);
74+
break;
75+
default:
76+
throw error;
77+
}
78+
}
79+
80+
/**
81+
* Event listener for HTTP server "listening" event.
82+
*/
83+
84+
function onListening() {
85+
var addr = server.address();
86+
var bind = typeof addr === 'string'
87+
? 'pipe ' + addr
88+
: 'port ' + addr.port;
89+
debug('Listening on ' + bind);
90+
}

controllers/upload.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var csv = require("fast-csv");
2+
var mongoose = require("mongoose");
3+
var Store = require("../models/store");
4+
5+
exports.post = function(req, res) {
6+
if (!req.files) return res.status(400).send("No files were uploaded.");
7+
8+
var storeFile = req.files.file;
9+
10+
var stores = [];
11+
12+
csv
13+
.fromString(storeFile.data.toString(), {
14+
headers: true,
15+
ignoreEmpty: true
16+
})
17+
.on("data", function(data) {
18+
stores.push(data);
19+
})
20+
.on("end", function() {
21+
Store.create(stores, function(err, documents) {
22+
if (err) throw err;
23+
});
24+
25+
res.send(stores.length + " stores have been successfully uploaded.");
26+
});
27+
};

models/store.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var mongoose = require("mongoose");
2+
3+
var storeSchema = mongoose.Schema({
4+
county: { type: String },
5+
license_number: { type: Number },
6+
operation_type: { type: String },
7+
establishment_type: { type: String },
8+
entity_name: { type: String },
9+
DBA_name: { type: String },
10+
street_number: Number,
11+
street_name: { type: String },
12+
city: { type: String },
13+
state: { type: String },
14+
zip_code: { type: Number },
15+
square_footage: { type: Number }
16+
});
17+
18+
var Store = mongoose.model("Store", storeSchema);
19+
20+
module.exports = Store;

0 commit comments

Comments
 (0)