Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.49 KB | None | 0 0
  1. // — — — — — — — — HOUSE KEEPING — — — — — — — —
  2. const express = require("express");
  3. const app = express();
  4. const PORT = process.env.PORT || 8080;
  5. // *** database connection ***
  6.  
  7. const methodOverride = require("method-override");
  8. app.use(methodOverride('_method'));
  9. app.set('views', 'views');
  10. app.set("view engine", "ejs");
  11. const bodyParser = require("body-parser");
  12. app.use(bodyParser.urlencoded({extended: true}));
  13.  
  14. app.use(express.static("public"));
  15.  
  16.  
  17. const database_relations = require('./scripts/database_relations.js');
  18.  
  19. // const appJS = require('./scripts/app.js');
  20.  
  21. const knex = require('knex')({
  22. client: 'pg',
  23. connection: {
  24. host : 'ec2-54-163-249-150.compute-1.amazonaws.com',
  25. port : 5432,
  26. database : 'd23iqrm4nh57jc',
  27. user : 'xloftavhtijgjd',
  28. password : 'whhsEn9c7zp3fM5wN_epxexToa',
  29. ssl : true
  30. }
  31. });
  32.  
  33.  
  34. app.use('/db_curtain', database_relations(knex));
  35.  
  36.  
  37.  
  38. // ———————— INSERT EVENT INTO DATABASE ————————
  39.  
  40. function eventFormToDatabase(creator_name,
  41. creator_email,
  42. event_name,
  43. event_location,
  44. event_desc,
  45. date, time1,
  46. time2, time3,
  47. time4, url) {
  48. console.log("in creators");
  49. knex("public.creators")
  50. .insert({name: creator_name, email: creator_email})
  51. .returning("id")
  52. .asCallback((err, rows) => {
  53. if (err) {
  54. console.log("DB error while creating creator: ", err);
  55. } else {
  56. var theCreatorId = Number(rows[0]); // a good dev, unlike JJWH, would have
  57. knex('public.events')
  58. .insert({
  59. name: event_name,
  60. event_creator_id: theCreatorId,
  61. unique_key: url,
  62. description: event_desc,
  63. location: event_location,
  64. event_date: date,
  65. event_time1: time1,
  66. event_time2: time2,
  67. event_time3: time3,
  68. event_time4: time4
  69. })
  70. .asCallback(function(err, res){
  71. if (err){
  72. console.log("DB error while inserting event: ", err);
  73. } else {
  74. console.log("event-insert seems okay: ", rows);
  75. }
  76. });
  77. }
  78. })
  79. };
  80.  
  81.  
  82. // ———————— INSERT VOTE INTO DATABASE ————————
  83.  
  84. function eventVoteToDatabase(name,
  85. time1,
  86. time2, time3,
  87. time4, thisEvent) {
  88. console.log("in attendees");
  89.  
  90. knex("public.attendees")
  91. .insert({attendee_name: name, time1_vote: time1, time2_vote: time2, time3_vote: time3, time4_vote: time4})
  92. .where('unique_key', thisEvent)
  93. .asCallback((err, rows) => {
  94. if (err) {
  95. console.log("DB error while creating creator: ", err);
  96. } else {
  97. console.log("event-insert seems okay: ", rows);
  98. res.json('OK');
  99. }
  100. })
  101. };
  102.  
  103. db_api.post("/events/:event_id/votes", (req, res) => {
  104. let thisEvent = req.params.event_id;
  105. eventVoteToDatabase(req.body.attendee_name, req.body.time1_vote, req.body.time2_vote, req.body.time3_vote, req.body.time4_vote, thisEvent)
  106. console.log('Create vote');
  107. res.json('OK');
  108. return db_api;
  109. });
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117. // — — — — — — — — FUNCTIONS (TO MODULE) — — — — — — — —
  118.  
  119.  
  120.  
  121. // ———————— GENERATE RANDOM STRING ————————
  122.  
  123. function generateRandomString() {
  124. var text = "";
  125. var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  126. for( let i = 0; i < 6; i++ ) {
  127. text += possible.charAt(Math.floor(Math.random() * possible.length));
  128. }
  129. // need to insert if/else for if text matches any existing uniqueShortURL
  130. return text;
  131. }
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142. // — — — — — — — — ROUTES — — — — — — — —
  143.  
  144.  
  145.  
  146. // ———————— HOME/INDEX PAGE ————————
  147.  
  148. app.get("/", (req, res) => {
  149. res.redirect("/index");
  150. });
  151.  
  152. app.get("/index", (req, res) => {
  153. res.render("index");
  154. });
  155.  
  156.  
  157. // ———————— CREATE EVENT PAGE ————————
  158.  
  159. app.get("/event/create", (req, res) => {
  160. res.render("create");
  161. });
  162.  
  163.  
  164. // ———————— CREATE EVENT SUBMISSION REQUEST ————————
  165.  
  166. app.post("/event/create/submit", (req, res) => {
  167. var url = generateRandomString();
  168. eventFormToDatabase(
  169. req.body.event_creator_name,
  170. req.body.event_creator_email,
  171. req.body.event_title,
  172. req.body.event_location,
  173. req.body.event_description,
  174. req.body.event_date,
  175. req.body.event_time1,
  176. req.body.event_time2,
  177. req.body.event_time3,
  178. req.body.event_time4,
  179. url);
  180. res.redirect("/event/create/" + url);
  181. });
  182.  
  183.  
  184. // ———————— NEW UNIQUE URL PAGE ————————
  185. app.get("/event/create/:event_id", (req, res) => {
  186. // console.log("J Wuz Heer", req);
  187. res.render("u_share", {host: req.headers.host, event_id: req.params.event_id});
  188. });
  189.  
  190.  
  191. // ———————— EVENT PAGE ————————
  192.  
  193. app.get("/event/:event_id", (req, res) => {
  194.  
  195. var template_params = {
  196. event_id: req.params.event_id,
  197. // event_name: req.params.event_id,
  198. // event_description: req.params.event_id,
  199. // event_location: req.params.event_id,
  200. // event_date: req.params.event_id,
  201. // event_creator_name: req.params.event_id,
  202. // event_creator_email: req.params.event_id,
  203. // event_time1: req.params.event_id,
  204. // event_time2: req.params.event_id,
  205. // event_time3: req.params.event_id,
  206. // event_time4: req.params.event_id,
  207. // attendees_id: req.params.event_id
  208. /* we sure would like some information from the DB about this event */
  209. }
  210. res.render("u_url", template_params);
  211. });
  212.  
  213.  
  214.  
  215. // app.post("/event/:event_id/vote_submit", (req, res) => {
  216. // eventVoteToDatabase(
  217. // req.body.attendee_name,
  218. // req.body.event_time1,
  219. // req.body.event_time2,
  220. // req.body.event_time3,
  221. // req.body.event_time4,
  222. // );
  223. // res.redirect("/event/create/" + url);
  224. // });
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233. // — — — — — — — — LISTENER — — — — — — — —
  234. app.listen(PORT, () => {
  235. console.log(`Example app listening on port ${PORT}!`);
  236. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement