From 55fd966174e08d03f1ac9278cdf82d9c7b2bad15 Mon Sep 17 00:00:00 2001 From: ryanwong Date: Sun, 6 Feb 2022 21:30:08 -0500 Subject: [PATCH] day 8 --- .DS_Store | Bin 14340 -> 14340 bytes day8/README.md | 11 ++ day8/app.js | 44 +++++ day8/bin/www | 90 ++++++++++ day8/models/index.js | 68 ++++++++ day8/models/location.js | 26 +++ day8/package.json | 19 ++ day8/public/stylesheets/style.css | 8 + day8/quiz.html | 277 ++++++++++++++++++++++++++++++ day8/routes/index.js | 9 + day8/routes/users.js | 9 + day8/views/error.jade | 6 + day8/views/index.jade | 5 + day8/views/layout.jade | 7 + 14 files changed, 579 insertions(+) create mode 100644 day8/app.js create mode 100755 day8/bin/www create mode 100644 day8/models/index.js create mode 100644 day8/models/location.js create mode 100644 day8/package.json create mode 100644 day8/public/stylesheets/style.css create mode 100644 day8/quiz.html create mode 100644 day8/routes/index.js create mode 100644 day8/routes/users.js create mode 100644 day8/views/error.jade create mode 100644 day8/views/index.jade create mode 100644 day8/views/layout.jade diff --git a/.DS_Store b/.DS_Store index 9376d455bdd92e5e2c219a9fcf142f7c00c2ab8b..08953d29a6d0e66845ea4b3efa72505333aac45c 100644 GIT binary patch literal 14340 zcmeHNX^a#_6t1@{(A^x{T*43r2NqBiVP=x@Q+y zPz+uXkBBBl@gycDV&X525@Srfm1sPoXw-Q8P!pmCkKiwT)zv*y-BYyT4+hembX9e| z_vWj5^L5vI)lCS2=0Z9~NR$vF;Yn+CEEcyD5}`GBP&qxzjuF@ccy7lN+bSV@NQ~5G zdSi*6T$y%xM+J6K`${}Vk~B&3_Wc7zgI=N&vp?6`n#$x-*egBt>L2eHr9mU`K;VJE z1Azwu4+I`K7Z1?27Y}I+tAjG|K;VJE14R$e=R*WfS~uGD0aja&4lHO0Pvta(w+?J$ z9$@uF?7Gpe53t%YMH|Z$Yi0^|iUG_V`y*5x>qfgiz-nerfSD7pk-^STz(Pm6h^0=T zk<~#Ncp&gVxd&RXi_5+FEcrGybbTJPXYYg$o_Z}xNA&cY!T<6ZNAyEM`C*`qwcE`Q*MtgqVVhsVlGxpllkTGEI z-o2L^$moU{jeZUlBPvIZ8ZAkRqKs3z5`DR$gqbu8MsqU1jb2@wH2YF^yCav&6x+$v zCS4oqRwuXQvSw1xYI)08Piv^My;IMob3@I!LN;w!zms4BNs?u`TMZ2l#~bPvMCux9 z_b-SH$71zydJ*5hUzVoMjjd?Ep?}Zb;eGpWdW1bL!45e{mFMw!1h0!T6!^C!GX`7O z>?u$BmKu5Iq(38yc6f#LuYszF2`d-c0Y-+nr+S+R5@@9*rxLHSA+SjeB1w*@DLj!$KYeh3d z1^L+6DdE}ku8h_#UD^8Sxbao0qD-3HIj9?YDx+;l8a-Mzt!H~T4(VyLZ!7vSYwA07 zEicOx;7~_4*{^+i$<%3TXnJUdW5sk!wvt*cZ7!trT?O6T!!SaTS+bsCVZuRw!jhk+BZhq-W(EUQMxjreCXQ>AvXB&+F-nPf`K z*j@1k>{{D7$h>KHuDDvl(J$DHi&Q_($6(!|<`zj(-`PR2*Ch>e!+@4Wcx!f%&?-sV zLM2V5Oo7_w8BS*;7&pd4;@9 z-XZUj6XYZECHbEGL{5|6$)Dse@()NLg92kA1hb(U=0Fr0U@0tv70?W8VI8c84bTBy zumidw3B51?yC4rH?1S6jcDMuXf(PJHcnltgC*gT`30{Wd@CLjIAHXN@6&qlML*@1C z+9}~{Z1HrpZ`O((BD#j#u37az(e;b5l%o?SPMSPrX7%M))zmL9C zoFBeYQAZ$mWlMRX5)G>(k)}*qtJEoKCGwa_8@Xo+8QT z&c37M7&%VfBJU&XJ|o|dAINXyZ)BVdRWKF#HXXt+6E1`Ka0M)Yt6&Mlk$cNvIkdql zSPg5Ce;u$1I$;ZJg&xpgC-i}Cv9AC_up4fHgK#Ty@J_fN4kHgAL>?Z6V;3I7}A>qeU4%p7+k2s`HG;6^M%D zKI0Jup$@Jq1pPU6s?me%3P442A6!xJ>EOCT&wJY5Zt~!|0#A|L2UiqyI=HTo^O;|k zws~+}0jEgrgDVO)9b8wadGl@8t@7Zy0!@+J2UiqiI=HS7^NC;8b`P#Az!b>^xa@Wc z%D@BX?15=$QHddo^^V;g!><3Bm+_B7`u_bowlh$)O39^GAJGfx7gBa2^$PR++;QVF>F@E{^wrbzQ8=d9Heu(nRk4WxXe%QOC z;_~Ck4xDYVnD3?;O8GH;IAz^hJCft<`B8~AT;pP^cgfzpY?MiP{9!ZZ-L#7l^jc}l zP^{sLFWRmwjjo2rUuM>nb*}8F0>Bv zf3{`>W#9pU2S&2KDEjSLD79QvQLqPUkH+VZ(d^dd|yd4bk Vf9qz!qLhETd?L>7`TX0X@h>owNw@$2 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(%;K7= 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/day8/models/index.js b/day8/models/index.js new file mode 100644 index 0000000..39f447f --- /dev/null +++ b/day8/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/day8/models/location.js b/day8/models/location.js new file mode 100644 index 0000000..7f430bb --- /dev/null +++ b/day8/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/day8/package.json b/day8/package.json new file mode 100644 index 0000000..219c20e --- /dev/null +++ b/day8/package.json @@ -0,0 +1,19 @@ +{ + "name": "day-1", + "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/day8/public/stylesheets/style.css b/day8/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/day8/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/day8/quiz.html b/day8/quiz.html new file mode 100644 index 0000000..0711b0e --- /dev/null +++ b/day8/quiz.html @@ -0,0 +1,277 @@ + + + + + + + + + Quiz + + + + +
+ + +

Quiz

+ +
+ +

+
+ + +
+ +
+
+ + + + \ No newline at end of file diff --git a/day8/routes/index.js b/day8/routes/index.js new file mode 100644 index 0000000..ecca96a --- /dev/null +++ b/day8/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/day8/routes/users.js b/day8/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/day8/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/day8/views/error.jade b/day8/views/error.jade new file mode 100644 index 0000000..51ec12c --- /dev/null +++ b/day8/views/error.jade @@ -0,0 +1,6 @@ +extends layout + +block content + h1= message + h2= error.status + pre #{error.stack} diff --git a/day8/views/index.jade b/day8/views/index.jade new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/day8/views/index.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/day8/views/layout.jade b/day8/views/layout.jade new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/day8/views/layout.jade @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content