From 3e7e9f0990dc47f9702e7ba45f893c3aa9506db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E6=9D=89?= Date: Sun, 6 Sep 2020 21:00:06 +0800 Subject: [PATCH] feat: support oracledb --- README.md | 2 +- src/adapter.ts | 32 ++++++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 73939a4..5199187 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ we currently supports the following SQL drives: - [x] mysql - [x] mysql2 - [x] sqlite3 -- [ ] oracledb +- [x] oracledb - [x] mssql ## Installation diff --git a/src/adapter.ts b/src/adapter.ts index ed7cfa1..d103eba 100644 --- a/src/adapter.ts +++ b/src/adapter.ts @@ -19,7 +19,7 @@ import type * as mysql from 'mysql'; import type * as mysql2 from 'mysql2/promise'; import type * as sqlite3 from 'sqlite3'; import type * as mssql from 'mssql'; -// import type * as oracledb from 'oracledb'; +import type * as oracledb from 'oracledb'; import { Helper } from 'casbin'; import * as Knex from 'knex'; @@ -33,6 +33,7 @@ export type Instance = { mysql2: Promise; sqlite3: sqlite3.Database; mssql: mssql.ConnectionPool; + oracledb: Promise; }; const CasbinRuleTable = 'casbin_rule'; @@ -103,13 +104,13 @@ export class BasicAdapter implements Adapter { return true; } - async addPolicy(sec: string, ptype: string, rule: string[]): Promise { + async addPolicy(_sec: string, ptype: string, rule: string[]): Promise { const line = this.savePolicyLine(ptype, rule); await this.query(this.knex.insert(line).into(CasbinRuleTable).toQuery()); } async addPolicies( - sec: string, + _sec: string, ptype: string, rules: string[][] ): Promise { @@ -126,7 +127,7 @@ export class BasicAdapter implements Adapter { } async removePolicy( - sec: string, + _sec: string, ptype: string, rule: string[] ): Promise { @@ -137,7 +138,7 @@ export class BasicAdapter implements Adapter { } async removePolicies( - sec: string, + _sec: string, ptype: string, rules: string[][] ): Promise { @@ -154,7 +155,7 @@ export class BasicAdapter implements Adapter { } async removeFilteredPolicy( - sec: string, + _sec: string, ptype: string, fieldIndex: number, ...fieldValues: string[] @@ -215,6 +216,11 @@ export class BasicAdapter implements Adapter { case 'mssql': { await (>this).client.close(); + break; + } + case 'oracledb': { + await (await (>this).client).close(); + break; } } @@ -302,6 +308,11 @@ export class BasicAdapter implements Adapter { case 'mssql': { await (>this).client.connect(); + break; + } + case 'oracledb': { + await (>this).client; + break; } } @@ -352,6 +363,15 @@ export class BasicAdapter implements Adapter { result = ((await (>this).client.query(sql)) .recordset as unknown) as CasbinRule[] | undefined; + break; + } + case 'oracledb': { + result = ( + await (await (>this).client).execute< + CasbinRule + >(sql) + ).rows; + break; } }