UNPKG

@aradox/multi-orm

Version:

Type-safe ORM with multi-datasource support, row-level security, and Prisma-like API for PostgreSQL, SQL Server, and HTTP APIs

125 lines 3.97 kB
import { CacheOptions } from './runtime/cache'; import { GeneratedClient } from './client/generated-client'; import { Middleware, MiddlewareChain, QueryContext } from './types/middleware'; /** * ORM Client Factory - Used to generate type-safe clients from schema * * Usage: * ```typescript * import { ORMClient } from '@your-org/orm'; * import * as fs from 'fs'; * * const schema = fs.readFileSync('./schema.prisma', 'utf-8'); * const orm = new ORMClient(schema); * const client = orm.generate(); * * // Now use type-safe methods * const users = await client.User.findMany({ where: { active: true } }); * ``` */ export declare class ORMClient { private ir; private stitcher; private adapters; private schemaPath?; private middlewareChain; private queryContext; constructor(schema: string, options?: { schemaPath?: string; cache?: CacheOptions; }); /** * Register middleware for query interception * * Example: * ```typescript * client.use({ * name: 'tenant-isolation', * beforeQuery: ({ model, args, context }) => { * if (context.user?.tenantId) { * args.where = { ...args.where, tenant_id: context.user.tenantId }; * } * return args; * } * }); * ``` */ use(middleware: Middleware): void; /** * Set query context (user, tenantId, etc.) * This context is available to all middleware hooks * * Example: * ```typescript * client.setContext({ * user: { id: 123, tenantId: 456, role: 'admin' } * }); * ``` */ setContext(context: QueryContext): void; /** * Get current query context */ getContext(): QueryContext; /** * Get middleware chain (for GeneratedClient to use) */ getMiddlewareChain(): MiddlewareChain; /** * Generate a type-safe client with model delegates * This is similar to Prisma's generated client pattern * * Checks if TypeScript types have been generated and suggests running * the generator if they don't exist or are out of date. */ generate(): GeneratedClient; /** * Check if generated types exist and if they're up to date */ private checkGeneratedTypes; private initializeAdapters; private parseMSSQLConnectionString; private resolveEnvVar; /** * @deprecated Use generate() to create a type-safe client instead * @example * const client = orm.generate(); * await client.User.findMany({ ... }); */ findMany(model: string, args?: any): Promise<any>; /** * @deprecated Use generate() to create a type-safe client instead */ findUnique(model: string, args: any): Promise<any>; /** * @deprecated Use generate() to create a type-safe client instead */ count(model: string, args?: any): Promise<number>; /** * @deprecated Use generate() to create a type-safe client instead */ create(model: string, args: any): Promise<any>; /** * @deprecated Use generate() to create a type-safe client instead */ update(model: string, args: any): Promise<any>; /** * @deprecated Use generate() to create a type-safe client instead */ delete(model: string, args: any): Promise<any>; /** * @deprecated Use client.$disconnect() instead */ close(): Promise<void>; } export * from './types/ir'; export * from './types/adapter'; export { DSLParser } from './parser'; export { PostgresAdapter } from './adapters/postgres'; export { HttpApiAdapter } from './adapters/http'; export { MSSQLAdapter } from './adapters/mssql'; export { MSSQLNativeAdapter } from './adapters/mssql'; export { Stitcher } from './runtime/stitcher'; export { GeneratedClient, ModelDelegate } from './client/generated-client'; export { TypeGenerator, generateTypes } from './generator/typegen'; //# sourceMappingURL=index.d.ts.map