-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.js
More file actions
67 lines (57 loc) · 1.53 KB
/
db.js
File metadata and controls
67 lines (57 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const mysql = require('mysql');
const connection = mysql.createConnection({
connectionLimit: 100,
host: 'localhost',
user: 'root',
password: '',
database: 'APIProject'
});
excuteQuery = (query, callback) => {
return new Promise((resolve, reject) => {
connection.query(query, (err, rows, fields) => {
if (err) {
reject(err);
return;
}
callback(rows);
resolve();
})
});
}
const getPosts = async () => {
const postsArray = [];
await excuteQuery('SELECT * from posts', (rows) => {
rows.forEach((post) => {
postsArray.push({ id: post.post_id, post: post.post_text, username: post.username });
});
})
return postsArray;
}
const searchPosts = async (search) => {
const postsArray = [];
await excuteQuery(`SELECT * from posts where post_text like '%${search}%'`, (rows) => {
rows.forEach((post) => {
postsArray.push({ id: post.post_id, post: post.post_text, username: post.username });
});
})
return postsArray;
}
const addPost = async (post_id, post_text, username) => {
let postAdded = false;
// check if post already exists
await excuteQuery(`SELECT * FROM posts WHERE post_text = '${post_text}'`, (rows) => {
if (rows.length > 0) {
postAdded = true;
}
});
if (postAdded) return postAdded;
await excuteQuery(`INSERT INTO posts (post_id, post_text, username) VALUES ('${post_id}', '${post_text}', '${username}')`, () => {
postAdded = true;
})
return postAdded;
}
module.exports = {
getPosts,
searchPosts,
addPost
}