diff --git a/core/seeder/seeder.js b/core/seeder/seeder.js new file mode 100644 index 0000000..17e9cfd --- /dev/null +++ b/core/seeder/seeder.js @@ -0,0 +1,21 @@ +'use strict' + +require('dotenv').config() +const fs = require('fs-extra') +const Database = require('sqlite-async') + +const createArray = async() => { + const sqlFile = fs.readFileSync(`${__dirname}/seeder.sql`, 'utf-8') + const array = sqlFile.split('\n') + return array +} + +const run = async() => { + const db = await Database.open(process.env.DB_NAME) + const sqlArray = await createArray() + for (const sql of sqlArray) { + await db.run(sql) + } +} + +run() diff --git a/core/seeder/seeder.sql b/core/seeder/seeder.sql new file mode 100644 index 0000000..e984e40 --- /dev/null +++ b/core/seeder/seeder.sql @@ -0,0 +1,39 @@ +DROP TABLE IF EXISTS "answers"; +CREATE TABLE IF NOT EXISTS "answers" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "body" TEXT NOT NULL, "average_rate" REAL DEFAULT 0.0, "is_correct" INTEGER DEFAULT 0, "is_inappropriate" INTEGER DEFAULT 0, "date" TEXT NOT NULL, "user_id" INTEGER NOT NULL, "question_id" INTEGER NOT NULL, FOREIGN KEY("question_id") REFERENCES "questions"("id"), FOREIGN KEY("user_id") REFERENCES "users"("id")); +DROP TABLE IF EXISTS "questions"; +CREATE TABLE IF NOT EXISTS "questions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT, "title" TEXT NOT NULL, "body" TEXT NOT NULL, "image" TEXT, "date" TEXT NOT NULL, "solved" INTEGER DEFAULT 0, "user_id" INTEGER NOT NULL, FOREIGN KEY("user_id") REFERENCES "users"("id")); +DROP TABLE IF EXISTS "users"; +CREATE TABLE IF NOT EXISTS "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT NOT NULL, "username" TEXT NOT NULL, "password" TEXT NOT NULL, "avatar" TEXT DEFAULT "images/default-avatar.jpg", "score" INTEGER DEFAULT 0); +DROP TABLE IF EXISTS "rates" +CREATE TABLE IF NOT EXISTS "rates" ("user_id" INTEGER NOT NULL, "answer_id" INTEGER NOT NULL, "rate" INTEGER NOT NULL, FOREIGN KEY("user_id") REFERENCES "users"("id"), FOREIGN KEY("answer_id") REFERENCES "answers"("id"), PRIMARY KEY("user_id", "answer_id")); +INSERT INTO "users" VALUES (1,'Sam Smith','Vasper123','$2b$10$lftP/EvknkVCXxYCbJyWLOlpbQWVaGBAAEeR.VEUG6eJtqg8yFJgW','images/default-avatar.jpg',0); +INSERT INTO "users" VALUES (2,'Emma Jones','Gamer123','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/user_avatar/2/Gamer123.png',0); +INSERT INTO "users" VALUES (3,'John Doe','tester3','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/images/default-avatar.jpg',10); +INSERT INTO "users" VALUES (4,'Mary Jane','tester4','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/default-avatar.jpg',10); +INSERT INTO "users" VALUES (5,'Mihai Ene','tester5','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/images/default-avatar.jpg',50); +INSERT INTO "users" VALUES (6,'Ben Townsend','tester6','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/default-avatar.jpg',150); +INSERT INTO "users" VALUES (7,'Wallef Borges','tester7','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/images/default-avatar.jpg',120); +INSERT INTO "users" VALUES (8,'Kieran Dhir','tester8','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/default-avatar.jpg',100); +INSERT INTO "users" VALUES (9,'Avelino Tomas','tester9','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/images/default-avatar.jpg',20); +INSERT INTO "users" VALUES (10,'Olalekan Busari','tester10','$2b$10$biMwzxYBQ6vzXnZdeGBjzOptb77uZd0xpR8v2zVtrXoXcg6VuQMqe','images/default-avatar.jpg',45); +INSERT INTO "questions" VALUES (1,'When will the PS5 get released','Lorem ipsum dolor amet literally enamel pin readymade unicorn hot chicken DIY. Polaroid salvia coloring book adaptogen retro, activated charcoal farm-to-table aesthetic ennui. 3 wolf moon paleo gentrify gluten-free fixie pop-up. Cloud bread hoodie air plant wolf meh fanny pack live-edge flannel kickstarter freegan letterpress cronut. Church-key four dollar toast aesthetic bespoke. Chillwave activated charcoal venmo ennui beard tousled four loko dreamcatcher.',NULL,'3/12/2019',1,6); +INSERT INTO "questions" VALUES (2,'Is this system working?','Lorem ipsum dolor amet literally enamel pin readymade unicorn hot chicken DIY. Polaroid salvia coloring book adaptogen retro, activated charcoal farm-to-table aesthetic ennui. 3 wolf moon paleo gentrify gluten-free fixie pop-up. Cloud bread hoodie air plant wolf meh fanny pack live-edge flannel kickstarter freegan letterpress cronut. Church-key four dollar toast aesthetic bespoke. Chillwave activated charcoal venmo ennui beard tousled four loko dreamcatcher.',NULL,'3/12/2019',0,7); +INSERT INTO "questions" VALUES (3,'Examples of questions?','Lorem ipsum dolor amet literally enamel pin readymade unicorn hot chicken DIY. Polaroid salvia coloring book adaptogen retro, activated charcoal farm-to-table aesthetic ennui. 3 wolf moon paleo gentrify gluten-free fixie pop-up. Cloud bread hoodie air plant wolf meh fanny pack live-edge flannel kickstarter freegan letterpress cronut. Church-key four dollar toast aesthetic bespoke. Chillwave activated charcoal venmo ennui beard tousled four loko dreamcatcher.','The.png','3/12/2019',1,8); +INSERT INTO "questions" VALUES (4,'What is the best game?','Lorem ipsum dolor amet literally enamel pin readymade unicorn hot chicken DIY. Polaroid salvia coloring book adaptogen retro, activated charcoal farm-to-table aesthetic ennui. 3 wolf moon paleo gentrify gluten-free fixie pop-up. Cloud bread hoodie air plant wolf meh fanny pack live-edge flannel kickstarter freegan letterpress cronut. Church-key four dollar toast aesthetic bespoke. Chillwave activated charcoal venmo ennui beard tousled four loko dreamcatcher.',NULL,'3/12/2019',0,5); +INSERT INTO "answers" VALUES (1,'Cray bitters flannel trust fund portland artisan. IPhone migas taxidermy woke, cred raclette twee tbh sriracha organic bespoke. Kickstarter iceland intelligentsia squid mixtape meh.',4.5,1,0,'3/12/2019',1,1); +INSERT INTO "answers" VALUES (2,'Pinterest cliche tumblr swag. Banh mi readymade ethical, food truck offal hoodie lumbersexual cardigan pok pok. Kale chips meggings tattooed letterpress, butcher retro pickled woke 3 wolf moon ugh iceland.',3.0,0,0,'3/12/2019',2,1); +INSERT INTO "answers" VALUES (3,'Cray bitters flannel trust fund portland artisan. IPhone migas taxidermy woke, cred raclette twee tbh sriracha organic bespoke. Kickstarter iceland intelligentsia squid mixtape meh.',2.5,0,0,'3/12/2019',3,2); +INSERT INTO "answers" VALUES (4,'Pinterest cliche tumblr swag. Banh mi readymade ethical, food truck offal hoodie lumbersexual cardigan pok pok. Kale chips meggings tattooed letterpress, butcher retro pickled woke 3 wolf moon ugh iceland.',3.0,0,0,'3/12/2019',4,2); +INSERT INTO "answers" VALUES (5,'Cray bitters flannel trust fund portland artisan. IPhone migas taxidermy woke, cred raclette twee tbh sriracha organic bespoke. Kickstarter iceland intelligentsia squid mixtape meh.',1.5,0,1,'3/12/2019',5,3); +INSERT INTO "answers" VALUES (6,'Pinterest cliche tumblr swag. Banh mi readymade ethical, food truck offal hoodie lumbersexual cardigan pok pok. Kale chips meggings tattooed letterpress, butcher retro pickled woke 3 wolf moon ugh iceland.',5.0,1,0,'3/12/2019',6,3); +INSERT INTO "answers" VALUES (7,'Cray bitters flannel trust fund portland artisan. IPhone migas taxidermy woke, cred raclette twee tbh sriracha organic bespoke. Kickstarter iceland intelligentsia squid mixtape meh.',0.0,0,0,'3/12/2019',7,4); +INSERT INTO "answers" VALUES (8,'Pinterest cliche tumblr swag. Banh mi readymade ethical, food truck offal hoodie lumbersexual cardigan pok pok. Kale chips meggings tattooed letterpress, butcher retro pickled woke 3 wolf moon ugh iceland.',0.0,0,0,'3/12/2019',8,4); +INSERT INTO "rates" VALUES (2, 1, 5); +INSERT INTO "rates" VALUES (3, 1, 4); +INSERT INTO "rates" VALUES (10, 2, 3); +INSERT INTO "rates" VALUES (9, 3, 2); +INSERT INTO "rates" VALUES (8, 3, 3); +INSERT INTO "rates" VALUES (2, 4, 3); +INSERT INTO "rates" VALUES (6, 5, 1); +INSERT INTO "rates" VALUES (2, 5, 2); +INSERT INTO "rates" VALUES (10, 6, 5); \ No newline at end of file diff --git a/package.json b/package.json index 0f04fe5..ac35860 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "test": "jest --coverage --detectOpenHandles", "test-verbose": "jest --coverage --detectOpenHandles --verbose", "unit": "node_modules/.bin/jest --coverage --runInBand tests/unit/", - "cucumber": "cucumberTest.sh" + "cucumber": "cucumberTest.sh", + "seed": "node core/seeder/seeder.js" }, "jest": { "projects": [ diff --git a/server.js b/server.js index 5948b47..53b521a 100644 --- a/server.js +++ b/server.js @@ -41,7 +41,6 @@ app.use(views(`${__dirname}/core/views`, Handlebars.registerHelper('if_diff', function(a, b, opts) { if (a !== b) { - console.log(this) return opts.fn(this) } else { return opts.inverse(this)