diff --git a/database/config/build.js b/database/config/build.js index e69de29..b6249c1 100644 --- a/database/config/build.js +++ b/database/config/build.js @@ -0,0 +1,18 @@ +const fs = require("fs"); +const path = require("path"); + +const dbConnection = require("./connection.js"); + + +const dbBuild = () => { + const sqlPath = readFileSync(join(__dirname, "build.sql")).toString(); + return dbConnection.query(sql, (err, res) => { + if (err) throw new Error('error build.js'); + else console.log('build sucsess'); + + }); +}; + + + +module.exports = { dbBuild }; \ No newline at end of file diff --git a/database/config/build.sql b/database/config/build.sql index e69de29..d047bbe 100644 --- a/database/config/build.sql +++ b/database/config/build.sql @@ -0,0 +1,125 @@ +BEGIN; + +DROP TABLE IF EXISTS students, teachers, grades, courses; + + +CREATE TABLE IF NOT EXISTS courses( + course_id SERIAL PRIMARY KEY, + course_title TEXT NOT NULL + +); + +INSERT INTO courses (course_id, course_title) VALUES(1,'Physics'); +INSERT INTO courses (course_id, course_title) VALUES(2,'Maths'); +INSERT INTO courses (course_id, course_title) VALUES(3,'Chemistry'); +INSERT INTO courses (course_id, course_title) VALUES(4,'Arabic'); +INSERT INTO courses (course_id, course_title) VALUES(5,'Biology'); +INSERT INTO courses (course_id, course_title) VALUES(6,'coding'); +INSERT INTO courses (course_id, course_title) VALUES(7,'English'); + +CREATE TABLE IF NOT EXISTS students( + student_id SERIAL PRIMARY KEY, + student_name TEXT NOT NULL , + student_birth INTEGER NOT NULL, + student_sex TEXT NOT NULL, + student_address TEXT NOT NULL , + student_EMAIL VARCHAR(320), + student_img VARCHAR(250) NOT NULL + +); + +INSERT INTO students (student_id , student_name, student_birth, student_sex, student_address, student_EMAIL,student_img) VALUES (1,'Tasnin' , 8/8/1996, 'Female', 'Bethlehem' ,'tasninbhiri1996@gmail.com','https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fangelauyeung%2F2019%2F10%2F24%2Fjeff-bezos-is-no-longer-the-richest-person-in-the-world%2F&psig=AOvVaw0aqN38lJLcC_x4z05J8o3B&ust=1582725738852000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPjl3f3u7OcCFQAAAAAdAAAAABAU'); +INSERT INTO students (student_id, student_name, student_birth, student_sex, student_address, student_EMAIL,student_img) VALUES (2,'Matt' , 25/5/1995, 'Male', 'Bethlehem' ,'Matt1996@gmail.com','https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.pexels.com%2Fsearch%2Fperson%2F&psig=AOvVaw0aqN38lJLcC_x4z05J8o3B&ust=1582725738852000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPjl3f3u7OcCFQAAAAAdAAAAABAD'); +INSERT INTO students (student_id, student_name, student_birth, student_sex, student_address, student_EMAIL,student_img) VALUES (3,'karmel' , 4/9/1996, 'Female', 'Bethlehem' ,'Karmel1996@gmail.com','https://www.google.com/url?sa=i&url=https%3A%2F%2Fengineering.unl.edu%2Fkayla-person%2F&psig=AOvVaw0aqN38lJLcC_x4z05J8o3B&ust=1582725738852000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPjl3f3u7OcCFQAAAAAdAAAAABAb'); +INSERT INTO students (student_id, student_name, student_birth, student_sex, student_address, student_EMAIL,student_img) VALUES (4,'Harry' , 17/11/1996, 'Male', 'Bethlehem' ,'Harry1996@gmail.com','https://www.google.com/url?sa=i&url=https%3A%2F%2Fp-upload.facebook.com%2Fnasdaily%2Fphotos%2F%3Fref%3Dpage_internal&psig=AOvVaw0aqN38lJLcC_x4z05J8o3B&ust=1582725738852000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPjl3f3u7OcCFQAAAAAdAAAAABAO'); + + +CREATE TABLE IF NOT EXISTS relation( +relation_id SERIAL PRIMARY KEY, +course_id INT , +FOREIGN KEY course_id REFERENCES courses (course_id) +student_id INT, +FOREIGN KEY student_id REFERENCES students (student_id), + +); + +INSERT INTO relation( course_id , student_id) VALUES (1,1); +INSERT INTO relation( course_id , student_id) VALUES (2,1); +INSERT INTO relation( course_id , student_id) VALUES (3,1); +INSERT INTO relation( course_id , student_id) VALUES (4,1); +INSERT INTO relation( course_id , student_id) VALUES (5,1); +INSERT INTO relation( course_id , student_id) VALUES (6,1); +INSERT INTO relation( course_id , student_id) VALUES (7,1); +INSERT INTO relation( course_id , student_id) VALUES (1,2); +INSERT INTO relation( course_id , student_id) VALUES (2,2); +INSERT INTO relation( course_id , student_id) VALUES (3,2); +INSERT INTO relation( course_id , student_id) VALUES (4,2); +INSERT INTO relation( course_id , student_id) VALUES (5,2); +INSERT INTO relation( course_id , student_id) VALUES (6,2); +INSERT INTO relation( course_id , student_id) VALUES (7,2); +INSERT INTO relation( course_id , student_id) VALUES (1,3); +INSERT INTO relation( course_id , student_id) VALUES (2,3); +INSERT INTO relation( course_id , student_id) VALUES (3,3); +INSERT INTO relation( course_id , student_id) VALUES (4,3); +INSERT INTO relation( course_id , student_id) VALUES (5,3); +INSERT INTO relation( course_id , student_id) VALUES (6,3); +INSERT INTO relation( course_id , student_id) VALUES (7,3); +INSERT INTO relation( course_id , student_id) VALUES (1,4); +INSERT INTO relation( course_id , student_id) VALUES (2,4); +INSERT INTO relation( course_id , student_id) VALUES (3,4); +INSERT INTO relation( course_id , student_id) VALUES (4,4); +INSERT INTO relation( course_id , student_id) VALUES (5,4); +INSERT INTO relation( course_id , student_id) VALUES (6,4); +INSERT INTO relation( course_id , student_id) VALUES (7,4); + + +CREATE TABLE IF NOT EXISTS grades( + grade_id SERIAL PRIMARY KEY, + grade_mark VARCHAR(50) , + course_id INT , + FOREIGN KEY course_id REFERENCES courses (course_id) , + student_id INT, + FOREIGN KEY student_id REFERENCES students (student_id) +); + +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(84,1 ,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(90, 2 ,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(94,3 ,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(88,4,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(70,5 ,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(57,6 ,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(50,7,1 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(77,1 ,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(70,2 ,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(87,3 ,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(88,4,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(99,5 ,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(60,6 ,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(90,7,2); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(91,1 ,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(80,2 ,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(98,3 ,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(94,4,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(99,5 ,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(91,6 ,3 ); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(90,7,3); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(64,1 ,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(83,2 ,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(57,3 ,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(50,4,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(90,5 ,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(70,6 ,4); +INSERT INTO grades( grade_mark , course_id , student_id) VALUES(88,7,4); + + + + + +CREATE TABLE IF NOT EXISTS teachers( + teacher_id SERIAL PRIMARY KEY, + teacher_address TEXT , + teacher_phone INTEGER + +); + +COMMIT; diff --git a/database/config/connection.js b/database/config/connection.js index e69de29..5352ebc 100644 --- a/database/config/connection.js +++ b/database/config/connection.js @@ -0,0 +1,19 @@ +require("env2")("./config.env"); +const { Pool } = require("pg"); +const url = ''; + +let connectionString = process.env.DB_URL; + +if (process.env.NODE_ENV === "test") { + connectionString = process.env.TEST_DB_URL; +} +if (!connectionString) { + throw new Error("please set a DB_URL env variable"); + +} +const options = { + connectionString: url, + sll: true +}; + +module.exports = new Pool(options); \ No newline at end of file diff --git a/database/queries/getData.js b/database/queries/getData.js index e69de29..93c8aa1 100644 --- a/database/queries/getData.js +++ b/database/queries/getData.js @@ -0,0 +1,37 @@ +const dbConnection = require("../config/connection") + +// students, teachers, grades, courses + +const sqlStudent = "select * students" +const sqlGrades = "select * grades" +const sqlCourses = "select * courses" + // const sqlStudent = "select * students" + +const getdataStudent = callback => { + dbConnection.query(sqlStudent, (err, res) => { + if (err) console.log(err); + else { + // console.log(rows); + callback(err, res.rows); + } + }); +} +const getdataGrades = callback => { + dbConnection.query(sqlGrades, (err, res) => { + if (err) console.log(err); + else { + // console.log(rows); + callback(err, res.rows); + } + }); +} +const getdataCourses = callback => { + dbConnection.query(sqlCourses, (err, res) => { + if (err) console.log(err); + else { + // console.log(rows); + callback(err, res.rows); + } + }); +} +module.exports = { getdataStudent, getdataGrades, getdataCourses } \ No newline at end of file diff --git a/public/dom.js b/public/dom.js index e69de29..51f9686 100644 --- a/public/dom.js +++ b/public/dom.js @@ -0,0 +1,12 @@ +const xhr = new XMLHttpRequest(); +const apicall = (method, url, callback) => { + xhr.onreadystatechange = () => { + if (xhr.readyState == 4 && xhr.status == 200) { + let response = xhr.responseText + if (typeof callback === "function") callback(response) + else { console.log("error:", xhr.status, "|", xhr.readyState) } + } + } + xhr.open(method, url) + xhr.send() +} \ No newline at end of file diff --git a/public/grades.html b/public/grades.html index 97e79ba..2118ffa 100644 --- a/public/grades.html +++ b/public/grades.html @@ -1,21 +1,47 @@ - + + - + + + Student Managment System - - + + +
- school picture -

Student Managment System

+ school picture +

Student Managment System

-
+ +
+ + +
+ +
+ + + + + + + + + +
Course + Grades +
+ Math + 80
+
+ - - + + + \ No newline at end of file diff --git a/public/student.html b/public/student.html index 1dfaef8..1244d6b 100644 --- a/public/student.html +++ b/public/student.html @@ -2,11 +2,11 @@ - - - - Document - + + + + Student Managment System + @@ -18,14 +18,14 @@

Student Managment System

- +
- +
- +

Ali

ID:134223

@@ -36,8 +36,6 @@

location:

birthday:

sex:

phone:

- -
diff --git a/public/style.css b/public/style.css index 93168be..2dd532f 100644 --- a/public/style.css +++ b/public/style.css @@ -72,4 +72,52 @@ height: 200px; margin-top: 36px; box-shadow: 30px 10px 10px 10px #aaaaaa; +} + +.searchForm { + width: 100%; + height: 60px; + display: flex; + align-items: center; + margin-left: 56px; + padding-bottom: 5px; + padding-top: 10px; +} + +.searchForm input { + height: 28px; + width: 46vw; + background: #f1f1f1; + border: none; +} + +.searchForm button { + width: 76px; + height: 26px; + background-color: #4e9cc9; + color: beige; + font-size: 3vw; + border: none; +} + +.gradesTable { + margin-left: 51px; + padding-top: 20px; +} + +.gradesTable_std td, +.gradesTable_std th { + border: 1px solid #ddd; + padding: 21px; + font-size: 25px; + text-align: center; +} + +.gradesTable_std th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #4e9cc9; + color: white; + font-size: 25px; } \ No newline at end of file diff --git a/src/app.js b/src/app.js index 059f152..f0d060a 100644 --- a/src/app.js +++ b/src/app.js @@ -1,9 +1,35 @@ -const express = require("express") -const path = require("path") -const bodyParser = require("body-parser") +const express = require("express"); +const path = require("path"); const app = express(); -app.setPort(3000) +const request = require("request"); +const bodyParser = require("body-parser") +const getData = require("../database/queries/getData") app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) -app.get("/home") -app.listen(getPort()) \ No newline at end of file + +app.use(express.static(path.join(__dirname, "..", "public"))); +app.set("port", process.env.PORT || 5000); + +app.get("/home", (req, res) => { + res.sendFile(path.join(__dirname, "..", "public", "index.html")) +}) + +app.get("/home/student", (request, response) => { + getData.getdataStudent((err, res) => { + if (err) console.log(err, "connection error") + else response.send(res) + }); +}); +// we don't know _______________________ll +// app.get("/home/grades", (request, response) => { +// getData.getdataCourses((err, res) => { +// if (err) console.log(err, "connection error") +// else response.send(res) +// }); +// }); + +app.listen(app.get("port"), () => { + console.log("The server is working ...."); +}); + +module.exports = app; \ No newline at end of file diff --git a/src/controllers/user.js b/src/controllers/user.js index e69de29..60749cd 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -0,0 +1,2 @@ +const getData = require("../../database/queries/getData"); +const postData = require("../../database/queries/postData");