From f1420c6f9114dea01b8f16c0652d519039245e27 Mon Sep 17 00:00:00 2001 From: EdTriplett Date: Fri, 4 Aug 2017 11:25:30 -0400 Subject: [PATCH 1/7] initial --- .gitignore | 1 + config/config.json | 23 ++ models/index.js | 36 ++ package-lock.json | 874 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 27 ++ 5 files changed, 961 insertions(+) create mode 100644 .gitignore create mode 100644 config/config.json create mode 100644 models/index.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..41802d2 --- /dev/null +++ b/config/config.json @@ -0,0 +1,23 @@ +{ + "development": { + "username": "root", + "password": null, + "database": "database_development", + "host": "127.0.0.1", + "dialect": "postgres" + }, + "test": { + "username": "root", + "password": null, + "database": "database_test", + "host": "127.0.0.1", + "dialect": "postgres" + }, + "production": { + "username": "root", + "password": null, + "database": "database_production", + "host": "127.0.0.1", + "dialect": "postgres" + } +} diff --git a/models/index.js b/models/index.js new file mode 100644 index 0000000..7540dba --- /dev/null +++ b/models/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var Sequelize = require('sequelize'); +var basename = path.basename(module.filename); +var env = process.env.NODE_ENV || 'development'; +var config = require(__dirname + '/../config/config.json')[env]; +var db = {}; + +if (config.use_env_variable) { + var sequelize = new Sequelize(process.env[config.use_env_variable]); +} else { + var sequelize = new Sequelize(config.database, config.username, config.password, config); +} + +fs + .readdirSync(__dirname) + .filter(function(file) { + return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'); + }) + .forEach(function(file) { + var model = sequelize['import'](path.join(__dirname, file)); + db[model.name] = model; + }); + +Object.keys(db).forEach(function(modelName) { + if (db[modelName].associate) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..730ecb6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,874 @@ +{ + "name": "assignment_calendar_event_planner", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/geojson": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.2.tgz", + "integrity": "sha1-sC0QqwKOKSisWSoFGqpJgaGUHQM=" + }, + "@types/node": { + "version": "6.0.85", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", + "integrity": "sha512-6qLZpfQFO/g5Ns2e7RsW6brk0Q6Xzwiw7kVVU/XiQNOiJXSojhX76GP457PBYIsNMH2WfcGgcnZB4awFDHrwpA==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "ap": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=" + }, + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=" + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" + }, + "buffer-writer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", + "integrity": "sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "chalk": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.1" + } + }, + "cli-highlight": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-1.1.4.tgz", + "integrity": "sha1-5FWQwU+xjhOGXjiZ6CTFWSzCKSY=", + "requires": { + "chalk": "1.1.3", + "he": "1.1.1", + "highlight.js": "9.12.0", + "mz": "2.6.0", + "yargs": "4.8.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "cls-bluebird": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.0.1.tgz", + "integrity": "sha1-wlmkgK4CwOUGE0MHuxPbMERu4uc=", + "requires": { + "is-bluebird": "1.0.2", + "shimmer": "1.1.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "dottie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.0.tgz", + "integrity": "sha1-2hkZgci41xPKARXViYzzl8Lw3dA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "env-cmd": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-5.1.0.tgz", + "integrity": "sha1-AjbbOTw/AzAFIE/NCpLuQHI6nJ4=", + "requires": { + "cross-spawn": "5.1.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "g": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/g/-/g-2.0.1.tgz", + "integrity": "sha1-C1lj69DKcOO8jGdmk0oCGCHIuFc=" + }, + "generic-pool": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.1.7.tgz", + "integrity": "sha1-2sIrLHp6BOQXMvfY0tJaMDyI9mI=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "inflection": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", + "integrity": "sha1-W//LEZetPoEFD44X4hZoCH7p6y8=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bluebird": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", + "integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "moment-timezone": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz", + "integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=", + "requires": { + "moment": "2.18.1" + } + }, + "morgan": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.2.tgz", + "integrity": "sha1-eErHc05KRTqcbm6GgKkyknXItoc=", + "requires": { + "basic-auth": "1.1.0", + "debug": "2.6.8", + "depd": "1.1.1", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + } + }, + "morgan-toolkit": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/morgan-toolkit/-/morgan-toolkit-1.0.2.tgz", + "integrity": "sha512-tFhfamRSNrnGlaVfY384lFyeHZl8Y4IwSt2219+6YEuVeEJKVBlAQHT/NSAF5hlHrloI0G578zRy0Hxv4Iv10Q==", + "requires": { + "chalk": "2.0.1", + "cli-highlight": "1.1.4" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mz": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.6.0.tgz", + "integrity": "sha1-yLhSHZWN8KTydoAl22nHGe5O8c4=", + "requires": { + "any-promise": "1.3.0", + "object-assign": "4.1.1", + "thenify-all": "1.6.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "packet-reader": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.3.1.tgz", + "integrity": "sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-7.1.0.tgz", + "integrity": "sha1-naPwnTmDUhUhwdg2m22aEwbP6f4=", + "requires": { + "buffer-writer": "1.0.1", + "packet-reader": "0.3.1", + "pg-connection-string": "0.1.3", + "pg-pool": "2.0.1", + "pg-types": "1.12.0", + "pgpass": "1.0.2", + "semver": "4.3.2" + }, + "dependencies": { + "semver": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" + } + } + }, + "pg-connection-string": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=" + }, + "pg-hstore": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", + "integrity": "sha1-9+8FPnubiSrphq8vfL6GQy388k8=", + "requires": { + "underscore": "1.8.3" + } + }, + "pg-pool": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.1.tgz", + "integrity": "sha1-ixJUHfJxtX9wIMUKP1VmRx+Cx34=" + }, + "pg-types": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.12.0.tgz", + "integrity": "sha1-itO3uJfj/UY+Yt4kGtX8ZAtKZvA=", + "requires": { + "ap": "0.2.0", + "postgres-array": "1.0.2", + "postgres-bytea": "1.0.0", + "postgres-date": "1.0.3", + "postgres-interval": "1.1.1" + } + }, + "pgpass": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", + "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", + "requires": { + "split": "1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "postgres-array": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.2.tgz", + "integrity": "sha1-jgsy6wO/d6XAp4UeBEHBaaJWojg=" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + }, + "postgres-date": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", + "integrity": "sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g=" + }, + "postgres-interval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.1.1.tgz", + "integrity": "sha512-OkuCi9t/3CZmeQreutGgx/OVNv9MKHGIT5jH8KldQ4NLYXkvmT9nDVxEuCENlNwhlGPE374oA/xMqn05G49pHA==", + "requires": { + "xtend": "4.0.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "retry-as-promised": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.0.tgz", + "integrity": "sha1-J79czZmZMrMWZWloJc82MMJ8Vi0=", + "requires": { + "bluebird": "3.5.0", + "debug": "2.6.8" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "sequelize": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.4.2.tgz", + "integrity": "sha1-lSkuCnUuJYbskqDnI2K3bk/Ljq4=", + "requires": { + "bluebird": "3.5.0", + "cls-bluebird": "2.0.1", + "debug": "2.6.8", + "depd": "1.1.1", + "dottie": "2.0.0", + "env-cmd": "5.1.0", + "generic-pool": "3.1.7", + "inflection": "1.10.0", + "lodash": "4.17.4", + "moment": "2.18.1", + "moment-timezone": "0.5.13", + "retry-as-promised": "2.3.0", + "semver": "5.4.1", + "terraformer-wkt-parser": "1.1.2", + "toposort-class": "1.0.1", + "uuid": "3.1.0", + "validator": "6.3.0", + "wkx": "0.4.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shimmer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", + "integrity": "sha1-l9c3cTf/u6tCVSLkKf4KqJpIizU=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2.3.8" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "requires": { + "has-flag": "2.0.0" + } + }, + "terraformer": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.8.tgz", + "integrity": "sha1-UeCtiXRvzyFh3G9lqnDkI3fItZM=", + "requires": { + "@types/geojson": "1.0.2" + } + }, + "terraformer-wkt-parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz", + "integrity": "sha1-M2oMj8gglKWv+DKI9prt7NNpvww=", + "requires": { + "terraformer": "1.0.8" + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "requires": { + "any-promise": "1.3.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": "3.3.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "validator": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz", + "integrity": "sha1-R84j7Y1Ord+p1LjvAHG2zxB418g=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, + "wkx": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.1.tgz", + "integrity": "sha1-L8FxtenLVcYlb+9L3h8hvkE77+4=", + "requires": { + "@types/node": "6.0.85" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..32b7cf8 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "assignment_calendar_event_planner", + "version": "1.0.0", + "description": "I'll pencil you in on Tuesday around noonish?", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/EdTriplett/assignment_calendar_event_planner.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/EdTriplett/assignment_calendar_event_planner/issues" + }, + "homepage": "https://github.com/EdTriplett/assignment_calendar_event_planner#readme", + "dependencies": { + "g": "^2.0.1", + "morgan": "^1.8.2", + "morgan-toolkit": "^1.0.2", + "pg": "^7.1.0", + "pg-hstore": "^2.3.2", + "sequelize": "^4.4.2" + } +} From d3d2356861aa782a26d57048b1eece4e2e876bb1 Mon Sep 17 00:00:00 2001 From: EdTriplett Date: Fri, 4 Aug 2017 11:51:07 -0400 Subject: [PATCH 2/7] 1st pomo --- package-lock.json | 438 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 + routers/router.js | 32 ++++ 3 files changed, 473 insertions(+) create mode 100644 routers/router.js diff --git a/package-lock.json b/package-lock.json index 730ecb6..3793519 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,21 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", "integrity": "sha512-6qLZpfQFO/g5Ns2e7RsW6brk0Q6Xzwiw7kVVU/XiQNOiJXSojhX76GP457PBYIsNMH2WfcGgcnZB4awFDHrwpA==" }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -37,6 +52,21 @@ "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=" }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, "basic-auth": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", @@ -47,6 +77,42 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" }, + "body-parser": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.1", + "http-errors": "1.6.1", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, "buffer-writer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", @@ -57,11 +123,26 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", @@ -145,6 +226,35 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", + "requires": { + "cookie": "0.3.1", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -168,6 +278,15 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", @@ -204,6 +323,18 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "express-handlebars": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz", + "integrity": "sha1-gKBwu4GbCeSvLKbQeA91zgXnXC8=", + "requires": { + "glob": "6.0.4", + "graceful-fs": "4.1.11", + "handlebars": "4.0.10", + "object.assign": "4.0.4", + "promise": "7.3.1" + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -213,6 +344,16 @@ "pinkie-promise": "2.0.1" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" + }, "g": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/g/-/g-2.0.1.tgz", @@ -228,11 +369,34 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -261,11 +425,48 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + } + } + }, + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=" + }, "inflection": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", "integrity": "sha1-W//LEZetPoEFD44X4hZoCH7p6y8=" }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -281,6 +482,11 @@ "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", "integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=" }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", @@ -307,6 +513,20 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -337,6 +557,11 @@ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -346,6 +571,37 @@ "yallist": "2.1.2" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mime-db": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", + "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=" + }, + "mime-types": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "requires": { + "mime-db": "1.29.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, "moment": { "version": "2.18.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", @@ -416,6 +672,21 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object.assign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", + "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.0", + "object-keys": "1.0.11" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -429,6 +700,23 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -458,6 +746,11 @@ "pinkie-promise": "2.0.1" } }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -568,11 +861,34 @@ "xtend": "4.0.1" } }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "raw-body": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -592,6 +908,11 @@ "read-pkg": "1.1.0" } }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -611,6 +932,15 @@ "debug": "2.6.8" } }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", @@ -646,6 +976,11 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -664,6 +999,14 @@ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", "integrity": "sha1-l9c3cTf/u6tCVSLkKf4KqJpIizU=" }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -690,6 +1033,11 @@ "through": "2.3.8" } }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -766,11 +1114,91 @@ "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.16" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "optional": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -816,6 +1244,11 @@ "@types/node": "6.0.85" } }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -825,6 +1258,11 @@ "strip-ansi": "3.0.1" } }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 32b7cf8..06d4874 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ }, "homepage": "https://github.com/EdTriplett/assignment_calendar_event_planner#readme", "dependencies": { + "body-parser": "^1.17.2", + "cookie-parser": "^1.4.3", + "express-handlebars": "^3.0.0", "g": "^2.0.1", "morgan": "^1.8.2", "morgan-toolkit": "^1.0.2", diff --git a/routers/router.js b/routers/router.js new file mode 100644 index 0000000..cef14d1 --- /dev/null +++ b/routers/router.js @@ -0,0 +1,32 @@ +var express = require('express'); +var router = express.Router(); +var models = require('./../models'); +//var User = models.User; +var sequelize = models.sequelize; + +const exphbs = require('express-handlebars'); +const app = express(); +const port = process.env.PORT || '3000'; + +// parsers +const cookieParser = require('cookie-parser'); +const bodyParser = require('body-parser'); + + +// Templates! +app.engine('handlebars', exphbs({ defaultLayout: 'main' })); +app.set('view engine', 'handlebars'); + + +app.use(bodyParser.urlencoded({ extended: true })); +app.use(cookieParser()); +app.use(express.static(`${__dirname}/public`)); + +app.get('/', (req, res) => { +}); + +app.post('/', (req, res) => {}); + +app.listen(port, () => { + console.log('Serving!'); +}); \ No newline at end of file From ccbe41c10e82c02b88da12ea40b2890e1c98b528 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Fri, 4 Aug 2017 12:19:21 -0400 Subject: [PATCH 3/7] brute force --- app.js | 101 +++++++ migrations/20170406061333-create-user.js | 48 ++++ migrations/20170406061840-create-post.js | 38 +++ migrations/20170406062118-create-comment.js | 35 +++ models/userModel.js | 21 ++ queries.js | 287 ++++++++++++++++++++ repl.js | 40 +++ routers/users.js | 132 +++++++++ seeders/20170406062230-users.js | 39 +++ views/layouts/application.handlebars | 30 ++ views/shared/_nav.handlebars | 39 +++ views/users/edit.handlebars | 43 +++ views/users/index.handlebars | 53 ++++ views/users/new.handlebars | 41 +++ views/users/show.handlebars | 18 ++ 15 files changed, 965 insertions(+) create mode 100644 app.js create mode 100644 migrations/20170406061333-create-user.js create mode 100644 migrations/20170406061840-create-post.js create mode 100644 migrations/20170406062118-create-comment.js create mode 100644 models/userModel.js create mode 100644 queries.js create mode 100644 repl.js create mode 100644 routers/users.js create mode 100644 seeders/20170406062230-users.js create mode 100644 views/layouts/application.handlebars create mode 100644 views/shared/_nav.handlebars create mode 100644 views/users/edit.handlebars create mode 100644 views/users/index.handlebars create mode 100644 views/users/new.handlebars create mode 100644 views/users/show.handlebars diff --git a/app.js b/app.js new file mode 100644 index 0000000..229e4b8 --- /dev/null +++ b/app.js @@ -0,0 +1,101 @@ +var express = require('express'); +var app = express(); + + +// ---------------------------------------- +// Body Parser +// ---------------------------------------- +var bodyParser = require('body-parser'); +app.use(bodyParser.urlencoded({ extended: true })); + + +// ---------------------------------------- +// Method Override +// ---------------------------------------- +const methodOverride = require('method-override'); +const getPostSupport = require('express-method-override-get-post-support'); + + +app.use(methodOverride( + getPostSupport.callback, + getPostSupport.options // { methods: ['POST', 'GET'] } +)); + + +// ---------------------------------------- +// Public +// ---------------------------------------- +app.use(express.static(`${__dirname}/public`)); + + +// ---------------------------------------- +// Logging +// ---------------------------------------- +var morgan = require('morgan'); +app.use(morgan('tiny')); +app.use((req, res, next) => { + ['query', 'params', 'body'].forEach((key) => { + if (req[key]) { + var capKey = key[0].toUpperCase() + key.substr(1); + var value = JSON.stringify(req[key], null, 2); + console.log(`${ capKey }: ${ value }`); + } + }); + next(); +}); + + +// ---------------------------------------- +// Routes +// ---------------------------------------- +var usersRoutes = require('./routers/users'); +app.use('/', usersRoutes); + + +// ---------------------------------------- +// Template Engine +// ---------------------------------------- +var expressHandlebars = require('express-handlebars'); + +var hbs = expressHandlebars.create({ + partialsDir: 'views/', + defaultLayout: 'application' +}); + +app.engine('handlebars', hbs.engine); +app.set('view engine', 'handlebars'); + + +// ---------------------------------------- +// Server +// ---------------------------------------- +var port = process.env.PORT || + process.argv[2] || + 3000; +var host = 'localhost'; + +var args; +process.env.NODE_ENV === 'production' ? + args = [port] : + args = [port, host]; + +args.push(() => { + console.log(`Listening: http://${ host }:${ port }`); +}); + +app.listen.apply(app, args); + + + + +module.exports = app; + + + + + + + + + + diff --git a/migrations/20170406061333-create-user.js b/migrations/20170406061333-create-user.js new file mode 100644 index 0000000..5f5f4b1 --- /dev/null +++ b/migrations/20170406061333-create-user.js @@ -0,0 +1,48 @@ +'use strict'; +module.exports = { + up: function(queryInterface, Sequelize) { + return queryInterface.createTable('Users', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + fname: { + type: Sequelize.STRING, + allowNull: false + }, + lname: { + type: Sequelize.STRING, + allowNull: false + }, + username: { + type: Sequelize.STRING, + allowNull: false + }, + email: { + type: Sequelize.STRING, + allowNull: false + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + } + }); + }, + down: function(queryInterface, Sequelize) { + return queryInterface.dropTable('Users'); + } +}; + + + + + + diff --git a/migrations/20170406061840-create-post.js b/migrations/20170406061840-create-post.js new file mode 100644 index 0000000..9aaa34d --- /dev/null +++ b/migrations/20170406061840-create-post.js @@ -0,0 +1,38 @@ +'use strict'; +module.exports = { + up: function(queryInterface, Sequelize) { + return queryInterface.createTable('Posts', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + title: { + type: Sequelize.STRING + }, + body: { + type: Sequelize.TEXT + }, + publishedDate: { + type: Sequelize.DATE + }, + userId: { + type: Sequelize.INTEGER + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + } + }); + }, + down: function(queryInterface, Sequelize) { + return queryInterface.dropTable('Posts'); + } +}; \ No newline at end of file diff --git a/migrations/20170406062118-create-comment.js b/migrations/20170406062118-create-comment.js new file mode 100644 index 0000000..6c19722 --- /dev/null +++ b/migrations/20170406062118-create-comment.js @@ -0,0 +1,35 @@ +'use strict'; +module.exports = { + up: function(queryInterface, Sequelize) { + return queryInterface.createTable('Comments', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + body: { + type: Sequelize.TEXT + }, + userId: { + type: Sequelize.INTEGER + }, + postId: { + type: Sequelize.INTEGER + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('NOW') + } + }); + }, + down: function(queryInterface, Sequelize) { + return queryInterface.dropTable('Comments'); + } +}; \ No newline at end of file diff --git a/models/userModel.js b/models/userModel.js new file mode 100644 index 0000000..168d253 --- /dev/null +++ b/models/userModel.js @@ -0,0 +1,21 @@ +"use strict"; +module.exports = function(sequelize, DataTypes) { + var User = sequelize.define( + "User", + { + fname: DataTypes.STRING, + lname: DataTypes.STRING, + username: DataTypes.STRING, + email: DataTypes.STRING + }, + { + classMethods: { + associate: function(models) { + // associations can be defined here + } + } + } + ); + + return User; +}; diff --git a/queries.js b/queries.js new file mode 100644 index 0000000..df2d1a2 --- /dev/null +++ b/queries.js @@ -0,0 +1,287 @@ +// ---------------------------------------- +// Simple Find +// ---------------------------------------- + +User.find().then(lg); +User.findOne().then(lg); +User.findById(10).then(lg); +User.findAll().then(lg); + + +// ---------------------------------------- +// Attributes +// ---------------------------------------- + +// Attribute filtering +User.findAll({ + attributes: ['fname', 'lname'] +}).then(lg); + +// Attribute renaming +User.findAll({ + attributes: [ + ['fname', 'firstName'], + ['lname', 'lastName'] + ] +}).then(lg); + +// Attribute aggregation with group +Post.findAll({ + attributes: [ + [sequelize.fn('COUNT', sequelize.col('userId')), 'userCount'] + ], + group: '"userId"' +}).then(lg); + +Post.findAll({ + attributes: [ + ['COUNT("userId")', 'userCount'] + ], + group: '"userId"' +}).then(lg); + +// Attribute exclude +Post.findAll({ + attributes: { exclude: ['body'] } +}).then(lg); + + +// ---------------------------------------- +// Where +// ---------------------------------------- + +// Find +Comment.findAll({ + where: { userId: 1 } +}).then(lg); + +// Update +Comment.update({ + body: 'Dude! What does mine say?' +}, { + where: { userId: 1 } +}).then(lg); + +Comment.update({ + body: 'Dude! What does mine say?' +}, { + where: { userId: 1 }, + limit: 1 +}).then(lg); + +// Destroy +Comment.destroy({ + where: { userId: 1 }, + limit: 1 +}).then(lg); + + +// ---------------------------------------- +// Operators +// ---------------------------------------- + +// Logical +Comment.findAll({ + where: { + $and: [ + { userId: 100 }, + { postId: 2 } + ] + } +}).then(lg); + +Comment.findAll({ + where: { + $or: [ + { userId: 100 }, + { postId: 2 } + ] + } +}).then(lg); + +// Equality +Comment.findAll({ + where: { + userId: { + $lte: 6, + $gte: 3 + } + } +}).then(lg); + +// Not equal +Comment.findAll({ + where: { + postId: { + $ne: 1 + } + } +}).then(lg); + +// Like +User.count({ + where: { + username: { + $like: '%1' + } + } +}).then(lg); + +// Not like +User.count({ + where: { + username: { + $notLike: '%1' + } + } +}).then(lg); + +// In +User.count({ + where: { + id: { + $in: [1, 2] + } + } +}).then(lg); + + +// ---------------------------------------- +// Pagination/Limiting +// ---------------------------------------- + +// Limit +Post.findAll({ + limit: 10 +}).then(lg); + +// Offset +Post.findAll({ + offset: 10, + limit: 10 +}).then(lg); + + +// ---------------------------------------- +// Ordering +// ---------------------------------------- + +// Ascending +Post.findAll({ + attributes: ['title', 'publishedDate'], + order: 'publishedDate' +}).then(lg); + +// Descending +Post.findAll({ + attributes: ['publishedDate'], + order: '"publishedDate" DESC', +}).then(lg); + +// Multiple +Comment.findAll({ + attributes: ['userId', 'postId'], + order: [ + ['userId', 'ASC'], + ['postId', 'DESC'] + ] +}).then(lg); + + +// ---------------------------------------- +// Aggregation +// ---------------------------------------- + +// Count +Post.count({ + where: { + userId: 1 + } +}).then(lg); + +// Max +Post.max('publishedDate').then(lg); + +// Min +Post.min('publishedDate').then(lg); + +// Sum +Post.sum('id').then(lg); + +// Aggregate +Comment.aggregate('"userId"', 'COUNT', { + where: { postId: 1 } +}).then(lg); + +// With findAll +Post.findAll({ + group: '"userId"', + attributes: ['userId', [sequelize.fn('COUNT', sequelize.col('userId')), 'count']] +}).then(lg); + +Post.findAll({ + group: '"userId"', + attributes: ['userId', ['COUNT("userId")', 'count']] +}).then(lg); + + + + + + + +// ---------------------------------------- +// Ignore below this line, not implemented +// ---------------------------------------- + + +// ---------------------------------------- +// Associations and JOINs +// ---------------------------------------- + +// // With findAll on JOIN with include +// Post.findAll({ +// group: ['Comments.postId', 'Post.id'], +// attributes: [ +// ['id', 'postId'], +// [sequelize.fn('COUNT', sequelize.col('Comments.postId')), 'commentCount'] +// ], +// include: [{ model: Comment, attributes: [] }] +// }).then(lg); + + + + + +// // ---------------------------------------- +// // Custom Methods +// // ---------------------------------------- + +// // Class method +// User.findAllNames().then(lg); + +// // Instance method +// User.findById(1).then(u => u.name()).then(lg); + + + + + + + + + + + + + + + + + + + + + + + diff --git a/repl.js b/repl.js new file mode 100644 index 0000000..7e53bf7 --- /dev/null +++ b/repl.js @@ -0,0 +1,40 @@ +// Require the REPL module +// and models +var repl = require('repl').start({}); +var models = require('./models'); + + +// Make the `models` object +// a global variable in the +// REPL +repl.context.models = models; + + +// Make each model a global +// object in the REPL +Object.keys(models).forEach((modelName) => { + repl.context[modelName] = models[modelName]; +}); + + +// Provide a convenience function `lg` +// to pass to `then()` and `catch()` +// to output less verbose values for +// sequelize model query results +repl.context.lg = (data) => { + if (Array.isArray(data)) { + if (data.length && data[0].dataValues) { + data = data.map(item => item.dataValues); + } + } else { + if (data.dataValues) { + data = data.dataValues; + } + } + console.log(data); +}; + + + + + diff --git a/routers/users.js b/routers/users.js new file mode 100644 index 0000000..95f1781 --- /dev/null +++ b/routers/users.js @@ -0,0 +1,132 @@ +var express = require('express'); +var router = express.Router(); +var models = require('./../models'); +var User = models.User; +var sequelize = models.sequelize; + + +// ---------------------------------------- +// Index +// ---------------------------------------- +var onIndex = (req, res) => { + User.findAll() + .then((users) => { + res.render('users/index', { users }); + }) + .catch((e) => res.status(500).send(e.stack)); +}; +router.get('/', onIndex); +router.get('/users', onIndex); + + +// ---------------------------------------- +// New +// ---------------------------------------- +router.get('/users/new', (req, res) => { + res.render('users/new'); +}); + + +// ---------------------------------------- +// Edit +// ---------------------------------------- +router.get('/users/:id/edit', (req, res) => { + User.findById(req.params.id) + .then((user) => { + if (user) { + res.render('users/edit', { user }) + } else { + res.send(404); + } + }) + .catch((e) => res.status(500).send(e.stack)); +}); + + +// ---------------------------------------- +// Show +// ---------------------------------------- +router.get('/users/:id', (req, res) => { + User.findById(req.params.id) + .then((user) => { + if (user) { + res.render('users/show', { user }); + } else { + res.send(404); + } + }) + .catch((e) => res.status(500).send(e.stack)); +}); + + +// ---------------------------------------- +// Create +// ---------------------------------------- +router.post('/users', (req, res) => { + var body = req.body; + + var userParams = { + fname: body.user.fname, + lname: body.user.lname, + username: body.user.username, + email: body.user.email + }; + + User.create(userParams) + .then((user) => { + res.redirect(`/users/${ user.id }`); + }) + .catch((e) => res.status(500).send(e.stack)); +}); + + +// ---------------------------------------- +// Update +// ---------------------------------------- +router.put('/users/:id', (req, res) => { + var userParams = req.body.user; + + User.update({ + fname: userParams.fname, + lname: userParams.lname, + username: userParams.username, + email: userParams.email + }, { + where: { id: req.params.id }, + limit: 1 + }) + .then(() => { + req.method = 'GET'; + res.redirect(`/users/${ req.params.id }`); + }) + .catch((e) => res.status(500).send(e.stack)); +}); + + +// ---------------------------------------- +// Destroy +// ---------------------------------------- +router.delete('/users/:id', (req, res) => { + User.destroy({ + where: { id: req.params.id }, + limit: 1 + }) + .then(() => { + req.method = 'GET'; + res.redirect('/users'); + }) + .catch((e) => res.status(500).send(e.stack)); +}); + + + + +module.exports = router; + + + + + + + + diff --git a/seeders/20170406062230-users.js b/seeders/20170406062230-users.js new file mode 100644 index 0000000..3117aec --- /dev/null +++ b/seeders/20170406062230-users.js @@ -0,0 +1,39 @@ +'use strict'; +var models = require('./../models'); + + +module.exports = { + up: function (queryInterface, Sequelize) { + /* + Add altering commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkInsert('Person', [{ + name: 'John Doe', + isBetaMember: false + }], {}); + */ + var users = []; + for (let i = 0; i < 10; i++) { + users.push({ + fname: `Foo${ i }`, + lname: `Bar${ i }`, + username: `foobar${ i }`, + email: `foobar${ i }@gmail.com` + }); + } + return queryInterface.bulkInsert('Users', users); + }, + + down: function (queryInterface, Sequelize) { + /* + Add reverting commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkDelete('Person', null, {}); + */ + return queryInterface.bulkDelete('Users', null, {}, models.User); + } +}; diff --git a/views/layouts/application.handlebars b/views/layouts/application.handlebars new file mode 100644 index 0000000..1a23c60 --- /dev/null +++ b/views/layouts/application.handlebars @@ -0,0 +1,30 @@ + + + + + + + + Demo Exploring Sequelize + {{#if title }} + | {{ title }} + {{/if }} + + + + + + + + + + + + + {{> shared/_nav }} +
+ {{{ body }}} +
+ + + diff --git a/views/shared/_nav.handlebars b/views/shared/_nav.handlebars new file mode 100644 index 0000000..00c18c6 --- /dev/null +++ b/views/shared/_nav.handlebars @@ -0,0 +1,39 @@ + + + + + + + + + + + + diff --git a/views/users/edit.handlebars b/views/users/edit.handlebars new file mode 100644 index 0000000..6d13f6c --- /dev/null +++ b/views/users/edit.handlebars @@ -0,0 +1,43 @@ + + + + + +
+ + +

User Info

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/views/users/index.handlebars b/views/users/index.handlebars new file mode 100644 index 0000000..208ccc2 --- /dev/null +++ b/views/users/index.handlebars @@ -0,0 +1,53 @@ + + + + + + +{{#if users.length }} + + + + + + + + + + + + + {{#each users as |user| }} + + + + + + + + + {{/each }} + +
FirstnameLast NameUsernameEmail
+ {{ user.fname }} + + {{ user.lname }} + + {{ user.username }} + + {{ user.email }} + + Edit + + Delete +
+{{else }} +

No users

+{{/if }} diff --git a/views/users/new.handlebars b/views/users/new.handlebars new file mode 100644 index 0000000..0387097 --- /dev/null +++ b/views/users/new.handlebars @@ -0,0 +1,41 @@ + + + + + +
+

User Info

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/views/users/show.handlebars b/views/users/show.handlebars new file mode 100644 index 0000000..f7a2c83 --- /dev/null +++ b/views/users/show.handlebars @@ -0,0 +1,18 @@ + + + + +

First Name: {{ user.fname }}

+

Last Name: {{ user.lname }}

+

Username: {{ user.username }}

+

Email: {{ user.email }}

+ + + + + + From 3702ba6dd8c70cd219c0dfcd1a9298757ab5411d Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Fri, 4 Aug 2017 15:44:03 -0400 Subject: [PATCH 4/7] some html serves calendars with dates like in a pie --- config/config.json | 8 +- migrations/20170406061333-create-user.js | 48 ----- ...-post.js => 20170804173820-create-user.js} | 26 +-- ...t.js => 20170804174505-create-calendar.js} | 21 +-- models/calendar.js | 14 ++ models/index.js | 13 ++ models/{userModel.js => user.js} | 3 +- npm-debug.log | 28 +++ package.json | 5 +- routers/router.js | 32 ---- routers/users.js | 176 ++++++++++++------ seeders/20170406062230-users.js | 21 +-- seeders/20170804175351-users.js | 35 ++++ seeders/20170804175414-calendarNodes.js | 33 ++++ views/calendar/edit.handlebars | 23 +++ views/calendar/index.handlebars | 45 +++++ views/calendar/new.handlebars | 21 +++ views/calendar/show.handlebars | 10 + views/shared/_nav.handlebars | 10 +- 19 files changed, 385 insertions(+), 187 deletions(-) delete mode 100644 migrations/20170406061333-create-user.js rename migrations/{20170406061840-create-post.js => 20170804173820-create-user.js} (58%) rename migrations/{20170406062118-create-comment.js => 20170804174505-create-calendar.js} (58%) create mode 100644 models/calendar.js rename models/{userModel.js => user.js} (83%) create mode 100644 npm-debug.log delete mode 100644 routers/router.js create mode 100644 seeders/20170804175351-users.js create mode 100644 seeders/20170804175414-calendarNodes.js create mode 100644 views/calendar/edit.handlebars create mode 100644 views/calendar/index.handlebars create mode 100644 views/calendar/new.handlebars create mode 100644 views/calendar/show.handlebars diff --git a/config/config.json b/config/config.json index 41802d2..0bb8630 100644 --- a/config/config.json +++ b/config/config.json @@ -1,15 +1,15 @@ { "development": { - "username": "root", + "username": "highdefinition", "password": null, - "database": "database_development", + "database": "seq", "host": "127.0.0.1", "dialect": "postgres" }, "test": { - "username": "root", + "username": "highdefinition", "password": null, - "database": "database_test", + "database": "seq", "host": "127.0.0.1", "dialect": "postgres" }, diff --git a/migrations/20170406061333-create-user.js b/migrations/20170406061333-create-user.js deleted file mode 100644 index 5f5f4b1..0000000 --- a/migrations/20170406061333-create-user.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; -module.exports = { - up: function(queryInterface, Sequelize) { - return queryInterface.createTable('Users', { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER - }, - fname: { - type: Sequelize.STRING, - allowNull: false - }, - lname: { - type: Sequelize.STRING, - allowNull: false - }, - username: { - type: Sequelize.STRING, - allowNull: false - }, - email: { - type: Sequelize.STRING, - allowNull: false - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') - } - }); - }, - down: function(queryInterface, Sequelize) { - return queryInterface.dropTable('Users'); - } -}; - - - - - - diff --git a/migrations/20170406061840-create-post.js b/migrations/20170804173820-create-user.js similarity index 58% rename from migrations/20170406061840-create-post.js rename to migrations/20170804173820-create-user.js index 9aaa34d..0a17d33 100644 --- a/migrations/20170406061840-create-post.js +++ b/migrations/20170804173820-create-user.js @@ -1,38 +1,38 @@ -'use strict'; +"use strict"; module.exports = { up: function(queryInterface, Sequelize) { - return queryInterface.createTable('Posts', { + return queryInterface.createTable("Users", { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, - title: { + fname: { type: Sequelize.STRING }, - body: { - type: Sequelize.TEXT + lname: { + type: Sequelize.STRING }, - publishedDate: { - type: Sequelize.DATE + username: { + type: Sequelize.STRING }, - userId: { - type: Sequelize.INTEGER + email: { + type: Sequelize.STRING }, createdAt: { allowNull: false, type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') + defaultValue: Sequelize.fn("NOW") }, updatedAt: { allowNull: false, type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') + defaultValue: Sequelize.fn("NOW") } }); }, down: function(queryInterface, Sequelize) { - return queryInterface.dropTable('Posts'); + return queryInterface.dropTable("Users"); } -}; \ No newline at end of file +}; diff --git a/migrations/20170406062118-create-comment.js b/migrations/20170804174505-create-calendar.js similarity index 58% rename from migrations/20170406062118-create-comment.js rename to migrations/20170804174505-create-calendar.js index 6c19722..75fb27a 100644 --- a/migrations/20170406062118-create-comment.js +++ b/migrations/20170804174505-create-calendar.js @@ -1,35 +1,32 @@ -'use strict'; +"use strict"; module.exports = { up: function(queryInterface, Sequelize) { - return queryInterface.createTable('Comments', { + return queryInterface.createTable("Calendars", { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, - body: { - type: Sequelize.TEXT + name: { + type: Sequelize.STRING }, userId: { - type: Sequelize.INTEGER - }, - postId: { - type: Sequelize.INTEGER + type: Sequelize.STRING }, createdAt: { allowNull: false, type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') + defaultValue: Sequelize.fn("NOW") }, updatedAt: { allowNull: false, type: Sequelize.DATE, - defaultValue: Sequelize.fn('NOW') + defaultValue: Sequelize.fn("NOW") } }); }, down: function(queryInterface, Sequelize) { - return queryInterface.dropTable('Comments'); + return queryInterface.dropTable("Calendars"); } -}; \ No newline at end of file +}; diff --git a/models/calendar.js b/models/calendar.js new file mode 100644 index 0000000..9cfe7b3 --- /dev/null +++ b/models/calendar.js @@ -0,0 +1,14 @@ +'use strict'; +module.exports = function(sequelize, DataTypes) { + var Calendar = sequelize.define('Calendar', { + name: DataTypes.STRING, + userId: DataTypes.STRING + }, { + classMethods: { + associate: function(models) { + // associations can be defined here + } + } + }); + return Calendar; +}; \ No newline at end of file diff --git a/models/index.js b/models/index.js index 7540dba..d9f0b51 100644 --- a/models/index.js +++ b/models/index.js @@ -34,3 +34,16 @@ db.sequelize = sequelize; db.Sequelize = Sequelize; module.exports = db; + + + + + + + + + + + + + diff --git a/models/userModel.js b/models/user.js similarity index 83% rename from models/userModel.js rename to models/user.js index 168d253..3a91845 100644 --- a/models/userModel.js +++ b/models/user.js @@ -16,6 +16,7 @@ module.exports = function(sequelize, DataTypes) { } } ); - return User; }; + +//sequelize model:create --name Calendar --attributes "name:string userId:string" diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000..e3e0974 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,28 @@ +0 info it worked if it ends with ok +1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe', +1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', +1 verbose cli 'run', +1 verbose cli 'sequelize', +1 verbose cli 'db:seed:all' ] +2 info using npm@3.10.10 +3 info using node@v6.11.0 +4 verbose stack Error: missing script: sequelize +4 verbose stack at run (C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:151:19) +4 verbose stack at C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:61:5 +4 verbose stack at C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:356:5 +4 verbose stack at checkBinReferences_ (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:320:45) +4 verbose stack at final (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:354:3) +4 verbose stack at then (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:124:5) +4 verbose stack at C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:311:12 +4 verbose stack at C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:78:16 +4 verbose stack at tryToString (fs.js:456:3) +4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:443:12) +5 verbose cwd C:\VikingStuff\PairProgramming\day15_calendareventPlanner_sequelize\assignment_calendar_event_planner +6 error Windows_NT 10.0.15063 +7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "sequelize" "db:seed:all" +8 error node v6.11.0 +9 error npm v3.10.10 +10 error missing script: sequelize +11 error If you need help, you may report this error at: +11 error +12 verbose exit [ 1, true ] diff --git a/package.json b/package.json index 06d4874..3204f86 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,10 @@ "description": "I'll pencil you in on Tuesday around noonish?", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "seed": "npm run sql db:migrate:undo:all && npm run sql db:migrate && npm run sql db:seed:all", + "seeds": "npm run sql db:migrate:undo:all && npm run sql db:migrate && npm run sql db:seed:all", + "sql": "node_modules/sequelize-cli/bin/sequelize" }, "repository": { "type": "git", diff --git a/routers/router.js b/routers/router.js deleted file mode 100644 index cef14d1..0000000 --- a/routers/router.js +++ /dev/null @@ -1,32 +0,0 @@ -var express = require('express'); -var router = express.Router(); -var models = require('./../models'); -//var User = models.User; -var sequelize = models.sequelize; - -const exphbs = require('express-handlebars'); -const app = express(); -const port = process.env.PORT || '3000'; - -// parsers -const cookieParser = require('cookie-parser'); -const bodyParser = require('body-parser'); - - -// Templates! -app.engine('handlebars', exphbs({ defaultLayout: 'main' })); -app.set('view engine', 'handlebars'); - - -app.use(bodyParser.urlencoded({ extended: true })); -app.use(cookieParser()); -app.use(express.static(`${__dirname}/public`)); - -app.get('/', (req, res) => { -}); - -app.post('/', (req, res) => {}); - -app.listen(port, () => { - console.log('Serving!'); -}); \ No newline at end of file diff --git a/routers/users.js b/routers/users.js index 95f1781..33d137c 100644 --- a/routers/users.js +++ b/routers/users.js @@ -1,68 +1,101 @@ -var express = require('express'); +var express = require("express"); var router = express.Router(); -var models = require('./../models'); +var models = require("./../models"); var User = models.User; +var Calendar = models.Calendar; var sequelize = models.sequelize; - // ---------------------------------------- // Index // ---------------------------------------- var onIndex = (req, res) => { User.findAll() - .then((users) => { - res.render('users/index', { users }); + .then(users => { + res.render("users/index", { users }); + }) + .catch(e => res.status(500).send(e.stack)); +}; +var onCalendarIndex = (req, res) => { + Calendar.findAll() + .then(calendar => { + res.render("calendar/index", { calendar }); }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); }; -router.get('/', onIndex); -router.get('/users', onIndex); +//calendar +router.get("/", onIndex); +router.get("/users", onIndex); +//calendar +router.get("/calendar", onCalendarIndex); // ---------------------------------------- // New // ---------------------------------------- -router.get('/users/new', (req, res) => { - res.render('users/new'); +router.get("/users/new", (req, res) => { + res.render("users/new"); +}); +//calendar +router.get("/calendar/new", (req, res) => { + res.render("calendar/new"); }); - // ---------------------------------------- // Edit // ---------------------------------------- -router.get('/users/:id/edit', (req, res) => { +router.get("/users/:id/edit", (req, res) => { User.findById(req.params.id) - .then((user) => { + .then(user => { if (user) { - res.render('users/edit', { user }) + res.render("users/edit", { user }); } else { res.send(404); } }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); +}); +//calendar +router.get("/calendar/:id/edit", (req, res) => { + User.findById(req.params.id) + .then(user => { + if (user) { + res.render("calendar/edit", { user }); + } else { + res.send(404); + } + }) + .catch(e => res.status(500).send(e.stack)); }); - - // ---------------------------------------- // Show // ---------------------------------------- -router.get('/users/:id', (req, res) => { +router.get("/users/:id", (req, res) => { User.findById(req.params.id) - .then((user) => { + .then(user => { if (user) { - res.render('users/show', { user }); + res.render("users/show", { user }); } else { res.send(404); } }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); +}); +router.get("/calendar/:id", (req, res) => { + Calendar.findById(req.params.id) + .then(calendar => { + if (calendar) { + res.render("calendar/show", { calendar }); + } else { + res.send(404); + } + }) + .catch(e => res.status(500).send(e.stack)); }); - // ---------------------------------------- // Create // ---------------------------------------- -router.post('/users', (req, res) => { +router.post("/users", (req, res) => { var body = req.body; var userParams = { @@ -73,60 +106,91 @@ router.post('/users', (req, res) => { }; User.create(userParams) - .then((user) => { - res.redirect(`/users/${ user.id }`); + .then(user => { + res.redirect(`/users/${user.id}`); }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); }); +router.post("/calendar", (req, res) => { + var body = req.body; + var calendarParams = { + name: body.calendar.name, + userId: body.calendar.userId + }; + Calendar.create(calendarParams) + .then(calendar => { + res.redirect(`/calendar/${calendar.id}`); + }) + .catch(e => res.status(500).send(e.stack)); +}); // ---------------------------------------- // Update // ---------------------------------------- -router.put('/users/:id', (req, res) => { +router.put("/users/:id", (req, res) => { var userParams = req.body.user; - User.update({ - fname: userParams.fname, - lname: userParams.lname, - username: userParams.username, - email: userParams.email - }, { - where: { id: req.params.id }, - limit: 1 - }) + User.update( + { + fname: userParams.fname, + lname: userParams.lname, + username: userParams.username, + email: userParams.email + }, + { + where: { id: req.params.id }, + limit: 1 + } + ) .then(() => { - req.method = 'GET'; - res.redirect(`/users/${ req.params.id }`); + req.method = "GET"; + res.redirect(`/users/${req.params.id}`); }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); }); +router.put("/calendar/:id", (req, res) => { + var userParams = req.body.user; - + Calendar.update( + { + name: userParams.name, + userId: userParams.userId + }, + { + where: { id: req.params.id }, + limit: 1 + } + ) + .then(() => { + req.method = "GET"; + res.redirect(`/calendar/${req.params.id}`); + }) + .catch(e => res.status(500).send(e.stack)); +}); // ---------------------------------------- // Destroy // ---------------------------------------- -router.delete('/users/:id', (req, res) => { +router.delete("/users/:id", (req, res) => { User.destroy({ where: { id: req.params.id }, limit: 1 }) .then(() => { - req.method = 'GET'; - res.redirect('/users'); + req.method = "GET"; + res.redirect("/users"); }) - .catch((e) => res.status(500).send(e.stack)); + .catch(e => res.status(500).send(e.stack)); +}); +router.delete("/calendar/:id", (req, res) => { + Calendar.destroy({ + where: { id: req.params.id }, + limit: 1 + }) + .then(() => { + req.method = "GET"; + res.redirect("/calendar"); + }) + .catch(e => res.status(500).send(e.stack)); }); - - - - module.exports = router; - - - - - - - - diff --git a/seeders/20170406062230-users.js b/seeders/20170406062230-users.js index 3117aec..42c41a5 100644 --- a/seeders/20170406062230-users.js +++ b/seeders/20170406062230-users.js @@ -1,9 +1,8 @@ -'use strict'; -var models = require('./../models'); - +"use strict"; +var models = require("./../models"); module.exports = { - up: function (queryInterface, Sequelize) { + up: function(queryInterface, Sequelize) { /* Add altering commands here. Return a promise to correctly handle asynchronicity. @@ -17,16 +16,16 @@ module.exports = { var users = []; for (let i = 0; i < 10; i++) { users.push({ - fname: `Foo${ i }`, - lname: `Bar${ i }`, - username: `foobar${ i }`, - email: `foobar${ i }@gmail.com` + fname: `Foo${i}`, + lname: `Bar${i}`, + username: `foobar${i}`, + email: `foobar${i}@gmail.com` }); } - return queryInterface.bulkInsert('Users', users); + return queryInterface.bulkInsert("Users", users); }, - down: function (queryInterface, Sequelize) { + down: function(queryInterface, Sequelize) { /* Add reverting commands here. Return a promise to correctly handle asynchronicity. @@ -34,6 +33,6 @@ module.exports = { Example: return queryInterface.bulkDelete('Person', null, {}); */ - return queryInterface.bulkDelete('Users', null, {}, models.User); + return queryInterface.bulkDelete("Users", null, {}, models.User); } }; diff --git a/seeders/20170804175351-users.js b/seeders/20170804175351-users.js new file mode 100644 index 0000000..82807e0 --- /dev/null +++ b/seeders/20170804175351-users.js @@ -0,0 +1,35 @@ +module.exports = { + up: function(queryInterface, Sequelize) { + /* + Add altering commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkInsert('Person', [{ + name: 'John Doe', + isBetaMember: false + }], {}); + */ + var users = []; + for (let i = 0; i < 10; i++) { + users.push({ + fname: `Foo${i}`, + lname: `Bar${i}`, + username: `foobar${i}`, + email: `foobar${i}@gmail.com` + }); + } + return queryInterface.bulkInsert("Users", users); + }, + + down: function(queryInterface, Sequelize) { + /* + Add reverting commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkDelete('Person', null, {}); + */ + return queryInterface.bulkDelete("Users", null, {}, models.User); + } +}; diff --git a/seeders/20170804175414-calendarNodes.js b/seeders/20170804175414-calendarNodes.js new file mode 100644 index 0000000..ce87de4 --- /dev/null +++ b/seeders/20170804175414-calendarNodes.js @@ -0,0 +1,33 @@ +module.exports = { + up: function(queryInterface, Sequelize) { + /* + Add altering commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkInsert('Person', [{ + name: 'John Doe', + isBetaMember: false + }], {}); + */ + var calendarNodes = []; + for (let i = 0; i < 10; i++) { + users.push({ + name: `Foo${i}`, + userId: "User${ i }" + }); + } + return queryInterface.bulkInsert("Calendar", calendarNodes); + }, + + down: function(queryInterface, Sequelize) { + /* + Add reverting commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.bulkDelete('Person', null, {}); + */ + return queryInterface.bulkDelete("Calendar", null, {}, models.User); + } +}; diff --git a/views/calendar/edit.handlebars b/views/calendar/edit.handlebars new file mode 100644 index 0000000..f8f1a95 --- /dev/null +++ b/views/calendar/edit.handlebars @@ -0,0 +1,23 @@ + + + + + +
+ + +

Calendar Info

+
+ + +
+
+ + +
+
+ +
+
diff --git a/views/calendar/index.handlebars b/views/calendar/index.handlebars new file mode 100644 index 0000000..ea8723e --- /dev/null +++ b/views/calendar/index.handlebars @@ -0,0 +1,45 @@ + + + + + + +{{#if calendar.length }} + + + + + + + + + + + {{#each calendar as |calendarNode| }} + + + + + + + {{/each }} + +
calendar name Creator: User Id
+ {{ calendarNode.name }} + + {{ calendarNode.userId }} + + Edit + + Delete +
+{{else }} +

No calendars

+{{/if }} diff --git a/views/calendar/new.handlebars b/views/calendar/new.handlebars new file mode 100644 index 0000000..4198ed0 --- /dev/null +++ b/views/calendar/new.handlebars @@ -0,0 +1,21 @@ + + + + + +
+

Calendar Info

+
+ + +
+
+ + +
+
+ +
+
diff --git a/views/calendar/show.handlebars b/views/calendar/show.handlebars new file mode 100644 index 0000000..34359ec --- /dev/null +++ b/views/calendar/show.handlebars @@ -0,0 +1,10 @@ + + + + +

Name: {{ calendar.name }}

+

Creator: {{ calendar.userId }}

diff --git a/views/shared/_nav.handlebars b/views/shared/_nav.handlebars index 00c18c6..e7d10ca 100644 --- a/views/shared/_nav.handlebars +++ b/views/shared/_nav.handlebars @@ -21,6 +21,7 @@ @@ -28,12 +29,3 @@ - - - - - - - - - From 9575adda15fdc12390c1534b00c7062acacef71a Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Fri, 4 Aug 2017 17:08:39 -0400 Subject: [PATCH 5/7] adding events --- migrations/20170804200425-create-calEvent.js | 44 +++++++ models/calEvent.js | 22 ++++ queries.js | 131 ++++++------------- routers/users.js | 39 ++++-- views/calendar/edit.handlebars | 6 +- views/calendar/new.handlebars | 5 +- views/calendar/show.handlebars | 8 +- views/events/edit.handlebars | 36 +++++ views/events/new.handlebars | 37 ++++++ views/events/show.handlebars | 10 ++ 10 files changed, 229 insertions(+), 109 deletions(-) create mode 100644 migrations/20170804200425-create-calEvent.js create mode 100644 models/calEvent.js create mode 100644 views/events/edit.handlebars create mode 100644 views/events/new.handlebars create mode 100644 views/events/show.handlebars diff --git a/migrations/20170804200425-create-calEvent.js b/migrations/20170804200425-create-calEvent.js new file mode 100644 index 0000000..044a536 --- /dev/null +++ b/migrations/20170804200425-create-calEvent.js @@ -0,0 +1,44 @@ +"use strict"; +module.exports = { + up: function(queryInterface, Sequelize) { + return queryInterface.createTable("Events", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + name: { + type: Sequelize.STRING + }, + description: { + type: Sequelize.STRING + }, + date: { + type: Sequelize.STRING + }, + start: { + type: Sequelize.STRING + }, + end: { + type: Sequelize.STRING + }, + calendarId: { + type: Sequelize.STRING + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn("NOW") + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn("NOW") + } + }); + }, + down: function(queryInterface, Sequelize) { + return queryInterface.dropTable("calEvents"); + } +}; diff --git a/models/calEvent.js b/models/calEvent.js new file mode 100644 index 0000000..bb3614c --- /dev/null +++ b/models/calEvent.js @@ -0,0 +1,22 @@ +"use strict"; +module.exports = function(sequelize, DataTypes) { + var calEvent = sequelize.define( + "Event", + { + name: DataTypes.STRING, + description: DataTypes.STRING, + date: DataTypes.STRING, + start: DataTypes.STRING, + end: DataTypes.STRING, + calendarId: DataTypes.STRING + }, + { + classMethods: { + associate: function(models) { + // associations can be defined here + } + } + } + ); + return calEvent; +}; diff --git a/queries.js b/queries.js index df2d1a2..f90017c 100644 --- a/queries.js +++ b/queries.js @@ -7,45 +7,36 @@ User.findOne().then(lg); User.findById(10).then(lg); User.findAll().then(lg); - // ---------------------------------------- // Attributes // ---------------------------------------- // Attribute filtering User.findAll({ - attributes: ['fname', 'lname'] + attributes: ["fname", "lname"] }).then(lg); // Attribute renaming User.findAll({ - attributes: [ - ['fname', 'firstName'], - ['lname', 'lastName'] - ] + attributes: [["fname", "firstName"], ["lname", "lastName"]] }).then(lg); // Attribute aggregation with group Post.findAll({ - attributes: [ - [sequelize.fn('COUNT', sequelize.col('userId')), 'userCount'] - ], + attributes: [[sequelize.fn("COUNT", sequelize.col("userId")), "userCount"]], group: '"userId"' }).then(lg); Post.findAll({ - attributes: [ - ['COUNT("userId")', 'userCount'] - ], + attributes: [['COUNT("userId")', "userCount"]], group: '"userId"' }).then(lg); // Attribute exclude Post.findAll({ - attributes: { exclude: ['body'] } + attributes: { exclude: ["body"] } }).then(lg); - // ---------------------------------------- // Where // ---------------------------------------- @@ -56,18 +47,24 @@ Comment.findAll({ }).then(lg); // Update -Comment.update({ - body: 'Dude! What does mine say?' -}, { - where: { userId: 1 } -}).then(lg); - -Comment.update({ - body: 'Dude! What does mine say?' -}, { - where: { userId: 1 }, - limit: 1 -}).then(lg); +Comment.update( + { + body: "Dude! What does mine say?" + }, + { + where: { userId: 1 } + } +).then(lg); + +Comment.update( + { + body: "Dude! What does mine say?" + }, + { + where: { userId: 1 }, + limit: 1 + } +).then(lg); // Destroy Comment.destroy({ @@ -75,7 +72,6 @@ Comment.destroy({ limit: 1 }).then(lg); - // ---------------------------------------- // Operators // ---------------------------------------- @@ -83,19 +79,13 @@ Comment.destroy({ // Logical Comment.findAll({ where: { - $and: [ - { userId: 100 }, - { postId: 2 } - ] + $and: [{ userId: 100 }, { postId: 2 }] } }).then(lg); Comment.findAll({ where: { - $or: [ - { userId: 100 }, - { postId: 2 } - ] + $or: [{ userId: 100 }, { postId: 2 }] } }).then(lg); @@ -122,7 +112,7 @@ Comment.findAll({ User.count({ where: { username: { - $like: '%1' + $like: "%1" } } }).then(lg); @@ -131,7 +121,7 @@ User.count({ User.count({ where: { username: { - $notLike: '%1' + $notLike: "%1" } } }).then(lg); @@ -145,7 +135,6 @@ User.count({ } }).then(lg); - // ---------------------------------------- // Pagination/Limiting // ---------------------------------------- @@ -161,33 +150,28 @@ Post.findAll({ limit: 10 }).then(lg); - // ---------------------------------------- // Ordering // ---------------------------------------- // Ascending Post.findAll({ - attributes: ['title', 'publishedDate'], - order: 'publishedDate' + attributes: ["title", "publishedDate"], + order: "publishedDate" }).then(lg); // Descending Post.findAll({ - attributes: ['publishedDate'], - order: '"publishedDate" DESC', + attributes: ["publishedDate"], + order: '"publishedDate" DESC' }).then(lg); // Multiple Comment.findAll({ - attributes: ['userId', 'postId'], - order: [ - ['userId', 'ASC'], - ['postId', 'DESC'] - ] + attributes: ["userId", "postId"], + order: [["userId", "ASC"], ["postId", "DESC"]] }).then(lg); - // ---------------------------------------- // Aggregation // ---------------------------------------- @@ -200,41 +184,37 @@ Post.count({ }).then(lg); // Max -Post.max('publishedDate').then(lg); +Post.max("publishedDate").then(lg); // Min -Post.min('publishedDate').then(lg); +Post.min("publishedDate").then(lg); // Sum -Post.sum('id').then(lg); +Post.sum("id").then(lg); // Aggregate -Comment.aggregate('"userId"', 'COUNT', { +Comment.aggregate('"userId"', "COUNT", { where: { postId: 1 } }).then(lg); // With findAll Post.findAll({ group: '"userId"', - attributes: ['userId', [sequelize.fn('COUNT', sequelize.col('userId')), 'count']] + attributes: [ + "userId", + [sequelize.fn("COUNT", sequelize.col("userId")), "count"] + ] }).then(lg); Post.findAll({ group: '"userId"', - attributes: ['userId', ['COUNT("userId")', 'count']] + attributes: ["userId", ['COUNT("userId")', "count"]] }).then(lg); - - - - - - // ---------------------------------------- // Ignore below this line, not implemented // ---------------------------------------- - // ---------------------------------------- // Associations and JOINs // ---------------------------------------- @@ -249,10 +229,6 @@ Post.findAll({ // include: [{ model: Comment, attributes: [] }] // }).then(lg); - - - - // // ---------------------------------------- // // Custom Methods // // ---------------------------------------- @@ -262,26 +238,3 @@ Post.findAll({ // // Instance method // User.findById(1).then(u => u.name()).then(lg); - - - - - - - - - - - - - - - - - - - - - - - diff --git a/routers/users.js b/routers/users.js index 33d137c..9bbc308 100644 --- a/routers/users.js +++ b/routers/users.js @@ -3,6 +3,7 @@ var router = express.Router(); var models = require("./../models"); var User = models.User; var Calendar = models.Calendar; +var Calevent = models.Calevent; var sequelize = models.sequelize; // ---------------------------------------- @@ -23,7 +24,6 @@ var onCalendarIndex = (req, res) => { .catch(e => res.status(500).send(e.stack)); }; //calendar - router.get("/", onIndex); router.get("/users", onIndex); //calendar @@ -39,7 +39,9 @@ router.get("/users/new", (req, res) => { router.get("/calendar/new", (req, res) => { res.render("calendar/new"); }); - +router.get("/calendar/:id/event/new", (req, res) => { + res.render("events/new", { calender: req.params.id }); +}); // ---------------------------------------- // Edit // ---------------------------------------- @@ -56,10 +58,10 @@ router.get("/users/:id/edit", (req, res) => { }); //calendar router.get("/calendar/:id/edit", (req, res) => { - User.findById(req.params.id) - .then(user => { - if (user) { - res.render("calendar/edit", { user }); + Calendar.findById(req.params.id) + .then(calendar => { + if (calendar) { + res.render("calendar/edit", { calendar }); } else { res.send(404); } @@ -80,6 +82,7 @@ router.get("/users/:id", (req, res) => { }) .catch(e => res.status(500).send(e.stack)); }); + router.get("/calendar/:id", (req, res) => { Calendar.findById(req.params.id) .then(calendar => { @@ -125,6 +128,24 @@ router.post("/calendar", (req, res) => { }) .catch(e => res.status(500).send(e.stack)); }); +router.post("/calendar/:id", (req, res) => { + var body = req.body; + + var eventParams = { + name: body.event.name, + description: body.event.description, + date: body.event.date, + start: body.event.start, + end: body.event.end, + calenderId: body.event.calenderId + }; + + Calevent.create(eventParams) + .then(event => { + res.redirect(`/calendar/${event.calendarId}`); + }) + .catch(e => res.status(500).send(e.stack)); +}); // ---------------------------------------- // Update // ---------------------------------------- @@ -150,12 +171,12 @@ router.put("/users/:id", (req, res) => { .catch(e => res.status(500).send(e.stack)); }); router.put("/calendar/:id", (req, res) => { - var userParams = req.body.user; + var calendarParams = req.body.calendar; Calendar.update( { - name: userParams.name, - userId: userParams.userId + name: calendarParams.name, + userId: calendarParams.userId }, { where: { id: req.params.id }, diff --git a/views/calendar/edit.handlebars b/views/calendar/edit.handlebars index f8f1a95..b5d5b1b 100644 --- a/views/calendar/edit.handlebars +++ b/views/calendar/edit.handlebars @@ -5,7 +5,7 @@ -
+

Calendar Info

@@ -13,10 +13,6 @@ -
- - -
diff --git a/views/calendar/new.handlebars b/views/calendar/new.handlebars index 4198ed0..debe682 100644 --- a/views/calendar/new.handlebars +++ b/views/calendar/new.handlebars @@ -11,10 +11,7 @@ -
- - -
+
diff --git a/views/calendar/show.handlebars b/views/calendar/show.handlebars index 34359ec..d37c16d 100644 --- a/views/calendar/show.handlebars +++ b/views/calendar/show.handlebars @@ -2,9 +2,13 @@

Name: {{ calendar.name }}

Creator: {{ calendar.userId }}

+ + + + + New Event diff --git a/views/events/edit.handlebars b/views/events/edit.handlebars new file mode 100644 index 0000000..298354d --- /dev/null +++ b/views/events/edit.handlebars @@ -0,0 +1,36 @@ + + + + + + + + +

Event Info

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
diff --git a/views/events/new.handlebars b/views/events/new.handlebars new file mode 100644 index 0000000..ee6f508 --- /dev/null +++ b/views/events/new.handlebars @@ -0,0 +1,37 @@ + + + + + +
+

Event Info

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +

{{calender}}

+
+
+ +
+
diff --git a/views/events/show.handlebars b/views/events/show.handlebars new file mode 100644 index 0000000..42d4965 --- /dev/null +++ b/views/events/show.handlebars @@ -0,0 +1,10 @@ + + + + +

Name: {{ calendar.name }}

+

Creator: {{ calendar.userId }}

From 9e3cdda82f1f409adf9c501bdc475b221f85be90 Mon Sep 17 00:00:00 2001 From: EdTriplett Date: Fri, 4 Aug 2017 18:51:22 -0400 Subject: [PATCH 6/7] Werking! --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 5 +- README.md | 2 + config/config.json | 8 +- migrations/20170804173820-create-user.js | 38 ---- migrations/20170804174505-create-calendar.js | 32 --- migrations/20170804200425-create-calEvent.js | 44 ---- models/calEvent.js | 32 ++- models/calendar.js | 2 + models/user.js | 29 +-- package-lock.json | 224 +++++++++++++++++++ package.json | 3 + routers/users.js | 39 +++- views/calendar/show.handlebars | 7 +- views/events/index.handlebars | 9 + views/events/new.handlebars | 4 +- views/events/show.handlebars | 13 +- 17 files changed, 322 insertions(+), 169 deletions(-) create mode 100644 .DS_Store delete mode 100644 migrations/20170804173820-create-user.js delete mode 100644 migrations/20170804174505-create-calendar.js delete mode 100644 migrations/20170804200425-create-calEvent.js create mode 100644 views/events/index.handlebars diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..363cc480841a4b9d3a0edd760530991f463b2df7 GIT binary patch literal 6148 zcmeHKK~BR!3>?!6Rprtn$Nd67SXJ!{`T<&kDx{E=n!-6ZzRlR{N<~Sp9Ka)aC-HhV z${gYtfUG~7Ctw9&!BEDRE@SAv#t3(wnUTfL*yD^h6m;lE)zb;pF7Zy)5hq;foBpLe zl+yBG+_Rvd!7EzyH#a_ar>-sCkpdM3!hvug90&)(fpB2T0q>HFhpElTg#+Qhzji>s z4~e0iorlWy>EL1`0C~=|f!8)mkdr3J*?FkU3?WrYu2S(4L#mwli%Xx1dy{7is u#CT?0z*;NkVy&2Lt(Z63iXX4)l3sH^I}epj&b-OV@gtzV1j2#eaNrvPrXaik literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index 40b878d..a2398d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -node_modules/ \ No newline at end of file +node_modules/ +migrations/ +seeders/ +models/ \ No newline at end of file diff --git a/README.md b/README.md index d38e0b4..26041cc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # assignment_calendar_event_planner I'll pencil you in on Tuesday around noonish? + +Daniel and Ed \ No newline at end of file diff --git a/config/config.json b/config/config.json index 0bb8630..22fe52c 100644 --- a/config/config.json +++ b/config/config.json @@ -1,15 +1,15 @@ { "development": { - "username": "highdefinition", + "username": "anapaulac", "password": null, - "database": "seq", + "database": "calander_event_planner_development", "host": "127.0.0.1", "dialect": "postgres" }, "test": { - "username": "highdefinition", + "username": "anapaulac", "password": null, - "database": "seq", + "database": "calander_event_planner_test", "host": "127.0.0.1", "dialect": "postgres" }, diff --git a/migrations/20170804173820-create-user.js b/migrations/20170804173820-create-user.js deleted file mode 100644 index 0a17d33..0000000 --- a/migrations/20170804173820-create-user.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -module.exports = { - up: function(queryInterface, Sequelize) { - return queryInterface.createTable("Users", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER - }, - fname: { - type: Sequelize.STRING - }, - lname: { - type: Sequelize.STRING - }, - username: { - type: Sequelize.STRING - }, - email: { - type: Sequelize.STRING - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - } - }); - }, - down: function(queryInterface, Sequelize) { - return queryInterface.dropTable("Users"); - } -}; diff --git a/migrations/20170804174505-create-calendar.js b/migrations/20170804174505-create-calendar.js deleted file mode 100644 index 75fb27a..0000000 --- a/migrations/20170804174505-create-calendar.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -module.exports = { - up: function(queryInterface, Sequelize) { - return queryInterface.createTable("Calendars", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER - }, - name: { - type: Sequelize.STRING - }, - userId: { - type: Sequelize.STRING - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - } - }); - }, - down: function(queryInterface, Sequelize) { - return queryInterface.dropTable("Calendars"); - } -}; diff --git a/migrations/20170804200425-create-calEvent.js b/migrations/20170804200425-create-calEvent.js deleted file mode 100644 index 044a536..0000000 --- a/migrations/20170804200425-create-calEvent.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -module.exports = { - up: function(queryInterface, Sequelize) { - return queryInterface.createTable("Events", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER - }, - name: { - type: Sequelize.STRING - }, - description: { - type: Sequelize.STRING - }, - date: { - type: Sequelize.STRING - }, - start: { - type: Sequelize.STRING - }, - end: { - type: Sequelize.STRING - }, - calendarId: { - type: Sequelize.STRING - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.fn("NOW") - } - }); - }, - down: function(queryInterface, Sequelize) { - return queryInterface.dropTable("calEvents"); - } -}; diff --git a/models/calEvent.js b/models/calEvent.js index bb3614c..03e586a 100644 --- a/models/calEvent.js +++ b/models/calEvent.js @@ -1,22 +1,18 @@ -"use strict"; +'use strict'; module.exports = function(sequelize, DataTypes) { - var calEvent = sequelize.define( - "Event", - { - name: DataTypes.STRING, - description: DataTypes.STRING, - date: DataTypes.STRING, - start: DataTypes.STRING, - end: DataTypes.STRING, - calendarId: DataTypes.STRING - }, - { - classMethods: { - associate: function(models) { - // associations can be defined here - } + var calEvent = sequelize.define('calEvent', { + name: DataTypes.STRING, + description: DataTypes.STRING, + date: DataTypes.STRING, + start: DataTypes.STRING, + end: DataTypes.STRING, + calendarId: DataTypes.STRING + }, { + classMethods: { + associate: function(models) { + // associations can be defined here } } - ); + }); return calEvent; -}; +}; \ No newline at end of file diff --git a/models/calendar.js b/models/calendar.js index 9cfe7b3..df8f5bc 100644 --- a/models/calendar.js +++ b/models/calendar.js @@ -1,8 +1,10 @@ 'use strict'; + module.exports = function(sequelize, DataTypes) { var Calendar = sequelize.define('Calendar', { name: DataTypes.STRING, userId: DataTypes.STRING + }, { classMethods: { associate: function(models) { diff --git a/models/user.js b/models/user.js index 3a91845..ef89269 100644 --- a/models/user.js +++ b/models/user.js @@ -1,22 +1,15 @@ -"use strict"; +'use strict'; module.exports = function(sequelize, DataTypes) { - var User = sequelize.define( - "User", - { - fname: DataTypes.STRING, - lname: DataTypes.STRING, - username: DataTypes.STRING, - email: DataTypes.STRING - }, - { - classMethods: { - associate: function(models) { - // associations can be defined here - } + var User = sequelize.define('User', { + fname: DataTypes.STRING, + lname: DataTypes.STRING, + username: DataTypes.STRING + }, { + classMethods: { + associate: function(models) { + // associations can be defined here } } - ); + }); return User; -}; - -//sequelize model:create --name Calendar --attributes "name:string userId:string" +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3793519..7bd0349 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,15 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", "integrity": "sha512-6qLZpfQFO/g5Ns2e7RsW6brk0Q6Xzwiw7kVVU/XiQNOiJXSojhX76GP457PBYIsNMH2WfcGgcnZB4awFDHrwpA==" }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "requires": { + "mime-types": "2.1.16", + "negotiator": "0.6.1" + } + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -52,6 +61,11 @@ "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=" }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -231,6 +245,11 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, "content-type": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", @@ -292,6 +311,11 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, "dottie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.0.tgz", @@ -302,6 +326,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, "env-cmd": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-5.1.0.tgz", @@ -318,11 +347,66 @@ "is-arrayish": "0.2.1" } }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.7", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.4", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.3", + "serve-static": "1.12.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "requires": { + "ms": "2.0.0" + } + } + } + }, "express-handlebars": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz", @@ -335,6 +419,25 @@ "promise": "7.3.1" } }, + "express-method-override-get-post-support": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/express-method-override-get-post-support/-/express-method-override-get-post-support-0.0.7.tgz", + "integrity": "sha512-aHO/iYL9GV4FoRZACHkhOYfHXVljwu5LbGMOuq8++6K2JpG6437oZt64w1k3Ff6oPq1/0AtsGYnZwyivKUi67A==" + }, + "finalhandler": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz", + "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==", + "requires": { + "debug": "2.6.8", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -349,6 +452,16 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, "function-bind": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", @@ -472,6 +585,11 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=" + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -576,6 +694,32 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "method-override": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.9.tgz", + "integrity": "sha1-vRUfLONM8Bp2ykAKuVwBKxAtj3E=", + "requires": { + "debug": "2.6.8", + "methods": "1.1.2", + "parseurl": "1.3.1", + "vary": "1.1.1" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, "mime-db": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", @@ -651,6 +795,11 @@ "thenify-all": "1.6.0" } }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -738,6 +887,11 @@ "error-ex": "1.3.1" } }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" + }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -751,6 +905,11 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -869,6 +1028,15 @@ "asap": "2.0.6" } }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.4.0" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -879,6 +1047,11 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, "raw-body": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", @@ -946,6 +1119,36 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "requires": { + "debug": "2.6.7", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.1", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "requires": { + "ms": "2.0.0" + } + } + } + }, "sequelize": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.4.2.tgz", @@ -971,6 +1174,17 @@ "wkx": "0.4.1" } }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.3" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -1199,6 +1413,11 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -1218,6 +1437,11 @@ "resolved": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz", "integrity": "sha1-R84j7Y1Ord+p1LjvAHG2zxB418g=" }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" + }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", diff --git a/package.json b/package.json index 3204f86..2bdc6d3 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,11 @@ "dependencies": { "body-parser": "^1.17.2", "cookie-parser": "^1.4.3", + "express": "^4.15.3", "express-handlebars": "^3.0.0", + "express-method-override-get-post-support": "0.0.7", "g": "^2.0.1", + "method-override": "^2.3.9", "morgan": "^1.8.2", "morgan-toolkit": "^1.0.2", "pg": "^7.1.0", diff --git a/routers/users.js b/routers/users.js index 9bbc308..e0cfe58 100644 --- a/routers/users.js +++ b/routers/users.js @@ -3,7 +3,7 @@ var router = express.Router(); var models = require("./../models"); var User = models.User; var Calendar = models.Calendar; -var Calevent = models.Calevent; +var Calevent = models.calEvent; var sequelize = models.sequelize; // ---------------------------------------- @@ -40,7 +40,7 @@ router.get("/calendar/new", (req, res) => { res.render("calendar/new"); }); router.get("/calendar/:id/event/new", (req, res) => { - res.render("events/new", { calender: req.params.id }); + res.render("events/new", { calendar: req.params.id }); }); // ---------------------------------------- // Edit @@ -95,6 +95,35 @@ router.get("/calendar/:id", (req, res) => { .catch(e => res.status(500).send(e.stack)); }); +router.get("/calendar/:id/events", (req, res) => { + Calevent.findAll( + {where: { + calendarId: req.params.id + }} + ) + .then(event => { + if (event) { + res.render("events/index", { event }); + } else { + res.send(404); + } + }) + .catch(e => res.status(500).send(e.stack)); +}) + +router.get("/event/:id", (req, res) => { + Calevent.findById(req.params.id) + .then(calevent => { + if (calevent) { + res.render("events/show", { calevent }); + } else { + res.send(404); + } + }) + .catch(e => res.status(500).send(e.stack)); +}); + + // ---------------------------------------- // Create // ---------------------------------------- @@ -128,7 +157,7 @@ router.post("/calendar", (req, res) => { }) .catch(e => res.status(500).send(e.stack)); }); -router.post("/calendar/:id", (req, res) => { +router.post("/calendar/:id/event", (req, res) => { var body = req.body; var eventParams = { @@ -137,12 +166,12 @@ router.post("/calendar/:id", (req, res) => { date: body.event.date, start: body.event.start, end: body.event.end, - calenderId: body.event.calenderId + calendarId: req.params.id }; Calevent.create(eventParams) .then(event => { - res.redirect(`/calendar/${event.calendarId}`); + res.redirect(`/calendar/${req.params.id}`); }) .catch(e => res.status(500).send(e.stack)); }); diff --git a/views/calendar/show.handlebars b/views/calendar/show.handlebars index d37c16d..d4a4387 100644 --- a/views/calendar/show.handlebars +++ b/views/calendar/show.handlebars @@ -5,10 +5,15 @@ Edit Delete + + {{!-- {{#each calendar.events as |newEvent|}} + {{newEvent}} + {{/each}} --}}

Name: {{ calendar.name }}

Creator: {{ calendar.userId }}

+Show Events - + New Event ++ New Event diff --git a/views/events/index.handlebars b/views/events/index.handlebars new file mode 100644 index 0000000..ddc6d7e --- /dev/null +++ b/views/events/index.handlebars @@ -0,0 +1,9 @@ + + + + diff --git a/views/events/new.handlebars b/views/events/new.handlebars index ee6f508..9861027 100644 --- a/views/events/new.handlebars +++ b/views/events/new.handlebars @@ -5,8 +5,8 @@ -
-

Event Info

+ +

Event Info {{calendar}}

diff --git a/views/events/show.handlebars b/views/events/show.handlebars index 42d4965..94bf748 100644 --- a/views/events/show.handlebars +++ b/views/events/show.handlebars @@ -1,10 +1,11 @@ +

Event: {{ calevent.name }}

+

Description: {{ calevent.description }}

+

Date: {{ calevent.date }}

+

Start: {{ calevent.start }}

+

End: {{ calevent.end }}

-

Name: {{ calendar.name }}

-

Creator: {{ calendar.userId }}

+ + From 247bb70342bf0aed8c827c0cb26b83a0ca88a5b3 Mon Sep 17 00:00:00 2001 From: EdTriplett Date: Fri, 4 Aug 2017 18:52:47 -0400 Subject: [PATCH 7/7] Werking! --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a2398d8..5e15c70 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules/ migrations/ seeders/ -models/ \ No newline at end of file +models/ +config/ \ No newline at end of file