import { RelationalRawResult } from './relational-raw-result'; import { RuleContext } from '../permission'; import { DeleteSql, InsertSql, SelectSql, UpdateSql } from '../sql'; import { RelationalDeleteResult, RelationalInsertResult, RelationalUpdateResult } from '../client'; export interface RelationalAdapter { execRaw(sql: string, values: any[]): Promise; exec(sql: TQuery): Promise; supportsQuery(sql: S): this is RelationalAdapter; delete(sql: DeleteSql): Promise; update(sql: UpdateSql): Promise; insert(sql: InsertSql): Promise; select(sql: SelectSql): Promise; selectFirst(sql: SelectSql): Promise; close(): Promise; transaction(action: (adapter: RelationalTransactionAdapter) => void): Promise; } export interface RelationalTransactionAdapter { delete(sql: DeleteSql): void; insert(sql: InsertSql): void; update(sql: UpdateSql): void; execRaw(sql: string, values: any[]): void; supportsQuery(sql: S): this is RelationalTransactionAdapter; exec(sql: TQuery): void; } export interface RelationalAuthorizableAdapter { authorize(context: RuleContext): RelationalAuthorizedAdapter; } export interface RelationalAuthorizedAdapter extends RelationalAdapter { isAuthorized(sql: any): Promise; }