@kenniy/godeye-data-contracts
Version:
Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse
107 lines (106 loc) • 2.57 kB
TypeScript
/**
* Core response interfaces for standardized API responses across all services
*/
export interface IResponse<T = any> {
success: boolean;
data?: T;
error?: string;
message: string;
status_code: number;
time_ms: number;
timestamp: string;
trace_id: string;
metadata?: IResponseMetadata;
}
export interface IPagination {
total: number;
page: number;
limit: number;
total_pages: number;
has_next: boolean;
has_prev: boolean;
}
export interface IPaginatedResult<T> {
items: T[];
total: number;
page: number;
limit: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
}
export interface IPaginatedData<T> {
items: T[];
total: number;
page: number;
limit: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
}
/**
* Enhanced metadata contexts for comprehensive API response information
*/
export interface IResponseMetadata {
queryTime?: string;
ms_speed?: number;
affected_rows?: number;
cache_hit?: boolean;
cacheStatus?: "hit" | "miss" | "bypass";
lastUpdated?: string;
searchAlgorithms?: string[];
backendConditions?: string[];
relationsLoaded?: string[];
relationErrors?: string[];
activeCount?: number;
pendingCount?: number;
suspendedCount?: number;
totalCount?: number;
filters?: {
appliedFilters?: string[];
availableFilters?: string[];
};
sorting?: {
sortBy?: string;
sortOrder?: "asc" | "desc";
availableSorts?: string[];
};
cpu_usage_percent?: number;
memory_used_mb?: number;
memory_available_mb?: number;
heap_used_mb?: number;
heap_total_mb?: number;
validation_errors?: string[];
updated_fields?: string[];
skipped_fields?: string[];
user_permissions?: string[];
rate_limit_remaining?: number;
file_size_bytes?: number;
file_type?: string;
processed_count?: number;
workflow_stage?: string;
notification_sent?: boolean;
external_api_calls?: number;
service_version?: string;
environment?: string;
request_id?: string;
}
/**
* Bulk operation enums and interfaces
*/
export declare enum BulkOperationType {
CREATE = "create",
UPDATE = "update",
DELETE = "delete"
}
export interface IBulkOperation<T> {
operation: BulkOperationType;
data: Partial<T>;
where?: Partial<T>;
}
export interface IBulkResult<T> {
success_count: number;
error_count: number;
results: T[];
errors: string[];
}