erp-construccion-backend/dist/shared/interfaces/base.interface.d.ts

73 lines
1.4 KiB
TypeScript

/**
* Base Interfaces
* Interfaces compartidas para todo el proyecto
*/
import { Request } from 'express';
/**
* Entidad base con campos de auditoria
*/
export interface BaseEntity {
id: string;
createdAt: Date;
updatedAt: Date;
createdBy?: string;
}
/**
* Entidad con tenant
*/
export interface TenantEntity extends BaseEntity {
tenantId: string;
}
/**
* Request con contexto de tenant y usuario
*/
export interface AuthenticatedRequest extends Request {
user?: {
sub: string;
id: string;
email: string;
tenantId: string;
roles: string[];
type: 'access' | 'refresh';
};
tenantId?: string;
}
/**
* Respuesta paginada
*/
export interface PaginatedResponse<T> {
data: T[];
meta: {
total: number;
page: number;
limit: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
};
}
/**
* Query params para paginacion
*/
export interface PaginationQuery {
page?: number;
limit?: number;
sortBy?: string;
sortOrder?: 'ASC' | 'DESC';
search?: string;
}
/**
* Respuesta API estandar
*/
export interface ApiResponse<T = unknown> {
success: boolean;
data?: T;
message?: string;
errors?: Array<{
field?: string;
message: string;
code?: string;
}>;
meta?: Record<string, unknown>;
}
//# sourceMappingURL=base.interface.d.ts.map