@l-v-yonsama/multi-platform-database-drivers 0.1.1 → 0.1.2
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.
- package/build/__tests__/db/drivers/AwsS3Driver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/AwsS3Driver.test.js +83 -0
- package/build/__tests__/db/drivers/AwsS3Driver.test.js.map +1 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.js +115 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.js.map +1 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.js +112 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.js.map +1 -0
- package/build/__tests__/db/drivers/RedisDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/RedisDriver.test.js +106 -0
- package/build/__tests__/db/drivers/RedisDriver.test.js.map +1 -0
- package/build/src/db/DBError.d.ts +7 -0
- package/build/src/db/DBError.js +20 -0
- package/build/src/db/DBError.js.map +1 -0
- package/build/src/db/drivers/AwsS3Driver.d.ts +38 -0
- package/build/src/db/drivers/AwsS3Driver.js +457 -0
- package/build/src/db/drivers/AwsS3Driver.js.map +1 -0
- package/build/src/db/drivers/BaseDriver.d.ts +40 -0
- package/build/src/db/drivers/BaseDriver.js +209 -0
- package/build/src/db/drivers/BaseDriver.js.map +1 -0
- package/build/src/db/drivers/MySQLDriver.d.ts +20 -0
- package/build/src/db/drivers/MySQLDriver.js +254 -0
- package/build/src/db/drivers/MySQLDriver.js.map +1 -0
- package/build/src/db/drivers/PostgresDriver.d.ts +22 -0
- package/build/src/db/drivers/PostgresDriver.js +297 -0
- package/build/src/db/drivers/PostgresDriver.js.map +1 -0
- package/build/src/db/drivers/RedisDriver.d.ts +23 -0
- package/build/src/db/drivers/RedisDriver.js +231 -0
- package/build/src/db/drivers/RedisDriver.js.map +1 -0
- package/build/src/db/manager.d.ts +8 -0
- package/build/src/db/manager.js +87 -0
- package/build/src/db/manager.js.map +1 -0
- package/build/src/db/resource/DbResource.d.ts +188 -0
- package/build/src/db/resource/DbResource.js +420 -0
- package/build/src/db/resource/DbResource.js.map +1 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.d.ts +29 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.js +106 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.js.map +1 -0
- package/build/src/db/resource/ResourceUtil.d.ts +39 -0
- package/build/src/db/resource/ResourceUtil.js +337 -0
- package/build/src/db/resource/ResourceUtil.js.map +1 -0
- package/build/src/db/resource/ResultSetDataHolder.d.ts +126 -0
- package/build/src/db/resource/ResultSetDataHolder.js +722 -0
- package/build/src/db/resource/ResultSetDataHolder.js.map +1 -0
- package/build/src/db/resource/types/DBType.d.ts +18 -0
- package/build/src/db/resource/types/DBType.js +52 -0
- package/build/src/db/resource/types/DBType.js.map +1 -0
- package/build/src/db/resource/types/GeneralColumnType.d.ts +75 -0
- package/build/src/db/resource/types/GeneralColumnType.js +332 -0
- package/build/src/db/resource/types/GeneralColumnType.js.map +1 -0
- package/build/src/db/resource/types/MySQLColumnType.d.ts +42 -0
- package/build/src/db/resource/types/MySQLColumnType.js +142 -0
- package/build/src/db/resource/types/MySQLColumnType.js.map +1 -0
- package/build/src/db/resource/types/ODBCVendorType.d.ts +3 -0
- package/build/src/db/resource/types/ODBCVendorType.js +8 -0
- package/build/src/db/resource/types/ODBCVendorType.js.map +1 -0
- package/build/src/db/resource/types/PostgresColumnType.d.ts +53 -0
- package/build/src/db/resource/types/PostgresColumnType.js +105 -0
- package/build/src/db/resource/types/PostgresColumnType.js.map +1 -0
- package/build/src/db/resource/types/RedisKeyType.d.ts +12 -0
- package/build/src/db/resource/types/RedisKeyType.js +55 -0
- package/build/src/db/resource/types/RedisKeyType.js.map +1 -0
- package/build/src/db/resource/types/ResourceType.d.ts +10 -0
- package/build/src/db/resource/types/ResourceType.js +15 -0
- package/build/src/db/resource/types/ResourceType.js.map +1 -0
- package/build/src/main.d.ts +0 -0
- package/build/src/main.js +3 -0
- package/build/src/main.js.map +1 -0
- package/build/src/service/request/general_db_request.d.ts +18 -0
- package/build/src/service/request/general_db_request.js +14 -0
- package/build/src/service/request/general_db_request.js.map +1 -0
- package/{src/service/request/redis_request.ts → build/src/service/request/redis_request.d.ts} +8 -11
- package/build/src/service/request/redis_request.js +14 -0
- package/build/src/service/request/redis_request.js.map +1 -0
- package/build/src/service/request/s3_request.d.ts +14 -0
- package/build/src/service/request/s3_request.js +12 -0
- package/build/src/service/request/s3_request.js.map +1 -0
- package/build/src/service/response/GeneralReponse.d.ts +6 -0
- package/build/src/service/response/GeneralReponse.js +12 -0
- package/build/src/service/response/GeneralReponse.js.map +1 -0
- package/build/src/types/DateModifiedType.d.ts +14 -0
- package/build/src/types/DateModifiedType.js +68 -0
- package/build/src/types/DateModifiedType.js.map +1 -0
- package/build/src/types/FileKindType.d.ts +12 -0
- package/build/src/types/FileKindType.js +75 -0
- package/build/src/types/FileKindType.js.map +1 -0
- package/build/src/util/file_util.d.ts +22 -0
- package/build/src/util/file_util.js +143 -0
- package/build/src/util/file_util.js.map +1 -0
- package/package.json +5 -1
- package/.editorconfig +0 -15
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -30
- package/.github/workflows/npm-publish-github-packages.yml +0 -50
- package/.prettierrc +0 -12
- package/__tests__/db/drivers/AwsS3Driver.test.ts +0 -97
- package/__tests__/db/drivers/MySQLDriver.test.ts +0 -140
- package/__tests__/db/drivers/PostgresDriver.test.ts +0 -139
- package/__tests__/db/drivers/RedisDriver.test.ts +0 -156
- package/jest.config.js +0 -18
- package/src/db/DBError.ts +0 -26
- package/src/db/drivers/AwsS3Driver.ts +0 -539
- package/src/db/drivers/BaseDriver.ts +0 -256
- package/src/db/drivers/MongoDriver.js +0 -110
- package/src/db/drivers/MySQLDriver.ts +0 -318
- package/src/db/drivers/PostgresDriver.ts +0 -363
- package/src/db/drivers/RedisDriver.ts +0 -277
- package/src/db/manager.ts +0 -95
- package/src/db/resource/DbResource.ts +0 -579
- package/src/db/resource/MultipleResultSetDataHolder.ts +0 -119
- package/src/db/resource/ResourceUtil.ts +0 -366
- package/src/db/resource/ResultSetDataHolder.ts +0 -806
- package/src/db/resource/types/DBType.ts +0 -43
- package/src/db/resource/types/GeneralColumnType.ts +0 -321
- package/src/db/resource/types/MySQLColumnType.ts +0 -134
- package/src/db/resource/types/ODBCVendorType.ts +0 -3
- package/src/db/resource/types/PostgresColumnType.ts +0 -94
- package/src/db/resource/types/RedisKeyType.ts +0 -48
- package/src/db/resource/types/ResourceType.ts +0 -10
- package/src/main.ts +0 -1
- package/src/service/request/general_db_request.ts +0 -20
- package/src/service/request/s3_request.ts +0 -15
- package/src/service/response/GeneralReponse.ts +0 -10
- package/src/types/DateModifiedType.ts +0 -75
- package/src/types/FileKindType.ts +0 -80
- package/src/util/file_util.ts +0 -178
- package/tsconfig.json +0 -23
- package/tsconfig.release.json +0 -23
- package/unit-test.yml +0 -41
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import MySQLDriver from '../../../src/db/drivers/MySQLDriver';
|
|
2
|
-
import {
|
|
3
|
-
DbConnection,
|
|
4
|
-
DbResource,
|
|
5
|
-
DbSchema,
|
|
6
|
-
DbTable,
|
|
7
|
-
DbColumn,
|
|
8
|
-
} from '../../../src/db/resource/DbResource';
|
|
9
|
-
import { DBType } from '../../../src/db/resource/types/DBType';
|
|
10
|
-
import * as mysql from 'mysql2/promise';
|
|
11
|
-
import { ResultSetHeader } from 'mysql2/promise';
|
|
12
|
-
import { GeneralColumnType } from '../../../src/db/resource/types/GeneralColumnType';
|
|
13
|
-
|
|
14
|
-
const baseConnectOption = {
|
|
15
|
-
host: '127.0.0.1',
|
|
16
|
-
port: 6001,
|
|
17
|
-
user: 'testuser',
|
|
18
|
-
password: 'testpass',
|
|
19
|
-
database: 'testdb',
|
|
20
|
-
};
|
|
21
|
-
const connectOption = {
|
|
22
|
-
...baseConnectOption,
|
|
23
|
-
db_type: DBType.MySQL,
|
|
24
|
-
enviroment: 'ut',
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const CREATE_TABLE_STATEMENT = `
|
|
28
|
-
CREATE TABLE testtable (
|
|
29
|
-
ID int auto_increment PRIMARY KEY,
|
|
30
|
-
n0 BIT,
|
|
31
|
-
n1 TINYINT COMMENT 'MAX 127',
|
|
32
|
-
n2 SMALLINT COMMENT 'MAX 32767',
|
|
33
|
-
n3 MEDIUMINT COMMENT 'MAX 8388607',
|
|
34
|
-
n4 BIGINT COMMENT 'MAX 9223372036854775807',
|
|
35
|
-
f1 DECIMAL(6,4),
|
|
36
|
-
f2 FLOAT,
|
|
37
|
-
f3 DOUBLE,
|
|
38
|
-
|
|
39
|
-
d1 DATE COMMENT '“Zero” Value 0000-00-00',
|
|
40
|
-
d2 TIME COMMENT '“Zero” Value 00:00:00',
|
|
41
|
-
d3 DATETIME COMMENT '“Zero” Value 0000-00-00 00:00:00',
|
|
42
|
-
d4 TIMESTAMP COMMENT '“Zero” Value 0000-00-00 00:00:00',
|
|
43
|
-
d5 YEAR COMMENT '“Zero” Value 0000',
|
|
44
|
-
|
|
45
|
-
s1 CHAR(10),
|
|
46
|
-
s2 VARCHAR(10),
|
|
47
|
-
s3 TEXT,
|
|
48
|
-
s4 ENUM('a','b','c') COMMENT 'A list of a,b or c',
|
|
49
|
-
s5 BINARY(10),
|
|
50
|
-
s6 VARBINARY(10),
|
|
51
|
-
s7 BLOB,
|
|
52
|
-
s8 SET('a','b','c'),
|
|
53
|
-
|
|
54
|
-
g1 geometry NOT NULL,
|
|
55
|
-
|
|
56
|
-
j1 JSON COMMENT 'JSON data type'
|
|
57
|
-
|
|
58
|
-
) COMMENT='table with various data types'
|
|
59
|
-
`;
|
|
60
|
-
|
|
61
|
-
describe('MySQLDriver', () => {
|
|
62
|
-
let driver: MySQLDriver;
|
|
63
|
-
let conRes: DbConnection;
|
|
64
|
-
let con: mysql.Connection;
|
|
65
|
-
|
|
66
|
-
beforeAll(async () => {
|
|
67
|
-
driver = createDriver();
|
|
68
|
-
|
|
69
|
-
con = await mysql.createConnection(baseConnectOption);
|
|
70
|
-
|
|
71
|
-
await con.connect();
|
|
72
|
-
|
|
73
|
-
await con.execute('DROP TABLE IF EXISTS testtable');
|
|
74
|
-
|
|
75
|
-
await con.execute<ResultSetHeader>(CREATE_TABLE_STATEMENT);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
afterAll(async () => {
|
|
79
|
-
await driver.asyncClose();
|
|
80
|
-
con.destroy();
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('asyncConnect', async () => {
|
|
84
|
-
expect(await driver.asyncConnect()).toBe('');
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe('getName', () => {
|
|
88
|
-
it('should return constructor name', () => {
|
|
89
|
-
expect(driver.getName()).toBe('MySQLDriver');
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
describe('asyncGetResouces', () => {
|
|
94
|
-
let testDbRes: DbResource;
|
|
95
|
-
let testSchemaRes: DbSchema;
|
|
96
|
-
let testTableRes: DbTable;
|
|
97
|
-
|
|
98
|
-
it('should return Database resource', async () => {
|
|
99
|
-
const dbRootRes = await driver.getResouces({});
|
|
100
|
-
expect(dbRootRes).toHaveLength(1);
|
|
101
|
-
testDbRes = dbRootRes[0];
|
|
102
|
-
expect(testDbRes.getName()).toBe(driver.getConnectionRes().database);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('should have Schema resource', async () => {
|
|
106
|
-
expect(testDbRes.getChildren()).toHaveLength(1);
|
|
107
|
-
testSchemaRes = testDbRes.getChildren()[0];
|
|
108
|
-
expect(testSchemaRes.getName()).toBe('testdb');
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it('should have Table resource', async () => {
|
|
112
|
-
testTableRes = testSchemaRes.getChildByName('testtable') as DbTable;
|
|
113
|
-
expect(testTableRes.getName()).toBe('testtable');
|
|
114
|
-
expect(testTableRes.table_type).toBe('TABLE');
|
|
115
|
-
expect(testTableRes.comment).toBe('table with various data types');
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('should have Column resource', async () => {
|
|
119
|
-
// ID
|
|
120
|
-
const idRes = testTableRes.getChildByName('ID') as DbColumn;
|
|
121
|
-
expect(idRes.col_type).toBe(GeneralColumnType.INTEGER);
|
|
122
|
-
expect(idRes.nullable).toBe(false);
|
|
123
|
-
expect(idRes.key).toBe('PRI');
|
|
124
|
-
expect(idRes.extra).toBe('auto_increment');
|
|
125
|
-
// n0
|
|
126
|
-
const n0Res = testTableRes.getChildByName('n0') as DbColumn;
|
|
127
|
-
expect(n0Res.col_type).toBe(GeneralColumnType.BIT);
|
|
128
|
-
expect(n0Res.nullable).toBe(true);
|
|
129
|
-
// n1
|
|
130
|
-
const n1Res = testTableRes.getChildByName('n1') as DbColumn;
|
|
131
|
-
expect(n1Res.col_type).toBe(GeneralColumnType.TINYINT);
|
|
132
|
-
expect(n1Res.nullable).toBe(true);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
function createDriver(): MySQLDriver {
|
|
137
|
-
conRes = new DbConnection(connectOption);
|
|
138
|
-
return new MySQLDriver(conRes);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import PostgresDriver from '../../../src/db/drivers/PostgresDriver';
|
|
2
|
-
import {
|
|
3
|
-
DbConnection,
|
|
4
|
-
DbResource,
|
|
5
|
-
DbSchema,
|
|
6
|
-
DbTable,
|
|
7
|
-
DbColumn,
|
|
8
|
-
} from '../../../src/db/resource/DbResource';
|
|
9
|
-
import { DBType } from '../../../src/db/resource/types/DBType';
|
|
10
|
-
import { default as pg } from 'pg';
|
|
11
|
-
import { GeneralColumnType } from '../../../src/db/resource/types/GeneralColumnType';
|
|
12
|
-
|
|
13
|
-
const baseConnectOption = {
|
|
14
|
-
host: '127.0.0.1',
|
|
15
|
-
port: 6002,
|
|
16
|
-
user: 'testuser',
|
|
17
|
-
password: 'testpass',
|
|
18
|
-
database: 'testdb',
|
|
19
|
-
};
|
|
20
|
-
const connectOption = {
|
|
21
|
-
...baseConnectOption,
|
|
22
|
-
db_type: DBType.Postgres,
|
|
23
|
-
enviroment: 'ut',
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const CREATE_TABLE_STATEMENT = `
|
|
27
|
-
CREATE TABLE testtable (
|
|
28
|
-
ID SERIAL NOT NULL PRIMARY KEY,
|
|
29
|
-
n0 BIT,
|
|
30
|
-
n1 INT,
|
|
31
|
-
n2 BIGINT,
|
|
32
|
-
n3 SMALLSERIAL,
|
|
33
|
-
n4 BIGSERIAL,
|
|
34
|
-
f1 NUMERIC(6,4),
|
|
35
|
-
f2 DOUBLE PRECISION,
|
|
36
|
-
f3 REAL,
|
|
37
|
-
|
|
38
|
-
d1 DATE,
|
|
39
|
-
d2 TIME,
|
|
40
|
-
d3 TIMESTAMP,
|
|
41
|
-
d4 TIMESTAMP WITH TIME ZONE,
|
|
42
|
-
d5 INTERVAL YEAR,
|
|
43
|
-
|
|
44
|
-
s1 CHAR(10),
|
|
45
|
-
s2 VARCHAR(10),
|
|
46
|
-
s3 TEXT,
|
|
47
|
-
s4 mood,
|
|
48
|
-
s5 BYTEA,
|
|
49
|
-
s6 uuid,
|
|
50
|
-
|
|
51
|
-
j1 JSON
|
|
52
|
-
|
|
53
|
-
)`;
|
|
54
|
-
|
|
55
|
-
describe('PostgresDriver', () => {
|
|
56
|
-
let driver: PostgresDriver;
|
|
57
|
-
let conRes: DbConnection;
|
|
58
|
-
let client: pg.Client;
|
|
59
|
-
|
|
60
|
-
beforeAll(async () => {
|
|
61
|
-
driver = createDriver();
|
|
62
|
-
|
|
63
|
-
client = new pg.Client(baseConnectOption);
|
|
64
|
-
|
|
65
|
-
await client.connect();
|
|
66
|
-
|
|
67
|
-
await client.query('DROP TABLE IF EXISTS testtable');
|
|
68
|
-
await client.query('DROP TYPE IF EXISTS mood');
|
|
69
|
-
await client.query("CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')");
|
|
70
|
-
|
|
71
|
-
await client.query(CREATE_TABLE_STATEMENT);
|
|
72
|
-
|
|
73
|
-
await client.query(
|
|
74
|
-
"COMMENT ON TABLE testtable IS 'table with various data types'",
|
|
75
|
-
);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
afterAll(async () => {
|
|
79
|
-
await driver.asyncClose();
|
|
80
|
-
client.end();
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('asyncConnect', async () => {
|
|
84
|
-
expect(await driver.asyncConnect()).toBe('');
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe('getName', () => {
|
|
88
|
-
it('should return constructor name', () => {
|
|
89
|
-
expect(driver.getName()).toBe('PostgresDriver');
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
describe('asyncGetResouces', () => {
|
|
94
|
-
let testDbRes: DbResource;
|
|
95
|
-
let testSchemaRes: DbSchema;
|
|
96
|
-
let testTableRes: DbTable;
|
|
97
|
-
|
|
98
|
-
it('should return Database resource', async () => {
|
|
99
|
-
const dbRootRes = await driver.getResouces({});
|
|
100
|
-
testDbRes = dbRootRes.find((it) => it.name === 'testdb');
|
|
101
|
-
expect(testDbRes.getName()).toBe(driver.getConnectionRes().database);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('should have Schema resource', async () => {
|
|
105
|
-
expect(testDbRes.getChildren()).toHaveLength(1);
|
|
106
|
-
testSchemaRes = testDbRes.getChildren()[0];
|
|
107
|
-
expect(testSchemaRes.getName()).toBe('public');
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it('should have Table resource', async () => {
|
|
111
|
-
testTableRes = testSchemaRes.getChildByName('testtable') as DbTable;
|
|
112
|
-
expect(testTableRes.getName()).toBe('testtable');
|
|
113
|
-
expect(testTableRes.table_type).toBe('TABLE');
|
|
114
|
-
expect(testTableRes.comment).toBe('table with various data types');
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should have Column resource', async () => {
|
|
118
|
-
// ID
|
|
119
|
-
const idRes = testTableRes.getChildByName('ID') as DbColumn;
|
|
120
|
-
expect(idRes.col_type).toBe(GeneralColumnType.INTEGER);
|
|
121
|
-
expect(idRes.nullable).toBe(false);
|
|
122
|
-
expect(idRes.key).toBe('PRI');
|
|
123
|
-
expect(idRes.default).toContain('nextval');
|
|
124
|
-
// n0
|
|
125
|
-
const n0Res = testTableRes.getChildByName('n0') as DbColumn;
|
|
126
|
-
expect(n0Res.col_type).toBe(GeneralColumnType.BIT);
|
|
127
|
-
expect(n0Res.nullable).toBe(true);
|
|
128
|
-
// n1
|
|
129
|
-
const n1Res = testTableRes.getChildByName('n1') as DbColumn;
|
|
130
|
-
expect(n1Res.col_type).toBe(GeneralColumnType.INTEGER);
|
|
131
|
-
expect(n1Res.nullable).toBe(true);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
function createDriver(): PostgresDriver {
|
|
136
|
-
conRes = new DbConnection(connectOption);
|
|
137
|
-
return new PostgresDriver(conRes);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import RedisDriver from '../../../src/db/drivers/RedisDriver';
|
|
2
|
-
import { Redis, RedisOptions } from 'ioredis';
|
|
3
|
-
import {
|
|
4
|
-
DbConnection,
|
|
5
|
-
DbKey,
|
|
6
|
-
RedisDatabase,
|
|
7
|
-
} from '../../../src/db/resource/DbResource';
|
|
8
|
-
import {
|
|
9
|
-
RedisCommandType,
|
|
10
|
-
RedisRequest,
|
|
11
|
-
} from '../../../src/service/request/redis_request';
|
|
12
|
-
import { RedisKeyType } from '../../../src/db/resource/types/RedisKeyType';
|
|
13
|
-
|
|
14
|
-
const connectOption: RedisOptions = {
|
|
15
|
-
port: 6000, // Redis port
|
|
16
|
-
host: '127.0.0.1', // Redis host
|
|
17
|
-
password: 'testpass',
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
describe('RedisDriver', () => {
|
|
21
|
-
let redisClient: Redis;
|
|
22
|
-
let driver: RedisDriver;
|
|
23
|
-
|
|
24
|
-
beforeAll(async () => {
|
|
25
|
-
redisClient = new Redis({ ...connectOption, db: 0 });
|
|
26
|
-
driver = createDriver();
|
|
27
|
-
await redisClient.flushall();
|
|
28
|
-
await redisClient.set('s1', 'text', 'EX', 100);
|
|
29
|
-
const user = {
|
|
30
|
-
name: 'Bob',
|
|
31
|
-
// The value of a Redis key can not be a number.
|
|
32
|
-
// We can write `age: 20` here but ioredis will convert it to a string anyway.
|
|
33
|
-
age: '20',
|
|
34
|
-
description: 'I am a programmer',
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
await redisClient.mset(user);
|
|
38
|
-
await redisClient.hmset('user-hash', user);
|
|
39
|
-
await redisClient.zadd(
|
|
40
|
-
'sortedSet',
|
|
41
|
-
1,
|
|
42
|
-
'one',
|
|
43
|
-
2,
|
|
44
|
-
'dos',
|
|
45
|
-
4,
|
|
46
|
-
'quatro',
|
|
47
|
-
3,
|
|
48
|
-
'three',
|
|
49
|
-
);
|
|
50
|
-
await redisClient.set('n1', 1);
|
|
51
|
-
await redisClient.rpush('list3', '1', '2', '3');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
afterAll(async () => {
|
|
55
|
-
await redisClient.quit();
|
|
56
|
-
await driver.asyncClose();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('asyncConnect', async () => {
|
|
60
|
-
expect(await driver.asyncConnect()).toBe('');
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe('getName', () => {
|
|
64
|
-
it('should return constructor name', () => {
|
|
65
|
-
expect(driver.getName()).toBe('RedisDriver');
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('asyncGetResouces', () => {
|
|
70
|
-
let testRedisDb0Res: RedisDatabase;
|
|
71
|
-
|
|
72
|
-
it('should return Database resource', async () => {
|
|
73
|
-
const dbRootRes = await driver.getResouces({});
|
|
74
|
-
expect(dbRootRes).toHaveLength(16);
|
|
75
|
-
testRedisDb0Res = dbRootRes[0] as RedisDatabase;
|
|
76
|
-
expect(testRedisDb0Res.getName()).toBe(
|
|
77
|
-
driver.getConnectionRes().database,
|
|
78
|
-
);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('asyncScan', () => {
|
|
83
|
-
it('should return values', async () => {
|
|
84
|
-
const keys = await driver.scan(
|
|
85
|
-
0,
|
|
86
|
-
'*',
|
|
87
|
-
1000,
|
|
88
|
-
true,
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
90
|
-
() => {},
|
|
91
|
-
);
|
|
92
|
-
let key = keys.find((it) => it.name === 'n1');
|
|
93
|
-
expect(key.val).toBe('1');
|
|
94
|
-
expect(key.type).toBe(RedisKeyType.string);
|
|
95
|
-
expect(key.ttl).toBe(-1);
|
|
96
|
-
|
|
97
|
-
key = keys.find((it) => it.name === 'age');
|
|
98
|
-
expect(key.val).toBe('20');
|
|
99
|
-
expect(key.type).toBe(RedisKeyType.string);
|
|
100
|
-
|
|
101
|
-
key = keys.find((it) => it.name === 'name');
|
|
102
|
-
expect(key.val).toBe('Bob');
|
|
103
|
-
expect(key.type).toBe(RedisKeyType.string);
|
|
104
|
-
|
|
105
|
-
key = keys.find((it) => it.name === 'description');
|
|
106
|
-
expect(key.val).toBe('I am a programmer');
|
|
107
|
-
expect(key.type).toBe(RedisKeyType.string);
|
|
108
|
-
|
|
109
|
-
key = keys.find((it) => it.name === 'user-hash');
|
|
110
|
-
expect(key.val).toEqual({
|
|
111
|
-
name: 'Bob',
|
|
112
|
-
age: '20',
|
|
113
|
-
description: 'I am a programmer',
|
|
114
|
-
});
|
|
115
|
-
expect(key.type).toBe(RedisKeyType.hash);
|
|
116
|
-
|
|
117
|
-
key = keys.find((it) => it.name === 'list3');
|
|
118
|
-
expect(key.val).toEqual(['1', '2', '3']);
|
|
119
|
-
expect(key.type).toBe(RedisKeyType.list);
|
|
120
|
-
|
|
121
|
-
key = keys.find((it) => it.name === 'sortedSet');
|
|
122
|
-
expect(key.val).toEqual(['one', 'dos', 'three', 'quatro']);
|
|
123
|
-
expect(key.type).toBe(RedisKeyType.zset);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
describe('RedisCommandType.GetValue', () => {
|
|
128
|
-
it('should return values', async () => {
|
|
129
|
-
const key = (await driver.executeCommand(
|
|
130
|
-
createRedisRequest(RedisCommandType.GetValue, {
|
|
131
|
-
key: 'n1',
|
|
132
|
-
type: RedisKeyType.string,
|
|
133
|
-
}),
|
|
134
|
-
)) as DbKey;
|
|
135
|
-
expect(key.val).toBe('1');
|
|
136
|
-
expect(key.ttl).toBe(-1);
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
function createDriver(): RedisDriver {
|
|
141
|
-
const con = new DbConnection({ ...connectOption, database: '0' });
|
|
142
|
-
return new RedisDriver(con);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function createRedisRequest(
|
|
146
|
-
command: RedisCommandType,
|
|
147
|
-
options: { key?: string; type?: RedisKeyType },
|
|
148
|
-
): RedisRequest {
|
|
149
|
-
return {
|
|
150
|
-
connection_id: '1',
|
|
151
|
-
index: 0,
|
|
152
|
-
command,
|
|
153
|
-
...options,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
});
|
package/jest.config.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
testEnvironment: 'node',
|
|
3
|
-
preset: 'ts-jest/presets/default-esm',
|
|
4
|
-
transform: {
|
|
5
|
-
'^.+\\.m?[tj]s?$': ['ts-jest', { useESM: true }],
|
|
6
|
-
},
|
|
7
|
-
moduleNameMapper: {
|
|
8
|
-
'^(\\.{1,2}/.*)\\.(m)?js$': '$1',
|
|
9
|
-
},
|
|
10
|
-
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(m)?ts$',
|
|
11
|
-
coverageDirectory: 'coverage',
|
|
12
|
-
collectCoverageFrom: [
|
|
13
|
-
'src/**/*.ts',
|
|
14
|
-
'src/**/*.mts',
|
|
15
|
-
'!src/**/*.d.ts',
|
|
16
|
-
'!src/**/*.d.mts',
|
|
17
|
-
],
|
|
18
|
-
};
|
package/src/db/DBError.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export default class DBError extends Error {
|
|
2
|
-
public code: any;
|
|
3
|
-
public errno: any;
|
|
4
|
-
public sqlMessage: any;
|
|
5
|
-
public sqlState: any;
|
|
6
|
-
|
|
7
|
-
constructor(
|
|
8
|
-
message: any,
|
|
9
|
-
code: any,
|
|
10
|
-
errno: any,
|
|
11
|
-
sqlMessage: any,
|
|
12
|
-
sqlState: any,
|
|
13
|
-
) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.name = this.constructor.name;
|
|
16
|
-
if (typeof Error.captureStackTrace === 'function') {
|
|
17
|
-
Error.captureStackTrace(this, this.constructor);
|
|
18
|
-
} else {
|
|
19
|
-
this.stack = new Error(message).stack;
|
|
20
|
-
}
|
|
21
|
-
this.code = code;
|
|
22
|
-
this.errno = errno;
|
|
23
|
-
this.sqlMessage = sqlMessage;
|
|
24
|
-
this.sqlState = sqlState;
|
|
25
|
-
}
|
|
26
|
-
}
|