artmapper
Version:
Spring Boot clone for Node.js with TypeScript/JavaScript - JPA-like ORM, Lombok decorators, dependency injection, and MySQL support
41 lines • 1.43 kB
TypeScript
import 'reflect-metadata';
import { EntityManager } from './EntityManager';
import { Pool } from 'mysql2/promise';
/**
* Base repository interface similar to Spring Data JPA's CrudRepository
*/
export interface CrudRepository<T, ID> {
save(entity: T, fieldsToUpdate?: string[]): Promise<T>;
saveAll(entities: T[]): Promise<T[]>;
findById(id: ID): Promise<T | null>;
findAll(): Promise<T[]>;
existsById(id: ID): Promise<boolean>;
count(): Promise<number>;
deleteById(id: ID): Promise<void>;
delete(entity: T): Promise<void>;
deleteAll(): Promise<void>;
}
/**
* Base repository implementation
*/
export declare abstract class BaseRepository<T, ID> implements CrudRepository<T, ID> {
protected pool: Pool;
protected entityManager: EntityManager;
constructor(pool: Pool);
abstract getEntityClass(): new () => T;
abstract getId(entity: T): ID;
save(entity: T, fieldsToUpdate?: string[]): Promise<T>;
saveAll(entities: T[]): Promise<T[]>;
findById(id: ID): Promise<T | null>;
findAll(): Promise<T[]>;
existsById(id: ID): Promise<boolean>;
count(): Promise<number>;
deleteById(id: ID): Promise<void>;
delete(entity: T): Promise<void>;
deleteAll(): Promise<void>;
/**
* Create a query builder for custom queries
*/
createQueryBuilder(): import("./EntityManager").QueryBuilder;
}
//# sourceMappingURL=Repository.d.ts.map