bb-inspired
Version:
Core library for BB-inspired NestJS backend
50 lines (49 loc) • 1.36 kB
TypeScript
export interface DatabaseConnectionOptions {
prisma?: {
url: string;
logQueries?: boolean;
maxPoolSize?: number;
};
mongodb?: {
uri: string;
dbName?: string;
options?: Record<string, any>;
};
synchronization?: {
enabled: boolean;
strategy: 'immediate' | 'scheduled' | 'event-based';
direction: 'pg-to-mongo' | 'mongo-to-pg' | 'bidirectional';
excludedCollections?: string[];
};
}
export interface DualPersistableEntity {
id: string;
createdAt: Date;
updatedAt: Date;
prismaData?: Record<string, any>;
mongoData?: Record<string, any>;
isDeleted?: boolean;
version: number;
}
export interface QueryOptions {
select?: string[] | Record<string, boolean>;
where?: Record<string, any>;
orderBy?: Record<string, 'asc' | 'desc'>;
skip?: number;
take?: number;
include?: Record<string, boolean | Record<string, any>>;
distinct?: string[];
dbSpecific?: {
prisma?: Record<string, any>;
mongodb?: Record<string, any>;
};
source?: 'primary' | 'secondary' | 'auto';
}
export interface Transaction {
id: string;
startedAt: Date;
commit(): Promise<void>;
rollback(): Promise<void>;
query<T = any>(query: string, params?: any[]): Promise<T>;
isActive(): boolean;
}