mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 13:39:24 +08:00
feat: mssql client
This commit is contained in:
parent
46a77d265b
commit
d8a34bc930
@ -71,6 +71,7 @@
|
|||||||
"pg-hstore": "^2.3.4",
|
"pg-hstore": "^2.3.4",
|
||||||
"sqlite3": "^5.0.8",
|
"sqlite3": "^5.0.8",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
|
"tedious": "^18.6.1",
|
||||||
"vite": "^5.0.0",
|
"vite": "^5.0.0",
|
||||||
"vitest": "^1.5.0",
|
"vitest": "^1.5.0",
|
||||||
"vitest-dom": "^0.1.1",
|
"vitest-dom": "^0.1.1",
|
||||||
|
@ -7,13 +7,14 @@
|
|||||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import http from 'http';
|
|
||||||
import url from 'url';
|
|
||||||
import pg from 'pg';
|
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
import path from 'path';
|
import http from 'http';
|
||||||
import mysql from 'mysql2/promise';
|
|
||||||
import mariadb from 'mariadb';
|
import mariadb from 'mariadb';
|
||||||
|
import mysql from 'mysql2/promise';
|
||||||
|
import path from 'path';
|
||||||
|
import pg from 'pg';
|
||||||
|
import { Connection, Request } from 'tedious';
|
||||||
|
import url from 'url';
|
||||||
|
|
||||||
dotenv.config({ path: path.resolve(process.cwd(), '.env.test') });
|
dotenv.config({ path: path.resolve(process.cwd(), '.env.test') });
|
||||||
|
|
||||||
@ -135,6 +136,63 @@ class MariaDBClient extends BaseClient<any> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MSSQLClient extends BaseClient<Connection> {
|
||||||
|
async _createConnection(): Promise<Connection> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const connection = new Connection({
|
||||||
|
server: process.env['DB_HOST'],
|
||||||
|
authentication: {
|
||||||
|
type: 'default',
|
||||||
|
options: {
|
||||||
|
userName: process.env['DB_USER'],
|
||||||
|
password: process.env['DB_PASSWORD'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
port: Number(process.env['DB_PORT']),
|
||||||
|
database: 'master',
|
||||||
|
trustServerCertificate: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
connection.on('connect', (err) => {
|
||||||
|
if (err) return reject(err);
|
||||||
|
resolve(connection);
|
||||||
|
});
|
||||||
|
|
||||||
|
connection.connect();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async _createDB(name: string): Promise<void> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const sql = `IF DB_ID('${name}') IS NULL CREATE DATABASE [${name}]`;
|
||||||
|
const request = new Request(sql, (err) => {
|
||||||
|
if (err) return reject(err);
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
this._client.execSql(request);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async _removeDB(name: string): Promise<void> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const sql = `
|
||||||
|
IF DB_ID('${name}') IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
ALTER DATABASE [${name}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
||||||
|
DROP DATABASE [${name}];
|
||||||
|
END
|
||||||
|
`;
|
||||||
|
const request = new Request(sql, (err) => {
|
||||||
|
if (err) return reject(err);
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
this._client.execSql(request);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const client = {
|
const client = {
|
||||||
postgres: () => {
|
postgres: () => {
|
||||||
return new PostgresClient();
|
return new PostgresClient();
|
||||||
@ -145,6 +203,9 @@ const client = {
|
|||||||
mariadb: () => {
|
mariadb: () => {
|
||||||
return new MariaDBClient();
|
return new MariaDBClient();
|
||||||
},
|
},
|
||||||
|
mssql: () => {
|
||||||
|
return new MSSQLClient();
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const dialect = process.env['DB_DIALECT'];
|
const dialect = process.env['DB_DIALECT'];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user