brainz-social-old/database-handler.js

92 lines
4.1 KiB
JavaScript
Raw Normal View History

2023-09-28 18:54:38 -05:00
const db = require("better-sqlite3")("brainz-social.db");
db.pragma("journal_mode = WAL");
2023-09-27 07:03:36 -05:00
2023-09-28 18:54:38 -05:00
module.exports = {
2023-09-27 07:03:36 -05:00
db,
getConfig: (key) => {
2023-09-28 18:54:38 -05:00
const row = db.prepare("SELECT * FROM config WHERE key = ?").get(key);
return row ? row.value : null;
2023-09-27 07:03:36 -05:00
},
setConfig: (key, value) => {
db.prepare("INSERT OR REPLACE INTO config (key, value) VALUES(?, ?);").run(key, value);
},
createApplication: (client_name, redirect_uri, scopes, website, client_id, client_secret) => {
db.prepare("INSERT INTO applications (client_name, redirect_uri, scopes, website, client_id, client_secret) VALUES (?, ?, ?, ?, ?, ?);").run(client_name, redirect_uri, scopes, website, client_id, client_secret);
},
getApplication: (client_id) => {
return db.prepare("SELECT id, client_id, client_secret, redirect_uri, scopes, website FROM applications WHERE client_id = ?").get(client_id);
},
getApplicationById: (id) => {
return db.prepare("SELECT id, client_id, client_secret, redirect_uri, scopes, website FROM applications WHERE id = ?").get(id);
},
createToken: (token, scope, application_id, user_id, created_at) => {
2023-10-05 20:16:00 -05:00
db.prepare("INSERT INTO oauth_tokens (token, scopes, application_id, user_id, created_at, revoked) VALUES (?, ?, ?, ?, ?, false)").run(token, scope, application_id, user_id, created_at);
},
getTokenData: (token) => {
return db.prepare("SELECT application_id, user_id, created_at, revoked FROM oauth_tokens WHERE token = ?").get(token);
2023-09-27 19:29:55 -05:00
},
revokeToken: (token) => {
db.prepare("UPDATE oauth_tokens SET revoked = true WHERE token = ?").run(token);
2023-09-28 18:36:35 -05:00
},
getAccountByUsername: (username) => {
return db.prepare("SELECT id, username, email, password_hash, account_tier FROM accounts WHERE username = ?").get(username);
},
createAccount: (username, email, password_hash) => {
db.prepare("INSERT INTO accounts (username, email, password_hash, account_tier) VALUES (?, ?, ?, 0)").run(username, email, password_hash);
},
checkAuthCookie: (cookie_value) => {
return db.prepare("SELECT id, cookie_value, created_at, user_id, revoked FROM cookies WHERE cookie_value = ?").get(cookie_value);
},
revokeAuthCookie: (cookie_value) => {
db.prepare("UPDATE cookies SET revoked = true WHERE cookie_value = ?").run(cookie_value);
},
createAuthCookie: (cookie_value, created_at, user_id) => {
db.prepare("INSERT INTO cookies (cookie_value, created_at, user_id, revoked) VALUES (?, ?, ?, false)").run(cookie_value, created_at, user_id);
2023-10-01 16:02:20 -05:00
},
createCsrfToken: (url, created_at, cookie_value) => {
const db_row_id = db.prepare("INSERT INTO csrf_token (url, created_at, cookie_value) VALUES (?, ?, ?)").run(url, created_at, cookie_value).lastInsertRowid;
2023-10-01 16:02:20 -05:00
return db.prepare("SELECT id FROM csrf_token WHERE rowid = ?").get(db_row_id);
},
createCsrfTokenAssociation: (...ids) => {
for ( const source_id in ids ) {
for ( const destination_id in ids ) {
db.prepare("INSERT INTO csrf_token_relations (source_id, destination_id) VALUES (?, ?)").run(source_id, destination_id);
}
}
},
removeAssociatedCsrfTokens: (id) => {
db.prepare("DELETE FROM csrf_token WHERE id IN (SELECT destination_id AS id FROM csrf_token_relations WHERE source_id = ?)").run(id);
},
getCsrfToken: (url) => {
return db.prepare("SELECT id, url, created_at, cookie_value FROM csrf_token WHERE url = ?").get(url);
2023-10-02 19:38:21 -05:00
},
createOauthCode: (code, application_id, user_id, scopes, created_at) => {
db.prepare("INSERT INTO oauth_code (code, application_id, user_id, scopes, created_at, revoked) VALUES (?, ?, ?, ?, ?, false)").run(code, application_id, user_id, scopes, created_at);
},
getOauthCode: (code) => {
return db.prepare("SELECT code, application_id, user_id, scopes, created_at, revoked FROM oauth_code WHERE code = ?").get(code);
},
revokeOauthCode: (code) => {
db.prepare("UPDATE oauth_code SET revoked = true WHERE code = ?").run(code);
2023-09-27 07:03:36 -05:00
}
};