diff --git a/package-lock.json b/package-lock.json index 8d33ccf..5818094 100644 --- a/package-lock.json +++ b/package-lock.json @@ -317,9 +317,9 @@ "dev": true }, "@types/node": { - "version": "13.13.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", - "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==" + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz", + "integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==" }, "abbrev": { "version": "1.1.1", @@ -1706,14 +1706,14 @@ } }, "moment": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", - "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==" + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" }, "moment-timezone": { - "version": "0.5.28", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz", - "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", + "version": "0.5.31", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", + "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", "requires": { "moment": ">= 2.9.0" } @@ -2511,9 +2511,9 @@ "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" }, "sequelize": { - "version": "5.21.7", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.21.7.tgz", - "integrity": "sha512-+JrS5Co7CN53cOFFFaUb+xqQP00wD1Ag9xGLBLoUko2KhRZxjm+UDkqAVPHTUp87McLwJaCPkKv61GPhBVloRQ==", + "version": "5.21.10", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.21.10.tgz", + "integrity": "sha512-qni5lKIa4wBdbi3KQYj20R5TC0/a88qi/1XhGDzDvTaWxhx4gEpLr6aGwvfbvVD7XCilvOgjoBkBB0fLVpwNsw==", "requires": { "bluebird": "^3.5.0", "cls-bluebird": "^2.1.0", diff --git a/package.json b/package.json index 9ad48f4..3e1864f 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,37 @@ { - "name": "social-media-project", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "node src/server.js", - "test": "mocha test/setup.js test/**/*.test.js", - "cover": "nyc --reporter=lcov npm run test" - }, - "author": "", - "license": "ISC", - "dependencies": { - "express": "^4.17.1", - "mysql2": "^2.1.0", - "sequelize": "^5.21.7", - "sqlite3": "^4.2.0" - }, - "devDependencies": { - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "mocha": "^7.2.0", - "nyc": "^15.0.1" - } -} + "name": "social-media-project", + "version": "1.0.0", + "description": "", + "main": "server.js", + "scripts": { + "start": "node src/server.js", + "test": "mocha test/setup.js test/**/*.test.js", + "cover": "nyc --reporter=lcov npm run test" + }, + "author": "", + "license": "ISC", + "dependencies": { + "express": "^4.17.1", + "mysql2": "^2.1.0", + "sequelize": "^5.21.10", + "sqlite3": "^4.2.0" + }, + "devDependencies": { + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "mocha": "^7.2.0", + "nyc": "^15.0.1" + }, + "directories": { + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/creatorpiyush/Social_Media_Sample_Project_2020_May.git" + }, + "keywords": [], + "bugs": { + "url": "https://github.com/creatorpiyush/Social_Media_Sample_Project_2020_May/issues" + }, + "homepage": "https://github.com/creatorpiyush/Social_Media_Sample_Project_2020_May#readme" +} \ No newline at end of file diff --git a/src/controllers/comments.js b/src/controllers/comments.js index e69de29..f056901 100644 --- a/src/controllers/comments.js +++ b/src/controllers/comments.js @@ -0,0 +1,19 @@ +const { Posts, Users, Comments } = require("../db/models"); + +async function createComment(user_id, post_id, comment_body) { + let user = await Users.findOne({ + where: { + id: user_id, + }, + }) + + return await Comments.create({ + body: comment_body, + title: user.username, + userId: user_id, + postId: post_id, + }) +} +module.exports = { + createComment, +} \ No newline at end of file diff --git a/src/controllers/posts.js b/src/controllers/posts.js index 8b87710..415109d 100644 --- a/src/controllers/posts.js +++ b/src/controllers/posts.js @@ -1,13 +1,13 @@ -const { Posts, Users } = require('../db/models') +const { Posts, Users, Comments } = require('../db/models') async function createNewPost(userId, title, body) { - const post = await Posts.create({ - title, - body, - userId, - }) + const post = await Posts.create({ + title, + body, + userId, + }) - return post + return post } /** @@ -15,20 +15,20 @@ async function createNewPost(userId, title, body) { * showAllPosts({title: ''}) */ async function findAllPosts(query) { - let where = {} - if (query.userId) { where.userId = query.userId } - - const posts = await Posts.findAll({ - include: [ Users ], - where - }) - - return posts + let where = {} + if (query.userId) { where.userId = query.userId } + + const posts = await Posts.findAll({ + include: [Users, Comments], + where + }) + + return posts } module.exports = { - createNewPost, - findAllPosts + createNewPost, + findAllPosts } /* Test Code */ diff --git a/src/db/media.db b/src/db/media.db new file mode 100644 index 0000000..f16b041 Binary files /dev/null and b/src/db/media.db differ diff --git a/src/db/models.js b/src/db/models.js index dd5870c..f8a0b09 100644 --- a/src/db/models.js +++ b/src/db/models.js @@ -1,55 +1,56 @@ const Sequelize = require('sequelize') + let db -if (process.env.NODE_ENV == 'testing') { - db = new Sequelize({ - dialect: 'sqlite', - storage: ':memory:', - }) + +if (process.env.NODE_ENV == "testing") { + db = new Sequelize({ + dialect: "sqlite", + storage: __dirname + "/test.db" + }) } else { - db = new Sequelize({ - dialect: 'mysql', - database: 'cbsocialmediadb', - username: 'cbsocialuser', - password: 'cbsocialpass', - }) + db = new Sequelize({ + dialect: "sqlite", + storage: __dirname + "/media.db" + }) } + const COL_ID_DEF = { - type: Sequelize.DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true, + type: Sequelize.DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true, } const COL_USERNAME_DEF = { - type: Sequelize.DataTypes.STRING(30), - unique: true, - allowNull: false, + type: Sequelize.DataTypes.STRING(30), + unique: true, + allowNull: false, } const COL_TITLE_DEF = { - type: Sequelize.DataTypes.STRING(140), - allowNull: false, + type: Sequelize.DataTypes.STRING(140), + allowNull: false, } const Users = db.define('user', { - id: COL_ID_DEF, - username: COL_USERNAME_DEF, + id: COL_ID_DEF, + username: COL_USERNAME_DEF, }) const Posts = db.define('post', { - id: COL_ID_DEF, - title: COL_TITLE_DEF, - body: { - type: Sequelize.DataTypes.TEXT, - allowNull: false, - }, + id: COL_ID_DEF, + title: COL_TITLE_DEF, + body: { + type: Sequelize.DataTypes.TEXT, + allowNull: false, + }, }) const Comments = db.define('comment', { - id: COL_ID_DEF, - title: COL_TITLE_DEF, - body: { - type: Sequelize.DataTypes.TEXT('tiny'), - }, + id: COL_ID_DEF, + title: COL_TITLE_DEF, + body: { + type: Sequelize.DataTypes.TEXT('tiny'), + }, }) Users.hasMany(Posts) @@ -62,8 +63,8 @@ Posts.hasMany(Comments) Comments.belongsTo(Posts) module.exports = { - db, - Users, - Posts, - Comments, -} + db, + Users, + Posts, + Comments, +} \ No newline at end of file diff --git a/src/db/test.db b/src/db/test.db new file mode 100644 index 0000000..0576921 Binary files /dev/null and b/src/db/test.db differ diff --git a/src/public/app/all-posts.js b/src/public/app/all-posts.js index 04aa02d..533c484 100644 --- a/src/public/app/all-posts.js +++ b/src/public/app/all-posts.js @@ -1,25 +1,41 @@ function loadPosts() { - $.get('/api/posts', (posts) => { - for (let p of posts) { - $('#posts-container').append( - $(` -