73 lines
1.4 KiB
TypeScript
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
|