dt-common-device
Version:
A secure and robust device management library for IoT applications
90 lines (89 loc) • 2.73 kB
TypeScript
import { IIssueDocument } from "./Issue.model";
import { CreateIssueData, UpdateIssueData, IssuePriority, IssuesCategory, IIssueQuery } from "./issue.types";
export declare class IssueRepository {
private buildQuery;
private buildOptions;
/**
* Create a new issue
*/
create(issueData: CreateIssueData): Promise<IIssueDocument>;
/**
* Find issue by ID
*/
findById(id: string, includeDeleted?: boolean): Promise<IIssueDocument | null>;
/**
* Find all issues with filters
*/
query(filters?: IIssueQuery): Promise<IIssueDocument[]>;
/**
* Update an issue
*/
update(id: string, updateData: UpdateIssueData): Promise<IIssueDocument | null>;
/**
* Soft delete an issue
*/
softDelete(id: string, deletedBy: string): Promise<boolean>;
/**
* Permanently delete an issue
*/
hardDelete(id: string): Promise<boolean>;
/**
* Count issues with filters
*/
count(filters?: IIssueQuery): Promise<number>;
/**
* Find issues by assignee
*/
findByAssignee(assignedTo: string, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find overdue issues
*/
findOverdue(includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find upcoming issues
*/
findUpcoming(days?: number, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Search issues by text
*/
search(searchTerm: string, filters?: {
propertyId?: string;
zoneId?: string;
includeDeleted?: boolean;
limit?: number;
skip?: number;
}): Promise<IIssueDocument[]>;
/**
* Get issue statistics
*/
getStatistics(propertyId?: string, zoneId?: string): Promise<{
total: number;
pending: number;
inProgress: number;
resolved: number;
closed: number;
overdue: number;
byPriority: Record<IssuePriority, number>;
byCategory: Record<IssuesCategory, number>;
}>;
/**
* Bulk update issues
*/
bulkUpdate(ids: string[], updateData: Partial<UpdateIssueData>): Promise<number>;
/**
* Bulk soft delete issues
*/
bulkSoftDelete(ids: string[], deletedBy: string): Promise<number>;
/**
* Find issues by zone ID
*/
findByZoneId(zoneId: string, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by zone ID and status
*/
findByZoneIdAndStatus(zoneId: string, status: string, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by multiple zone IDs
*/
findByZoneIds(zoneIds: string[], includeDeleted?: boolean): Promise<IIssueDocument[]>;
}