feat: add model
This commit is contained in:
parent
e6b73d8507
commit
20df7b3fda
4 changed files with 121 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "muffin-ai-arujak",
|
"name": "muffin-ai-arujak",
|
||||||
"version": "2.0.0-73-oreo",
|
"version": "2.0.0-74-oreo",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
export * from './statement'
|
export * from './statement'
|
||||||
|
export * from './learn'
|
||||||
|
export * from './nsfwContent'
|
||||||
|
|
61
src/modules/database/model/learn.ts
Normal file
61
src/modules/database/model/learn.ts
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import { type Pool } from 'mysql2/promise'
|
||||||
|
import run from '../run'
|
||||||
|
import type { BaseTable, LearnData } from '../type'
|
||||||
|
import { Snowflake } from 'discord.js'
|
||||||
|
|
||||||
|
export class LearnTable implements BaseTable<LearnData, string> {
|
||||||
|
public name = 'learn'
|
||||||
|
public constructor(private _database: Pool) {}
|
||||||
|
|
||||||
|
public async all(): Promise<LearnData[]> {
|
||||||
|
const [rows] = await this._database.execute<LearnData[]>(
|
||||||
|
'SELECT * FROM learn;',
|
||||||
|
)
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
public async findOne(key: string): Promise<LearnData[]> {
|
||||||
|
const [rows] = await this._database.execute<LearnData[]>(
|
||||||
|
'SELECT * FROM learn WHERE command = ?;',
|
||||||
|
[key],
|
||||||
|
)
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
public async insert(data: {
|
||||||
|
command: string
|
||||||
|
result: string
|
||||||
|
user_id: Snowflake
|
||||||
|
}): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute(
|
||||||
|
'INSERT INTO learn (command, result, user_id) VALUES (?, ?, ?);',
|
||||||
|
[data.command, data.result, data.user_id],
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public async update(data: {
|
||||||
|
command: string
|
||||||
|
result: string
|
||||||
|
}): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute('UPDATE learn SET result = ? WHERE command = ?;', [
|
||||||
|
data.command,
|
||||||
|
data.result,
|
||||||
|
])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public async delete(key: string): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute('DELETE FROM learn WHERE command = ?;', [key])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
57
src/modules/database/model/nsfwContent.ts
Normal file
57
src/modules/database/model/nsfwContent.ts
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import { type Pool } from 'mysql2/promise'
|
||||||
|
import run from '../run'
|
||||||
|
import type { BaseTable, NSFWData } from '../type'
|
||||||
|
|
||||||
|
export class NsfwContentTable implements BaseTable<NSFWData, number> {
|
||||||
|
public name = 'nsfw_content'
|
||||||
|
public constructor(private _database: Pool) {}
|
||||||
|
|
||||||
|
public async all(): Promise<NSFWData[]> {
|
||||||
|
const [rows] = await this._database.execute<NSFWData[]>(
|
||||||
|
'SELECT * FROM nsfw_content;',
|
||||||
|
)
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
public async findOne(key: number): Promise<NSFWData[]> {
|
||||||
|
const [rows] = await this._database.execute<NSFWData[]>(
|
||||||
|
'SELECT * FROM nsfw_content WHERE id = ?;',
|
||||||
|
[key],
|
||||||
|
)
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
public async insert(data: {
|
||||||
|
id: number
|
||||||
|
text: string
|
||||||
|
persona: string
|
||||||
|
}): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute(
|
||||||
|
'INSERT INTO nsfw_content (id, text, persona) VALUES (?, ?, ?);',
|
||||||
|
[data.id, data.text, data.persona],
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public async update(data: { id: number; text: string }): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute('UPDATE nsfw_content SET text = ? WHERE id = ?;', [
|
||||||
|
data.text,
|
||||||
|
data.id,
|
||||||
|
])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public async delete(key: number): Promise<void> {
|
||||||
|
const db = await this._database.getConnection()
|
||||||
|
|
||||||
|
await run(db, async () => {
|
||||||
|
await db.execute('DELETE FROM nsfw_content WHERE id = ?;', [key])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue