Dashboard  2
Lot's of data
Loading...
Searching...
No Matches
db.ts
Go to the documentation of this file.
1import mariadb from 'mariadb';
2
3class DB {
4 private pool: mariadb.Pool;
5
6 constructor(host: string, user: string, password: string, database: string, port: number) {
7 this.pool = mariadb.createPool({
8 host,
9 user,
10 password,
11 database,
12 port,
13 connectionLimit: 5
14 });
15 }
16
17 private async getConnection(): Promise<mariadb.PoolConnection> {
18 return await this.pool.getConnection();
19 }
20
21 public async writeToTable(tableName: string, columns: string[], data: any[]): Promise<void> {
22 let conn: mariadb.PoolConnection | null = null;
23 try {
24 conn = await this.getConnection();
25 const query = `INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${data.map(() => '?').join(', ')})`;
26 await conn.query(query, data);
27 } catch (error) {
28 console.error('Error writing to table:', error);
29 } finally {
30 if (conn) conn.release();
31 }
32 }
33
34 public async describeTable(tableName: string): Promise<any> {
35 let conn: mariadb.PoolConnection | null = null;
36 try {
37 conn = await this.getConnection();
38 return await conn.query(`DESCRIBE ${tableName}`);
39 } catch (error) {
40 console.error('Error describing table:', error);
41 return null;
42 } finally {
43 if (conn) conn.release();
44 }
45 }
46
47 public async getContentFromTable(tableName: string, columns: string[], whereClause?: string, values: any[] = []): Promise<any> {
48 let conn: mariadb.PoolConnection | null = null;
49 try {
50 conn = await this.getConnection();
51 const query = `SELECT ${columns.join(', ')} FROM ${tableName} ${whereClause ? 'WHERE ' + whereClause : ''}`;
52 return await conn.query(query, values);
53 } catch (error) {
54 console.error('Error getting content from table:', error);
55 return null;
56 } finally {
57 if (conn) conn.release();
58 }
59 }
60
61 public async dropFromTable(tableName: string, whereClause: string, values: any[]): Promise<void> {
62 let conn: mariadb.PoolConnection | null = null;
63 try {
64 conn = await this.getConnection();
65 const query = `DELETE FROM ${tableName} WHERE ${whereClause}`;
66 await conn.query(query, values);
67 } catch (error) {
68 console.error('Error deleting from table:', error);
69 } finally {
70 if (conn) conn.release();
71 }
72 }
73 public async updateTable(tableName: string, columns: string[], data: any[], whereClause: string, whereValues: any[]): Promise<void> {
74 let conn: mariadb.PoolConnection | null = null;
75 try {
76 conn = await this.getConnection();
77
78 const setClause = columns.map(column => `${column} = ?`).join(', ');
79
80 const query = `UPDATE ${tableName} SET ${setClause} WHERE ${whereClause}`;
81
82 await conn.query(query, [...data, ...whereValues]);
83
84 } catch (error) {
85 console.error('Error updating table:', error);
86 } finally {
87 if (conn) conn.release();
88 }
89 }
90}
91
92export default DB;