@algochad/prisma-core
Version:
A comprehensive NestJS library that provides EF-Core-like operations using Prisma and GraphQL. Features LINQ-style query builders, advanced data manipulation, GraphQL integration with genql, and a unified API for both Prisma and GraphQL operations. Includ
65 lines (64 loc) • 2.06 kB
TypeScript
import { DatabaseDialect } from './database-dialect';
export interface IColumnInfo {
name: string;
type: 'string' | 'number' | 'boolean' | 'date' | 'json' | 'bytes' | 'decimal' | 'bigint';
isOptional: boolean;
isArray: boolean;
isId: boolean;
isUnique: boolean;
isList: boolean;
relationName?: string;
relationFromFields?: string[];
relationToFields?: string[];
default?: any;
}
export interface ITableSchema {
tableName: string;
modelName: string;
columns: Map<string, IColumnInfo>;
primaryKey: string[];
uniqueConstraints: string[][];
relations: Map<string, IRelationInfo>;
indexes: IIndexInfo[];
}
export interface IRelationInfo {
name: string;
type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
model: string;
fields: string[];
references: string[];
isOptional: boolean;
}
export interface IIndexInfo {
name: string;
fields: string[];
isUnique: boolean;
type?: string;
}
export interface IDatabaseSchema {
tables: Map<string, ITableSchema>;
enums: Map<string, string[]>;
dialect: DatabaseDialect;
version: string;
}
export declare class SchemaInspector {
private static schemaCache;
private static lastInspectionTime;
private static readonly CACHE_DURATION;
static inspectSchema(prismaClient: any): Promise<IDatabaseSchema>;
static getTableSchema(prismaClient: any, modelName: string): Promise<ITableSchema | null>;
private static extractSchemaFromClient;
private static extractTableSchema;
private static determineRelationType;
private static mapPrismaTypeToColumnType;
private static getTableName;
private static getDMMF;
private static detectDialect;
private static getVersion;
private static getClientId;
static clearCache(): void;
static getCachedSchema(prismaClient: any): IDatabaseSchema | null;
private static extractSchemaFromClientFallback;
private static extractModelNamesFromClient;
private static detectDialectFallback;
}