diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2023-01-21 15:45:14 -0500 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2023-01-21 15:45:14 -0500 |
commit | f41ca04fbeba396fe89a4279382882260f8bc645 (patch) | |
tree | 3c87d8ace600c86dd2b41dcf45dde12c878ba4fa /src | |
parent | start backend (diff) | |
download | xssbook-f41ca04fbeba396fe89a4279382882260f8bc645.tar.gz xssbook-f41ca04fbeba396fe89a4279382882260f8bc645.tar.bz2 xssbook-f41ca04fbeba396fe89a4279382882260f8bc645.zip |
rate limit shit
Diffstat (limited to 'src')
-rw-r--r-- | src/api.js | 5 | ||||
-rw-r--r-- | src/database.js | 120 |
2 files changed, 90 insertions, 35 deletions
@@ -6,4 +6,9 @@ router.get('/', (req, res) => { res.status(200).send( {msg: 'xssbook api'} ) }) +router.post('/', (req, res) => { + res.status(200).send( {msg: 'xssbook api'} ) +}) + + module.exports = router;
\ No newline at end of file diff --git a/src/database.js b/src/database.js index 3ca57ab..6168f4c 100644 --- a/src/database.js +++ b/src/database.js @@ -1,26 +1,18 @@ -const sqlite3 = require('sqlite3') -const path = require('path').resolve(__dirname, '../xssbook.db') - -let db = new sqlite3.Database(path, sqlite3.OPEN_READWRITE, (err) => { - if (err && err.code == "SQLITE_CANTOPEN") { - createDatabase(); - return; - } else if (err) { - console.log(err); - } - addUser('John','Doe','johndoe@gmail.com','password','lettuce',0,'jan',0,69) -}) +const Database = require('better-sqlite3') +const db = createDatabase() function createDatabase() { - db = new sqlite3.Database(path, (err) => { - if (err) { - console.log(err); - } - createTables(); - }); + try { + var db = new Database('xssbook.db', { fileMustExist: true }); + return db + } catch (err) { + var db = new Database('xssbook.db', {}); + createTables(db); + return db + } } -function createTables() { +function createTables(db) { db.exec(` CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -30,7 +22,7 @@ function createTables() { password VARCHAR(50) NOT NULL, gender VARCHAR(20) NOT NULL, date INTEGER NOT NULL, - month VARCHAR(3) NOT NULL, + month VARCHAR(10) NOT NULL, day INTEGER NOT NULL, year INTEGER NOT NULL ); @@ -51,24 +43,82 @@ function createTables() { banner BLOB, FOREIGN KEY(id) REFERENCES users(id) ); - `, (err) => { - if(err) { - console.log(err) - } - }) + + CREATE TABLE sessions ( + user INTEGER PRIMARY KEY NOT NULL, + token TEXT NOT NULL, + FOREIGN KEY(user) REFERENCES users(id) + ); + `); } function addUser(first, last, email, password, gender, date, month, day, year) { - db.exec(` - INSERT INTO users (first, last, email, password, gender, date, month, day, year) VALUES (?,?,?,?,?,?,?,?,?); - `, [first, last, email, password, gender, date, month, day, year] , (err) => { - if(err) { - console.log(err) - return false - } else { - return true - } - }) + try { + const stmt = db.prepare('INSERT OR REPLACE INTO users (first, last, email, password, gender, date, month, day, year) VALUES (@first, @last, @email, @password, @gender, @date, @month, @day, @year);') + stmt.run({first, last, email, password, gender, date, month, day, year}) + return true + } catch (err) { + console.log(err) + return false + } } +function getUser(id) { + try { + const stmt = db.prepare('SELECT * FROM users WHERE id = @id;') + const info = stmt.get({id}) + if (info === undefined) return undefined + return info + } catch (err) { + console.log(err) + return undefined + } +} +function getUsers(ids) { + try { + const stmt = db.prepare('SELECT * FROM users WHERE id = @id;') + const people = {} + db.transaction((ids) => { + for (const id of ids) { + const info = stmt.get({id}) + if (info === undefined) continue; + delete info.password + people[id] = info + } + })(ids) + return people + } catch (err) { + console.log(err) + return undefined + } +} + +function addPost(user, content, likes, comments, date) { + try { + const stmt = db.prepare('INSERT OR REPLACE INTO posts (user, content, likes, comments, date) VALUES (@user, @content, @likes, @comments, @date);') + const info = stmt.run({user, content, likes, comments, date}) + return info.changes === 1 + } catch (err) { + console.log(err) + return false + } +} + +function getPosts(page) { + const stmt = db.prepare('SELECT * FROM posts ORDER BY id DESC LIMIT @limit OFFSET @offset;') + const count = 20 + const info = stmt.all({limit: count, offset: page * count}); + console.log(info) +} + +function setSession(user, token) { + try { + const stmt = db.prepare('INSERT OR REPLACE INTO sessions (user, token) VALUES (@user, @token);') + stmt.run({user, token}) + return true + } catch (err) { + console.log(err) + return false + } +}
\ No newline at end of file |