From 9ec9c8a4f7f2f13f8bb7a0edbd3c2efc311adf28 Mon Sep 17 00:00:00 2001 From: ryanwong Date: Sun, 6 Feb 2022 20:45:55 -0500 Subject: [PATCH] day 3 --- .DS_Store | Bin 10244 -> 14340 bytes day_1/models/location.js | 5 ++ day_2/models/location.js | 5 ++ day_2/package.json | 2 +- day_3/.DS_Store | Bin 0 -> 6148 bytes day_3/README.md | 68 ++++++++++++++++++++++ day_3/app.js | 44 ++++++++++++++ day_3/bin/www | 90 +++++++++++++++++++++++++++++ day_3/models/index.js | 68 ++++++++++++++++++++++ day_3/models/location.js | 26 +++++++++ day_3/models/rules.js | 28 +++++++++ day_3/models/variables.js | 27 +++++++++ day_3/package.json | 19 ++++++ day_3/public/stylesheets/style.css | 8 +++ day_3/routes/index.js | 9 +++ day_3/routes/users.js | 9 +++ day_3/views/error.jade | 6 ++ day_3/views/index.jade | 5 ++ day_3/views/layout.jade | 7 +++ 19 files changed, 425 insertions(+), 1 deletion(-) create mode 100644 day_3/.DS_Store create mode 100644 day_3/app.js create mode 100755 day_3/bin/www create mode 100644 day_3/models/index.js create mode 100644 day_3/models/location.js create mode 100644 day_3/models/rules.js create mode 100644 day_3/models/variables.js create mode 100644 day_3/package.json create mode 100644 day_3/public/stylesheets/style.css create mode 100644 day_3/routes/index.js create mode 100644 day_3/routes/users.js create mode 100644 day_3/views/error.jade create mode 100644 day_3/views/index.jade create mode 100644 day_3/views/layout.jade diff --git a/.DS_Store b/.DS_Store index bddfa4f52a88788a114f77978695d7459c5139db..9376d455bdd92e5e2c219a9fcf142f7c00c2ab8b 100644 GIT binary patch literal 14340 zcmeHOX>8m?6rPu+#WpE%FUnTkvL&U^(qlL2Hk%%hlM>P>g-x4YY1qRg7MtC4?M>RI zg`#qaQydcFh6)LZR^k^3Duj?Y3T*`fDkumL#}7b4fVc#|;El(-9%pB>sz5~%wq(zE z-h2B#KYyNiGxicfpgETe5fUVXNVwBdt-`}Cgal~GZB$P8qHPkk0Pfpy$GS?$Zqi3W zq%PGTiWX@XH&kE~wXei|3Q3X}Z=c8v4i!vvVh(0nTjQxr9NVO)UitNSLFQGw2zU|j zBH%^9i+~q_(}@5bdvTM_W~F!ZBH%^9i$Ea)w0{WTPRmBS+|Np@>%ap|;i;Ua@YaTP zoCjEK0lRFp%l)jhOwq(kX+Z zz6_3f9!GEQN)Zm!ad4EfmlP}-{}`>Nl<{mCFe0Dc14QgfWN`Vp_GmQ zhjSfu@eyOlUIjcBA4=(l84P{|6_Y9_PdQ7H6h)b;^hO6VBT+ME=8Wc8b{jq05Hknj zcD*~3Nfqj`_$FN&=~HL6WYT6#PitArSWjxGvb{%7Co?0>nOr()Sicix0!fl(xli?t zjz${7O9J7Bx_wImqoGiJgq}q9?USY17lzihUo*IS&*{egx0C zYZOG9mm0$@ECLk|<|A+_9|2i8+t+?&htj7`AI1yo8Zz}v+SsIJ4J`ZAY6FAOp2(y( zWHl=9Nn}#F!L-q*PD{j6iCijXYE7wBRNtc+n@w$(No!k;OxA3%6gTT=OWXQXHD_p7 zYiOVkYprNzs30Gzn&rP>;U&TFs>@nWPCchuRg@VsdxmvGkEgUPF(aX+lX|*;YL-6o3~=Rj;*BDNSkwUeP>QLcQYTpzo)L0Y?#ZI%d%>8UxzoGnJRTF zBw0;vOvU0_%5I7@U{goWFpH+$xb{*B(J$GIL)jo+kHMOK%`K9ozO{q;ULP~et|2Xr z?yai}_|{3%7Ak2O@EAM}Pr`HXBD@4g;B|Nd-hmI` zQwFdiPv=f{oBFJp(4qr&%cA@5II8LB*&3=ACk|>*W@SiCvr}PYM70Tn*)BB2N%I2SPV;GDXfGD zvTrr4fi_qNSHP9Xz;4(CJ+K9~LIO0n76w4K_?Lqb*abJj0k{cScpKac_aPG>Kqel9 zLt}W?o@X2@;jo)`{DAbwHwQvRgJK;&9Eml?AB={h*>ozC?nl4$S#UTnN^UtRkL=hV z--nBkxe{Bk#<<8tNv-4GmC}9}|Gu%vzbl~?YmDn(l*~H*U8(F{ZAY7m{JRoavBtRm zMM@u76R|>iBo1tWW%? zwio$#C9Gl%fq(WGddCSBf%6b;C8inu1mCf{GtbWVc^Thn(f99Hv2}rhE#H}nRzQfL~T))BNE2ZN?$TAB4H{64XK+fYB zHABVAaUp_{bQT3m>6F1CTA1W<*77)3o3$bwsN>)$r85@Czp`NE&Hugmzx_$6H~;67 zQE&dw^+?|QU$jCnwm)V=kawI&5tz)t2I=>IZKc2epGcSFVf7;5Mc_0e0F|xL)@C%y zztJ0OPiII0+^@l%>b#0O-LP(%;K76VEb>YeDMYtyKQR8LRXi}0in%S z>Ya>}{|N9;oG&!_uK?d>X@U7Hljn)bO@1nsxH&<3HOs~a#ms`tAnSmx;06+|AeU^s s_?>w&zlkm*!( { const location = sequelize.define( "location", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, name: DataTypes.STRING, created_at: DataTypes.DATEONLY, updated_at: DataTypes.DATE, diff --git a/day_2/models/location.js b/day_2/models/location.js index f0a885d..7f430bb 100644 --- a/day_2/models/location.js +++ b/day_2/models/location.js @@ -2,6 +2,11 @@ module.exports = (sequelize, DataTypes) => { const location = sequelize.define( "location", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, name: DataTypes.STRING, created_at: DataTypes.DATEONLY, updated_at: DataTypes.DATE, diff --git a/day_2/package.json b/day_2/package.json index 219c20e..699903b 100644 --- a/day_2/package.json +++ b/day_2/package.json @@ -1,5 +1,5 @@ { - "name": "day-1", + "name": "day-2", "version": "0.0.0", "private": true, "scripts": { diff --git a/day_3/.DS_Store b/day_3/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1f753519320383a2d6499ace08690f004c0fe542 GIT binary patch literal 6148 zcmeHKJ5Iwu5S=9fB4{E(L5H~ksnVLroFE(k@)01}I06C%jjuq1H~=&pftEWU4uU8V zZ+2GkZX8oa2+c^l&zYIsdHW=LvP5Kh(@}@0O++mW#^wg51;%k66@4g&K?O=~AFB#P3ggheQF`+5Wp5pYwkO%lNPcQEC zIN6(NFqc#EsLKg?I6W>=Z%WrtWKIwBXnA;XpU3B&$0NuodDP{EJggq8bOR;EbX#Gu z1r}b^=g@tcaR@R>28%Po`uixLwqym+v)Njkf;y`Ls(>mmQ-Hq@5e8%Iun@GL4ovn6 z0Bpi-4bQfx0V8$*V~2$xJTN0mfwI)ND~6Hf@JB8$c323?ax%6u_HmVsyP+6c9sbCs zlZgd&Rs~dnP=SX0Y;*rVtiS(= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/day_3/models/index.js b/day_3/models/index.js new file mode 100644 index 0000000..39f447f --- /dev/null +++ b/day_3/models/index.js @@ -0,0 +1,68 @@ +'use strict'; +/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2020*/ +/** + * Sequelize File + * @copyright 2020 Manaknightdigital Inc. + * @link https://manaknightdigital.com + * @license Proprietary Software licensing + * @author Ryan Wong + * + */ +const fs = require('fs'); +const path = require('path'); +let Sequelize = require('sequelize'); +const basename = path.basename(__filename); +const config = { + DB_DATABASE: 'mysql', + DB_USERNAME: 'root', + DB_PASSWORD: 'root', + DB_ADAPTER: 'mysql', + DB_NAME: 'day_1', + DB_HOSTNAME: 'localhost', + DB_PORT: 3306, +}; + +let db = {}; + +let sequelize = new Sequelize(config.DB_DATABASE, config.DB_USERNAME, config.DB_PASSWORD, { + dialect: config.DB_ADAPTER, + username: config.DB_USERNAME, + password: config.DB_PASSWORD, + database: config.DB_NAME, + host: config.DB_HOSTNAME, + port: config.DB_PORT, + logging: console.log, + timezone: '-04:00', + pool: { + maxConnections: 1, + minConnections: 0, + maxIdleTime: 100, + }, + define: { + timestamps: false, + underscoredAll: true, + underscored: true, + }, +}); + +// sequelize.sync({ force: true }); + +fs.readdirSync(__dirname) + .filter((file) => { + return file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js'; + }) + .forEach((file) => { + var model = sequelize['import'](path.join(__dirname, file)); + db[model.name] = model; + }); + +Object.keys(db).forEach((modelName) => { + if (db[modelName].associate) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; \ No newline at end of file diff --git a/day_3/models/location.js b/day_3/models/location.js new file mode 100644 index 0000000..7f430bb --- /dev/null +++ b/day_3/models/location.js @@ -0,0 +1,26 @@ +module.exports = (sequelize, DataTypes) => { + const location = sequelize.define( + "location", + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: DataTypes.STRING, + created_at: DataTypes.DATEONLY, + updated_at: DataTypes.DATE, + }, + { + timestamps: true, + freezeTableName: true, + tableName: "location", + }, + { + underscoredAll: false, + underscored: false, + } + ); + + return location; +}; \ No newline at end of file diff --git a/day_3/models/rules.js b/day_3/models/rules.js new file mode 100644 index 0000000..4f0c49c --- /dev/null +++ b/day_3/models/rules.js @@ -0,0 +1,28 @@ +module.exports = (sequelize, DataTypes) => { + const rules = sequelize.define( + "rules", + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: DataTypes.STRING, + condition: DataTypes.STRING, + action: DataTypes.STRING, + created_at: DataTypes.DATEONLY, + updated_at: DataTypes.DATE, + }, + { + timestamps: true, + freezeTableName: true, + tableName: "rules", + }, + { + underscoredAll: false, + underscored: false, + } + ); + + return rules; +}; \ No newline at end of file diff --git a/day_3/models/variables.js b/day_3/models/variables.js new file mode 100644 index 0000000..dca3fa7 --- /dev/null +++ b/day_3/models/variables.js @@ -0,0 +1,27 @@ +module.exports = (sequelize, DataTypes) => { + const rules = sequelize.define( + "variables", + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: DataTypes.STRING, + type: DataTypes.STRING, + created_at: DataTypes.DATEONLY, + updated_at: DataTypes.DATE, + }, + { + timestamps: true, + freezeTableName: true, + tableName: "variables", + }, + { + underscoredAll: false, + underscored: false, + } + ); + + return rules; +}; \ No newline at end of file diff --git a/day_3/package.json b/day_3/package.json new file mode 100644 index 0000000..bb8f7e5 --- /dev/null +++ b/day_3/package.json @@ -0,0 +1,19 @@ +{ + "name": "day-3", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "cookie-parser": "~1.4.4", + "cors": "^2.8.5", + "debug": "~2.6.9", + "express": "~4.16.1", + "http-errors": "~1.6.3", + "jade": "~1.11.0", + "morgan": "~1.9.1", + "mysql2": "^2.3.3", + "sequelize": "^6.15.1" + } +} diff --git a/day_3/public/stylesheets/style.css b/day_3/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/day_3/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/day_3/routes/index.js b/day_3/routes/index.js new file mode 100644 index 0000000..ecca96a --- /dev/null +++ b/day_3/routes/index.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('index', { title: 'Express' }); +}); + +module.exports = router; diff --git a/day_3/routes/users.js b/day_3/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/day_3/routes/users.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('respond with a resource'); +}); + +module.exports = router; diff --git a/day_3/views/error.jade b/day_3/views/error.jade new file mode 100644 index 0000000..51ec12c --- /dev/null +++ b/day_3/views/error.jade @@ -0,0 +1,6 @@ +extends layout + +block content + h1= message + h2= error.status + pre #{error.stack} diff --git a/day_3/views/index.jade b/day_3/views/index.jade new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/day_3/views/index.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/day_3/views/layout.jade b/day_3/views/layout.jade new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/day_3/views/layout.jade @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content