Files
alighasami 3d5eaf9445
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
first commit
2026-03-17 16:22:57 +03:30

139 lines
3.8 KiB
TypeScript

import type { DateTime } from 'luxon';
import type { IDataObject, INodeExecutionData } from 'n8n-workflow';
import type * as oracleDBTypes from 'oracledb';
export type QueryMode = 'single' | 'transaction' | 'independently';
export type ObjectQueryValue = Extract<oracleDBTypes.BindParameters, Record<string, unknown>>;
// For execute
export type QueryValue =
| ObjectQueryValue // named binds in object form
| oracleDBTypes.BindParameters; // positional binds in array form
// A query string along with its bind values.
export type QueryWithValues = {
query: string;
values?: QueryValue; // For execute
executeManyValues?: QueryValue[]; // for executeMany
outputColumns?: string[]; // RETURNING INTO columns in sql string
};
export type WhereClause = { column: string; condition: string; value: any };
export type SortRule = { column: string; direction: string };
export type ColumnInfo = {
columnName: string;
dataType: string;
isNullable: boolean;
udtName?: string;
columnDefault?: string | null;
isGenerated?: 'ALWAYS' | 'NEVER';
identityGeneration?: 'ALWAYS' | 'NEVER';
maxSize: number;
};
export type QueriesRunner = (
queries: QueryWithValues[],
items: INodeExecutionData[],
options: IDataObject,
) => Promise<INodeExecutionData[]>;
export type OracleDBNodeOptions = {
nodeVersion?: number;
operation?: string;
// Connection options
poolPingInterval?: number;
poolPingTimeout?: number;
stmtCacheSize?: number;
poolMax?: number;
poolMin?: number;
poolIncrement?: number;
// Execute options
autoCommit?: boolean;
bindDefs?: oracleDBTypes.BindDefinition[];
batchErrors?: boolean;
fetchArraySize?: number;
keepInStmtCache?: boolean;
maxRows?: number;
prefetchRows?: number;
// n8n options
largeNumbersOutputAsString?: boolean; // bigInt
outputColumns?: string[];
stmtBatching?: QueryMode;
executeManyOptions?: oracleDBTypes.ExecuteManyOptions;
};
export type OracleDBNodeCredentials = {
connectionString: string | undefined;
connectionClass?: string;
connectTimeout?: number;
useThickMode: boolean;
useSSL: boolean;
expireTime?: number;
maxLifetimeSession: number;
password: string | undefined;
poolTimeout: number;
poolMin: number;
poolMax: number;
poolIncrement: number;
privilege?: number;
sslServerCertDN?: string;
sslServerDNMatch?: boolean;
sslAllowWeakDNMatch?: boolean;
transportConnectTimeout?: number;
user: string | undefined;
walletPassword?: string | undefined;
walletContent?: string | undefined;
};
export type ColumnDefinition = {
type: string;
nullable: boolean;
maxSize: number;
};
export type ColumnMap = {
[key: string]: ColumnDefinition;
};
// shared fields
type BaseBindFields = {
name: string; // bind param name
parseInStatement: boolean;
bindDirection: 'in' | 'out' | 'inout'; // restrict to known directions
};
// discriminated union
export type ExecuteOpBindParam =
| (BaseBindFields & { datatype: 'string'; valueString: string })
| (BaseBindFields & { datatype: 'number'; valueNumber: number })
| (BaseBindFields & { datatype: 'boolean'; valueBoolean: boolean })
| (BaseBindFields & { datatype: 'date'; valueDate: string | Date | DateTime | null })
| (BaseBindFields & { datatype: 'json'; valueJson: Record<string, unknown> | null })
| (BaseBindFields & { datatype: 'vector'; valueVector: number[] | null })
| (BaseBindFields & { datatype: 'blob'; valueBlob: Buffer | null })
| (BaseBindFields & {
datatype: 'sparse';
valueSparse: {
dimensions: number;
indices: number[];
values: number[];
};
});
// Definition of row returned for column information.
export interface TableColumnRow {
COLUMN_NAME: string;
DATA_TYPE: string;
DATA_LENGTH: number;
CHAR_LENGTH: number;
DEFAULT_LENGTH: number | null;
NULLABLE: 'Y' | 'N';
IDENTITY_COLUMN?: 'YES' | 'NO'; // only present in 12c+
HAS_DEFAULT: 'YES' | 'NO';
CONSTRAINT_TYPES?: string | null;
}