dt-common-device
Version:
A secure and robust device management library for IoT applications
114 lines (113 loc) • 3.39 kB
TypeScript
import { IIssueDocument } from "./Issue.model";
import { CreateIssueData, UpdateIssueData, IssueStatus, IssuePriority, IssuesCategory, EntityType } from "./issue.types";
export declare class IssueRepository {
/**
* 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
*/
findAll(filters?: {
propertyId?: string;
assignedTo?: string;
status?: IssueStatus;
priority?: IssuePriority;
category?: IssuesCategory;
entityType?: EntityType;
entityId?: string;
includeDeleted?: boolean;
limit?: number;
skip?: number;
sort?: {
[key: string]: 1 | -1;
};
}): 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?: {
propertyId?: string;
assignedTo?: string;
status?: IssueStatus;
priority?: IssuePriority;
category?: IssuesCategory;
entityType?: EntityType;
entityId?: string;
includeDeleted?: boolean;
}): Promise<number>;
/**
* Find issues by property
*/
findByProperty(propertyId: string, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by assignee
*/
findByAssignee(assignedTo: string, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by entity
*/
findByEntity(entityId: string, entityType: EntityType, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by status
*/
findByStatus(status: IssueStatus, includeDeleted?: boolean): Promise<IIssueDocument[]>;
/**
* Find issues by priority
*/
findByPriority(priority: IssuePriority, 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;
includeDeleted?: boolean;
limit?: number;
skip?: number;
}): Promise<IIssueDocument[]>;
/**
* Get issue statistics
*/
getStatistics(propertyId?: 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>;
}