diff --git a/bun.lockb b/bun.lockb index 34c1ebd..8f3c2ee 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index e44d4eb..0aa3a17 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,12 @@ "author": "", "license": "ISC", "devDependencies": { - "@types/sqlite3": "^3.1.8", + "bun-types": "^1.0.31", "typescript": "^5.1.3", "typescript-language-server": "^3.3.2" }, "dependencies": { "revolt.js": "^7.0.0-beta.9", - "shlex": "^2.1.2", - "sqlite3": "^5.1.6" + "shlex": "^2.1.2" } } diff --git a/src/commands/avatarMemberChange.ts b/src/commands/avatarMemberChange.ts index cd0c649..f17defb 100644 --- a/src/commands/avatarMemberChange.ts +++ b/src/commands/avatarMemberChange.ts @@ -1,4 +1,4 @@ -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import MemberModel from "../models/MemberModel" import { MemberRepo } from "../repositories/MemberRepo" diff --git a/src/commands/colorMemberChange.ts b/src/commands/colorMemberChange.ts index c99bd41..1f45b1d 100644 --- a/src/commands/colorMemberChange.ts +++ b/src/commands/colorMemberChange.ts @@ -1,6 +1,6 @@ import { MemberRepo } from "../repositories/MemberRepo" import MemberModel from "../models/MemberModel" -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; async function colorMemberChange(userId: string, args: string[], database: Database){ const memberRepo = new MemberRepo(database); diff --git a/src/commands/createMember.ts b/src/commands/createMember.ts index 33111d5..e684bae 100644 --- a/src/commands/createMember.ts +++ b/src/commands/createMember.ts @@ -1,4 +1,4 @@ -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import { MemberRepo } from "../repositories/MemberRepo"; import MemberModel from "models/MemberModel" diff --git a/src/commands/deleteMember.ts b/src/commands/deleteMember.ts index 74b5c19..329a9d1 100644 --- a/src/commands/deleteMember.ts +++ b/src/commands/deleteMember.ts @@ -1,6 +1,6 @@ import { MemberRepo } from "../repositories/MemberRepo" import MemberModel from "../models/MemberModel" -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; export async function deleteMember(userId: string, args: string[], database: Database) { const memberRepo = new MemberRepo(database); diff --git a/src/commands/listMember.ts b/src/commands/listMember.ts index 18cf368..d8e8b38 100644 --- a/src/commands/listMember.ts +++ b/src/commands/listMember.ts @@ -1,6 +1,6 @@ import { MemberRepo } from "../repositories/MemberRepo" import { tableConstructor } from '../utils/tableConstructor' -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import MemberModel from "../models/MemberModel"; async function listMember(userId: string, database: Database) { diff --git a/src/commands/migrateMember.ts b/src/commands/migrateMember.ts index a9982ce..b7e1b6c 100644 --- a/src/commands/migrateMember.ts +++ b/src/commands/migrateMember.ts @@ -1,5 +1,5 @@ import { File } from "revolt.js" -import { Database } from "sqlite3" +import { Database } from "bun:sqlite" import createMember from "./createMember" import { avatarMemberChange } from "./avatarMemberChange" diff --git a/src/index.ts b/src/index.ts index 8136997..caa7c21 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import { Client, Message } from "revolt.js"; import { commandHandler } from "./utils/commandHandler" import { nonCommandHandler } from "./utils/nonCommandHandler" -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import config from "../config.json" import dbInit from "utils/dbInit"; diff --git a/src/repositories/MemberRepo.ts b/src/repositories/MemberRepo.ts index ff24e03..7070c7e 100644 --- a/src/repositories/MemberRepo.ts +++ b/src/repositories/MemberRepo.ts @@ -1,4 +1,4 @@ -import { Database } from 'sqlite3'; +import { Database } from 'bun:sqlite'; import MemberModel from '../models/MemberModel'; export class MemberRepo { @@ -9,30 +9,33 @@ export class MemberRepo { } async getAltersByUserId(userId : string) : Promise { - const query : string = 'SELECT * FROM members WHERE members.owner = "' + userId + '"' + const query = this.db.query("SELECT * FROM members WHERE members.owner=?") - let result: MemberModel[] = await new Promise((resolve, reject) => { - this.db.all(query, (err, row: MemberModel[]) => { - if (err) { return reject(err)} - else { return resolve(row) } - }) + let result: MemberModel[] = query.all(userId).map( (row: any) => { + const mapped_row: MemberModel = { + id: row.id, + "name": row.name, + "prefix": row.prefix, + "owner": row.owner, + "profile_pic_url": row.profile_pic_url + } + return mapped_row }) - return result } addAlterForUser(alter: MemberModel){ - this.db.run("INSERT INTO members (owner, prefix, name, profile_pic_url, color) VALUES(?, ?, ?, ?, ?)", - [alter.owner, alter.prefix, alter.name, alter.profile_pic_url]) + this.db.query("INSERT INTO members (owner, prefix, name, profile_pic_url) VALUES(?, ?, ?, ?)") + .run(alter.owner, alter.prefix, alter.name, alter.profile_pic_url) } editAlter(alter: MemberModel){ - this.db.run("UPDATE members SET owner=?, prefix=?, name=?, profile_pic_url=?, color=? WHERE members.id=?", - [alter.owner, alter.prefix, alter.name, alter.profile_pic_url, alter.color, alter.id]) + this.db.query("UPDATE members SET owner=?, prefix=?, name=?, profile_pic_url=?, color=? WHERE members.id=?") + .run(alter.owner, alter.prefix, alter.name, alter.profile_pic_url, alter.color, alter.id) } delete(alterId: number) { - this.db.run("DELETE FROM members WHERE members.id=?", [alterId]) + this.db.query("DELETE FROM members WHERE members.id=?").run(alterId) } } diff --git a/src/repositories/UserRepo.ts b/src/repositories/UserRepo.ts index 1e856cc..c25e5a3 100644 --- a/src/repositories/UserRepo.ts +++ b/src/repositories/UserRepo.ts @@ -1,4 +1,5 @@ -import { Database } from "sqlite3"; +import UserModel from "models/UserModel"; +import { Database } from "bun:sqlite"; class UserRepo { db: Database @@ -7,8 +8,41 @@ class UserRepo { this.db = database } - getById() {} - new() {} - delete() {} + getById(id) { + const row = this.db.run(` + SELECT * + FROM users + WHERE users.id = ? + `, [id]) + return row + } + new(model: UserModel) {} + delete(id) {} + + isProxyEnabled(id: number) { + const row: any = this.db.query(` + SELECT auto_proxy + FROM users + WHERE users.id=? + `).get(id) + + let is_enabled: boolean + + is_enabled = row.auto_proxy == "TRUE" ? true : false + return is_enabled + } + + getIdByRevoltId(revolt_id: string){ + const row: any = this.db.query(` + SELECT id + FROM users + WHERE users.revolt_id=? + `).get(revolt_id) + + const id: number = row.id + return id + } } + +export default UserRepo diff --git a/src/utils/checkAutoProxy.ts b/src/utils/checkAutoProxy.ts index 213a7b9..d3c2336 100644 --- a/src/utils/checkAutoProxy.ts +++ b/src/utils/checkAutoProxy.ts @@ -1,15 +1,16 @@ -import { MemberRepo } from "repositories/MemberRepo"; -import { Database } from "sqlite3"; +import UserRepo from "repositories/UserRepo"; +import { Database } from "bun:sqlite"; -async function checkAutoProxy +function checkAutoProxy ( - userId: number, + userId: string, database: Database -): Promise +) { - const repo = new MemberRepo(database) - - return true + const repo = new UserRepo(database) + const user_id = repo.getIdByRevoltId(userId) + const is_enabled = repo.isProxyEnabled(user_id) + return is_enabled } export default checkAutoProxy; diff --git a/src/utils/commandHandler.ts b/src/utils/commandHandler.ts index 5e00cc1..e03fd7b 100644 --- a/src/utils/commandHandler.ts +++ b/src/utils/commandHandler.ts @@ -1,5 +1,5 @@ import { Message } from "revolt.js" -import { Database } from "sqlite3" +import { Database } from "bun:sqlite" import { split } from "shlex" import { returnHelpText } from "../commands/help" diff --git a/src/utils/dbInit.ts b/src/utils/dbInit.ts index edd07fb..23a1c63 100644 --- a/src/utils/dbInit.ts +++ b/src/utils/dbInit.ts @@ -1,4 +1,4 @@ -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; function dbInit(database: Database){ database.run("CREATE TABLE IF NOT EXISTS members (id INTEGER PRIMARY KEY AUTOINCREMENT, owner TEXT, prefix TEXT, name TEXT, profile_pic_url TEXT, color TEXT)"); diff --git a/src/utils/nonCommandHandler.ts b/src/utils/nonCommandHandler.ts index e606b1b..add7a47 100644 --- a/src/utils/nonCommandHandler.ts +++ b/src/utils/nonCommandHandler.ts @@ -1,7 +1,9 @@ import { Message } from "revolt.js" -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import sendAsMember from "./sendAsMemberHandler"; +import checkAutoProxy from "./checkAutoProxy"; export async function nonCommandHandler(message : Message, database: Database){ await sendAsMember(message, database); + checkAutoProxy(message.author.id, database) } diff --git a/src/utils/sendAsMemberHandler.ts b/src/utils/sendAsMemberHandler.ts index 75d87be..0b239c3 100644 --- a/src/utils/sendAsMemberHandler.ts +++ b/src/utils/sendAsMemberHandler.ts @@ -1,16 +1,21 @@ import { Message } from "revolt.js" -import { Database } from "sqlite3"; +import { Database } from "bun:sqlite"; import { MemberRepo } from "../repositories/MemberRepo" import MemberModel from "../models/MemberModel" export default async function sendAsMember(message: Message, database: Database) { - const alterRepo: MemberRepo = new MemberRepo(database); - let alters: MemberModel[]; - await alterRepo.getAltersByUserId(message.author.id).then(result => alters = result); + const memberRepo: MemberRepo = new MemberRepo(database); + let members: MemberModel[]; + await memberRepo.getAltersByUserId(message.author.id).then(result => members = result); + if (members === undefined) {return} - alters.forEach( async alter => { + members.forEach( async alter => { const pre_prefix = alter.prefix.split("text"); - if (message.content.startsWith(pre_prefix[0]) && message.content.endsWith(pre_prefix[1])) { + if ( + message.content.startsWith(pre_prefix[0]) + && message.content.endsWith(pre_prefix[1] + && message.content.length > 1) + ) { let actualContent: string = message.content; actualContent = actualContent.slice(pre_prefix[0].length, actualContent.length - pre_prefix[1].length) diff --git a/tsconfig.json b/tsconfig.json index 3f3bf8d..a650685 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,9 @@ "esModuleInterop": true, "resolveJsonModule" : true, "target": "es6", + "types": [ + "bun-types" + ], "moduleResolution": "node", "sourceMap": true, "outDir": "dist",