@arcend/database 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ export * from './wrappers/MySQL.js';
2
+ export * from './wrappers/PostgreSQL.js';
3
+ export * from './wrappers/Redis.js';
4
+ export * from './wrappers/Mongo.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './wrappers/MySQL.js';
2
+ export * from './wrappers/PostgreSQL.js';
3
+ export * from './wrappers/Redis.js';
4
+ export * from './wrappers/Mongo.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Document, Collection, ClientSession } from 'mongodb';
2
+ interface Props {
3
+ uri: string;
4
+ database: string;
5
+ debug?: boolean;
6
+ }
7
+ declare class Mongo {
8
+ private client;
9
+ private database;
10
+ private db;
11
+ private debug;
12
+ constructor(props: Props);
13
+ connect: () => Promise<boolean>;
14
+ collection: <T extends Document = any>(name: string) => Collection<T> | null;
15
+ ping: () => Promise<boolean>;
16
+ close: () => Promise<void>;
17
+ transaction: <T>(cb: (session: ClientSession) => Promise<T>) => Promise<T | null>;
18
+ }
19
+ export { Mongo };
20
+ //# sourceMappingURL=Mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mongo.d.ts","sourceRoot":"","sources":["../../src/wrappers/Mongo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/E,UAAU,KAAK;IAEX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AACD,cAAM,KAAK;IAEP,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAU;gBACX,KAAK,EAAE,KAAK;IASjB,OAAO,QAAY,OAAO,CAAC,OAAO,CAAC,CAgBxC;IACK,UAAU,GAAI,CAAC,SAAS,QAAQ,GAAG,GAAG,EAAE,MAAM,MAAM,KAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAKhF;IACK,IAAI,QAAY,OAAO,CAAC,OAAO,CAAC,CAarC;IACK,KAAK,QAAY,OAAO,CAAC,IAAI,CAAC,CAKnC;IACK,WAAW,GAAS,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAsB1F;CACL;AACD,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { MongoClient } from 'mongodb';
2
+ ;
3
+ class Mongo {
4
+ client;
5
+ database;
6
+ db;
7
+ debug;
8
+ constructor(props) {
9
+ this.client = new MongoClient(props.uri);
10
+ this.debug = props.debug ?? false;
11
+ this.database = props.database;
12
+ if (this.debug)
13
+ console.log('[MongoDB] Client created.');
14
+ }
15
+ connect = async () => {
16
+ try {
17
+ await this.client.connect();
18
+ this.db = this.client.db(this.database);
19
+ if (this.debug)
20
+ console.log('[MongoDB] Client connected.');
21
+ return true;
22
+ }
23
+ catch (e) {
24
+ if (this.debug)
25
+ console.error('[MongoDB Error]', e);
26
+ return false;
27
+ }
28
+ };
29
+ collection = (name) => {
30
+ if (!this.db)
31
+ return null;
32
+ return this.db.collection(name);
33
+ };
34
+ ping = async () => {
35
+ try {
36
+ if (!this.db)
37
+ return false;
38
+ await this.db.command({ ping: 1 });
39
+ return true;
40
+ }
41
+ catch (e) {
42
+ return false;
43
+ }
44
+ };
45
+ close = async () => {
46
+ await this.client.close();
47
+ if (this.debug)
48
+ console.log('[MongoDB] Connection closed.');
49
+ };
50
+ transaction = async (cb) => {
51
+ let session = this.client.startSession();
52
+ try {
53
+ let result = null;
54
+ await session.withTransaction(async () => {
55
+ result = await cb(session);
56
+ });
57
+ return result;
58
+ }
59
+ catch (e) {
60
+ if (this.debug)
61
+ console.error('[MongoDB Error]', e);
62
+ return null;
63
+ }
64
+ finally {
65
+ await session.endSession();
66
+ }
67
+ };
68
+ }
69
+ ;
70
+ export { Mongo };
71
+ //# sourceMappingURL=Mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mongo.js","sourceRoot":"","sources":["../../src/wrappers/Mongo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,WAAW,EAAuC,MAAM,SAAS,CAAC;AAO9E,CAAC;AACF,MAAM,KAAK;IAEC,MAAM,CAAc;IACpB,QAAQ,CAAS;IACjB,EAAE,CAAiB;IACnB,KAAK,CAAU;IACvB,YAAY,KAAY;QAEpB,IAAI,CAAC,MAAM,GAAK,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAM,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAE/B,IAAI,IAAI,CAAC,KAAK;YACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IACM,OAAO,GAAG,KAAK,IAAqB,EAAE;QAEzC,IACA,CAAC;YACG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,KAAK;gBACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,EACR,CAAC;YACG,IAAI,IAAI,CAAC,KAAK;gBACV,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC,CAAC;IACK,UAAU,GAAG,CAA2B,IAAY,EAAwB,EAAE;QAEjF,IAAI,CAAC,IAAI,CAAC,EAAE;YACR,OAAO,IAAI,CAAC;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAI,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IACK,IAAI,GAAG,KAAK,IAAqB,EAAE;QAEtC,IACA,CAAC;YACG,IAAI,CAAC,IAAI,CAAC,EAAE;gBACR,OAAO,KAAK,CAAC;YACjB,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,EACR,CAAC;YACG,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC,CAAC;IACK,KAAK,GAAG,KAAK,IAAkB,EAAE;QAEpC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK;YACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC;IACK,WAAW,GAAG,KAAK,EAAI,EAA0C,EAAqB,EAAE;QAE3F,IAAI,OAAO,GAAkB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxD,IACA,CAAC;YACG,IAAI,MAAM,GAAa,IAAI,CAAC;YAC5B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAG,EAAE;gBAEpC,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,EACR,CAAC;YACG,IAAI,IAAI,CAAC,KAAK;gBACV,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;gBAED,CAAC;YACG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC,CAAC;CACL;AAAA,CAAC;AACF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import mysql, { RowDataPacket } from 'mysql2/promise';
2
+ interface Props {
3
+ host: string;
4
+ port?: number;
5
+ user: string;
6
+ password?: string;
7
+ database: string;
8
+ keepAlive: boolean;
9
+ debug?: boolean;
10
+ }
11
+ declare class MySQL {
12
+ private pool;
13
+ private debug;
14
+ constructor(props: Props);
15
+ query: <T extends RowDataPacket[]>(sql: string, keys?: any[]) => Promise<T | null>;
16
+ execute: (sql: string, keys?: any[]) => Promise<boolean>;
17
+ close: () => Promise<void>;
18
+ ping: () => Promise<boolean>;
19
+ transaction: <T>(cb: (con: mysql.PoolConnection) => Promise<T>) => Promise<T | null>;
20
+ }
21
+ export { MySQL };
22
+ //# sourceMappingURL=MySQL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MySQL.d.ts","sourceRoot":"","sources":["../../src/wrappers/MySQL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEtD,UAAU,KAAK;IAEX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AACD,cAAM,KAAK;IAEP,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAU;gBACX,KAAK,EAAE,KAAK;IAcjB,KAAK,GAAS,CAAC,SAAS,aAAa,EAAE,EAAE,KAAK,MAAM,EAAE,OAAO,GAAG,EAAE,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAa3F;IACK,OAAO,GAAS,KAAK,MAAM,EAAE,OAAO,GAAG,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC,CAajE;IACK,KAAK,QAAY,OAAO,CAAC,IAAI,CAAC,CAKnC;IACK,IAAI,QAAY,OAAO,CAAC,OAAO,CAAC,CAWrC;IACK,WAAW,GAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAqB7F;CACL;AACD,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,78 @@
1
+ import mysql from 'mysql2/promise';
2
+ ;
3
+ class MySQL {
4
+ pool;
5
+ debug;
6
+ constructor(props) {
7
+ this.pool = mysql.createPool({
8
+ host: props.host,
9
+ port: props.port ?? 3306,
10
+ user: props.user,
11
+ password: props.password ?? '',
12
+ database: props.database,
13
+ enableKeepAlive: props.keepAlive
14
+ });
15
+ this.debug = props.debug ?? false;
16
+ if (this.debug)
17
+ console.log('[MySQL] Pool connected.');
18
+ }
19
+ ;
20
+ query = async (sql, keys) => {
21
+ try {
22
+ let [results, fields] = await this.pool.query(sql, keys);
23
+ return results;
24
+ }
25
+ catch (e) {
26
+ if (this.debug)
27
+ console.error('[MySQL Error]', e);
28
+ return null;
29
+ }
30
+ };
31
+ execute = async (sql, keys) => {
32
+ try {
33
+ await this.pool.execute(sql, keys);
34
+ return true;
35
+ }
36
+ catch (e) {
37
+ if (this.debug)
38
+ console.error('[MySQL Error]', e);
39
+ return false;
40
+ }
41
+ ;
42
+ };
43
+ close = async () => {
44
+ await this.pool.end();
45
+ if (this.debug)
46
+ console.log('[MySQL] Pool closed.');
47
+ };
48
+ ping = async () => {
49
+ try {
50
+ await this.pool.query('SELECT 1');
51
+ return true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ };
57
+ transaction = async (cb) => {
58
+ let con = await this.pool.getConnection();
59
+ try {
60
+ await con.beginTransaction();
61
+ let result = await cb(con);
62
+ await con.commit();
63
+ return result;
64
+ }
65
+ catch (e) {
66
+ await con.rollback();
67
+ if (this.debug)
68
+ console.error('[MySQL Error]', e);
69
+ return null;
70
+ }
71
+ finally {
72
+ con.release();
73
+ }
74
+ };
75
+ }
76
+ ;
77
+ export { MySQL };
78
+ //# sourceMappingURL=MySQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MySQL.js","sourceRoot":"","sources":["../../src/wrappers/MySQL.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import pg, { QueryResultRow } from 'pg';
2
+ interface Props {
3
+ host: string;
4
+ port?: number;
5
+ user: string;
6
+ password?: string;
7
+ database: string;
8
+ debug?: boolean;
9
+ }
10
+ declare class PostgreSQL {
11
+ private pool;
12
+ private debug;
13
+ constructor(props: Props);
14
+ query: <T extends QueryResultRow = any>(sql: string, keys?: any[]) => Promise<T[] | null>;
15
+ execute: (sql: string, keys?: any[]) => Promise<boolean>;
16
+ close: () => Promise<void>;
17
+ ping: () => Promise<boolean>;
18
+ transaction: <T>(cb: (con: pg.PoolClient) => Promise<T>) => Promise<T | null>;
19
+ }
20
+ export { PostgreSQL };
21
+ //# sourceMappingURL=PostgreSQL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQL.d.ts","sourceRoot":"","sources":["../../src/wrappers/PostgreSQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAe,cAAc,EAAE,MAAM,IAAI,CAAC;AAErD,UAAU,KAAK;IAEX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AACD,cAAM,UAAU;IAEZ,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,KAAK,CAAU;gBACX,KAAK,EAAE,KAAK;IAajB,KAAK,GAAS,CAAC,SAAS,cAAc,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,OAAO,GAAG,EAAE,KAAG,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAalG;IACK,OAAO,GAAS,KAAK,MAAM,EAAE,OAAO,GAAG,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC,CAajE;IACK,KAAK,QAAY,OAAO,CAAC,IAAI,CAAC,CAKnC;IACK,IAAI,QAAY,OAAO,CAAC,OAAO,CAAC,CAWrC;IACK,WAAW,GAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAqBtF;CACL;AACD,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,77 @@
1
+ import pg from 'pg';
2
+ ;
3
+ class PostgreSQL {
4
+ pool;
5
+ debug;
6
+ constructor(props) {
7
+ this.pool = new pg.Pool({
8
+ host: props.host,
9
+ port: props.port ?? 5432,
10
+ user: props.user,
11
+ password: props.password ?? '',
12
+ database: props.database
13
+ });
14
+ this.debug = props.debug ?? false;
15
+ if (this.debug)
16
+ console.log('[PostgreSQL] Pool connected.');
17
+ }
18
+ ;
19
+ query = async (sql, keys) => {
20
+ try {
21
+ let result = await this.pool.query(sql, keys);
22
+ return result.rows;
23
+ }
24
+ catch (e) {
25
+ if (this.debug)
26
+ console.error('[PostgreSQL Error]', e);
27
+ return null;
28
+ }
29
+ };
30
+ execute = async (sql, keys) => {
31
+ try {
32
+ await this.pool.query(sql, keys);
33
+ return true;
34
+ }
35
+ catch (e) {
36
+ if (this.debug)
37
+ console.error('[PostgreSQL Error]', e);
38
+ return false;
39
+ }
40
+ ;
41
+ };
42
+ close = async () => {
43
+ await this.pool.end();
44
+ if (this.debug)
45
+ console.log('[PostgreSQL] Pool closed.');
46
+ };
47
+ ping = async () => {
48
+ try {
49
+ await this.pool.query('SELECT 1');
50
+ return true;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ };
56
+ transaction = async (cb) => {
57
+ let con = await this.pool.connect();
58
+ try {
59
+ await con.query('BEGIN');
60
+ let result = await cb(con);
61
+ await con.query('COMMIT');
62
+ return result;
63
+ }
64
+ catch (e) {
65
+ await con.query('ROLLBACK');
66
+ if (this.debug)
67
+ console.error('[PostgreSQL Error]', e);
68
+ return null;
69
+ }
70
+ finally {
71
+ con.release();
72
+ }
73
+ };
74
+ }
75
+ ;
76
+ export { PostgreSQL };
77
+ //# sourceMappingURL=PostgreSQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQL.js","sourceRoot":"","sources":["../../src/wrappers/PostgreSQL.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ interface Props {
2
+ url: string;
3
+ debug?: boolean;
4
+ }
5
+ declare class Redis {
6
+ private client;
7
+ private debug;
8
+ constructor(props: Props);
9
+ connect: () => Promise<boolean>;
10
+ ping: () => Promise<boolean>;
11
+ get: <T>(key: string) => Promise<T | null>;
12
+ set: (key: string, value: any) => Promise<boolean>;
13
+ del: (key: string) => Promise<boolean>;
14
+ close: () => Promise<void>;
15
+ }
16
+ export { Redis };
17
+ //# sourceMappingURL=Redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../src/wrappers/Redis.ts"],"names":[],"mappings":"AAEA,UAAU,KAAK;IAEX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AACD,cAAM,KAAK;IAEP,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAU;gBACX,KAAK,EAAE,KAAK;IAQjB,OAAO,QAAY,OAAO,CAAC,OAAO,CAAC,CAexC;IACK,IAAI,QAAY,OAAO,CAAC,OAAO,CAAC,CAWrC;IACK,GAAG,GAAS,CAAC,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAsBnD;IACK,GAAG,GAAS,KAAK,MAAM,EAAE,OAAO,GAAG,KAAG,OAAO,CAAC,OAAO,CAAC,CAa3D;IACK,GAAG,GAAS,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAa/C;IACK,KAAK,QAAY,OAAO,CAAC,IAAI,CAAC,CAKnC;CACL;AACD,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { createClient } from "redis";
2
+ ;
3
+ class Redis {
4
+ client;
5
+ debug;
6
+ constructor(props) {
7
+ this.client = createClient({ url: props.url });
8
+ this.debug = props.debug ?? false;
9
+ if (this.debug)
10
+ console.log('[Redis] Client created.');
11
+ }
12
+ ;
13
+ connect = async () => {
14
+ try {
15
+ await this.client.connect();
16
+ if (this.debug)
17
+ console.log('[Redis] Client connected.');
18
+ return true;
19
+ }
20
+ catch (e) {
21
+ if (this.debug)
22
+ console.error('[Redis Error]', e);
23
+ return false;
24
+ }
25
+ };
26
+ ping = async () => {
27
+ try {
28
+ await this.client.ping();
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ };
35
+ get = async (key) => {
36
+ try {
37
+ let value = await this.client.get(key);
38
+ if (value === null)
39
+ return null;
40
+ try {
41
+ return JSON.parse(value);
42
+ }
43
+ catch {
44
+ return value;
45
+ }
46
+ }
47
+ catch (e) {
48
+ if (this.debug)
49
+ console.error('[Redis Error]', e);
50
+ return null;
51
+ }
52
+ };
53
+ set = async (key, value) => {
54
+ try {
55
+ await this.client.set(key, JSON.stringify(value));
56
+ return true;
57
+ }
58
+ catch (e) {
59
+ if (this.debug)
60
+ console.error('[Redis Error]', e);
61
+ return false;
62
+ }
63
+ };
64
+ del = async (key) => {
65
+ try {
66
+ await this.client.del(key);
67
+ return true;
68
+ }
69
+ catch (e) {
70
+ if (this.debug)
71
+ console.error('[Redis Error]', e);
72
+ return false;
73
+ }
74
+ };
75
+ close = async () => {
76
+ await this.client.close();
77
+ if (this.debug)
78
+ console.log('[Redis] Client closed.');
79
+ };
80
+ }
81
+ ;
82
+ export { Redis };
83
+ //# sourceMappingURL=Redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Redis.js","sourceRoot":"","sources":["../../src/wrappers/Redis.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@arcend/database",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "license": "ISC",
6
+ "author": "stevku",
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ }
18
+ },
19
+ "scripts": {
20
+ "dev": "npx ts-node ./src/index.ts",
21
+ "build": "npx tsc",
22
+ "start": "node ./dist/index.js"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^25.0.10",
26
+ "ts-node": "^10.9.2",
27
+ "typescript": "^5.9.3"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "dependencies": {
33
+ "@types/mongodb": "^4.0.6",
34
+ "@types/pg": "^8.16.0",
35
+ "@types/redis": "^4.0.10",
36
+ "mongodb": "^7.0.0",
37
+ "mysql2": "^3.16.1",
38
+ "pg": "^8.17.2",
39
+ "redis": "^5.10.0"
40
+ }
41
+ }