Skip to content

Commit 9a4443b

Browse files
authored
feat: support oracledb (#13)
1 parent c36b535 commit 9a4443b

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ we currently supports the following SQL drives:
2121
- [x] mysql
2222
- [x] mysql2
2323
- [x] sqlite3
24-
- [ ] oracledb
24+
- [x] oracledb
2525
- [x] mssql
2626

2727
## Installation

src/adapter.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type * as mysql from 'mysql';
1919
import type * as mysql2 from 'mysql2/promise';
2020
import type * as sqlite3 from 'sqlite3';
2121
import type * as mssql from 'mssql';
22-
// import type * as oracledb from 'oracledb';
22+
import type * as oracledb from 'oracledb';
2323

2424
import { Helper } from 'casbin';
2525
import * as Knex from 'knex';
@@ -33,6 +33,7 @@ export type Instance = {
3333
mysql2: Promise<mysql2.Connection>;
3434
sqlite3: sqlite3.Database;
3535
mssql: mssql.ConnectionPool;
36+
oracledb: Promise<oracledb.Connection>;
3637
};
3738

3839
const CasbinRuleTable = 'casbin_rule';
@@ -103,13 +104,13 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
103104
return true;
104105
}
105106

106-
async addPolicy(sec: string, ptype: string, rule: string[]): Promise<void> {
107+
async addPolicy(_sec: string, ptype: string, rule: string[]): Promise<void> {
107108
const line = this.savePolicyLine(ptype, rule);
108109
await this.query(this.knex.insert(line).into(CasbinRuleTable).toQuery());
109110
}
110111

111112
async addPolicies(
112-
sec: string,
113+
_sec: string,
113114
ptype: string,
114115
rules: string[][]
115116
): Promise<void> {
@@ -126,7 +127,7 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
126127
}
127128

128129
async removePolicy(
129-
sec: string,
130+
_sec: string,
130131
ptype: string,
131132
rule: string[]
132133
): Promise<void> {
@@ -137,7 +138,7 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
137138
}
138139

139140
async removePolicies(
140-
sec: string,
141+
_sec: string,
141142
ptype: string,
142143
rules: string[][]
143144
): Promise<void> {
@@ -154,7 +155,7 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
154155
}
155156

156157
async removeFilteredPolicy(
157-
sec: string,
158+
_sec: string,
158159
ptype: string,
159160
fieldIndex: number,
160161
...fieldValues: string[]
@@ -215,6 +216,11 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
215216
case 'mssql': {
216217
await (<BasicAdapter<'mssql'>>this).client.close();
217218

219+
break;
220+
}
221+
case 'oracledb': {
222+
await (await (<BasicAdapter<'oracledb'>>this).client).close();
223+
218224
break;
219225
}
220226
}
@@ -302,6 +308,11 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
302308
case 'mssql': {
303309
await (<BasicAdapter<'mssql'>>this).client.connect();
304310

311+
break;
312+
}
313+
case 'oracledb': {
314+
await (<BasicAdapter<'oracledb'>>this).client;
315+
305316
break;
306317
}
307318
}
@@ -352,6 +363,15 @@ export class BasicAdapter<T extends keyof Instance> implements Adapter {
352363
result = ((await (<BasicAdapter<'mssql'>>this).client.query(sql))
353364
.recordset as unknown) as CasbinRule[] | undefined;
354365

366+
break;
367+
}
368+
case 'oracledb': {
369+
result = (
370+
await (await (<BasicAdapter<'oracledb'>>this).client).execute<
371+
CasbinRule
372+
>(sql)
373+
).rows;
374+
355375
break;
356376
}
357377
}

0 commit comments

Comments
 (0)