dt-common-device
Version:
A secure and robust device management library for IoT applications
197 lines (196 loc) • 8.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createBasicIssue = createBasicIssue;
exports.createDeviceIssue = createDeviceIssue;
exports.createSecurityIssue = createSecurityIssue;
exports.createEnergyIssue = createEnergyIssue;
exports.createHubIssue = createHubIssue;
exports.createUserIssue = createUserIssue;
exports.createPropertyIssue = createPropertyIssue;
exports.createMaintenanceIssue = createMaintenanceIssue;
exports.createUrgentIssue = createUrgentIssue;
exports.createMultipleIssues = createMultipleIssues;
exports.createIssueWithDueDate = createIssueWithDueDate;
exports.createUnassignedIssue = createUnassignedIssue;
const IssueBuilder_1 = require("./IssueBuilder");
const issue_types_1 = require("./issue.types");
/**
* Example usage of IssueBuilder
* This file demonstrates various ways to use the IssueBuilder pattern
*/
// Example 1: Basic issue creation
function createBasicIssue() {
const issueData = new IssueBuilder_1.IssueBuilder()
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
.setPropertyId("prop123")
.setTitle("Device Maintenance Required")
.setDescription("Device requires scheduled maintenance")
.setEntityId("device456")
.setEntityType(issue_types_1.EntityType.DEVICE)
.setPriority(issue_types_1.IssuePriority.HIGH)
.setAssignedTo("tech789")
.setCreatedBy("user123")
.setDueDate(new Date("2024-01-15"))
.build();
return issueData;
}
// Example 2: Using static factory methods
function createDeviceIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createDeviceIssue("device123", "prop456")
.setCategory(issue_types_1.IssuesCategory.READINESS)
.setTitle("Device Firmware Update")
.setDescription("Device firmware update is available")
.setPriority(issue_types_1.IssuePriority.MEDIUM)
.setAssignedTo("admin")
.setCreatedBy("system")
.setDueDate(new Date("2024-01-20"))
.build();
return issueData;
}
// Example 3: Using predefined issue types
function createSecurityIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createSecurityIssue()
.setPropertyId("prop789")
.setTitle("Security Breach Detected")
.setDescription("Unauthorized access attempt detected")
.setEntityId("user123")
.setEntityType(issue_types_1.EntityType.USER)
.setAssignedTo("security-team")
.setCreatedBy("security-system")
.setDueDate(new Date("2024-01-10"))
.build();
return issueData;
}
// Example 4: Creating energy issue
function createEnergyIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createEnergyIssue()
.setPropertyId("prop101")
.setTitle("High Energy Consumption")
.setDescription("Energy usage is 20% above normal levels")
.setEntityId("zone456")
.setEntityType(issue_types_1.EntityType.COLLECTION)
.setAssignedTo("energy-manager")
.setCreatedBy("energy-monitor")
.setDueDate(new Date("2024-01-25"))
.build();
return issueData;
}
// Example 5: Creating hub issue
function createHubIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createHubIssue("hub789", "prop202")
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
.setTitle("Hub Connection Lost")
.setDescription("Hub has lost connection to the network")
.setPriority(issue_types_1.IssuePriority.CRITICAL)
.setAssignedTo("network-admin")
.setCreatedBy("network-monitor")
.setDueDate(new Date("2024-01-05"))
.build();
return issueData;
}
// Example 6: Creating user-specific issue
function createUserIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createUserIssue("user456", "prop303")
.setCategory(issue_types_1.IssuesCategory.SECURITY)
.setTitle("User Access Review Required")
.setDescription("User access permissions need review")
.setPriority(issue_types_1.IssuePriority.MEDIUM)
.setAssignedTo("hr-admin")
.setCreatedBy("access-control")
.setDueDate(new Date("2024-01-30"))
.build();
return issueData;
}
// Example 7: Creating property-specific issue
function createPropertyIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createPropertyIssue("prop404")
.setCategory(issue_types_1.IssuesCategory.READINESS)
.setTitle("Property Maintenance Schedule")
.setDescription("Annual property maintenance is due")
.setPriority(issue_types_1.IssuePriority.LOW)
.setAssignedTo("property-manager")
.setCreatedBy("maintenance-system")
.setDueDate(new Date("2024-02-15"))
.build();
return issueData;
}
// Example 8: Creating maintenance issue
function createMaintenanceIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createMaintenanceIssue("prop505", "device789", issue_types_1.EntityType.DEVICE)
.setTitle("Scheduled Device Maintenance")
.setDescription("Regular maintenance is scheduled for this device")
.setAssignedTo("technician")
.setCreatedBy("maintenance-scheduler")
.setDueDate(new Date("2024-01-12"))
.build();
return issueData;
}
// Example 9: Creating urgent issue
function createUrgentIssue() {
const issueData = IssueBuilder_1.IssueBuilder.createUrgentIssue("prop606", "hub123", issue_types_1.EntityType.HUB)
.setTitle("Critical Hub Failure")
.setDescription("Hub is experiencing critical failures")
.setAssignedTo("emergency-tech")
.setCreatedBy("monitoring-system")
.setDueDate(new Date("2024-01-03"))
.build();
return issueData;
}
// Example 10: Reusing builder instance
function createMultipleIssues() {
const builder = new IssueBuilder_1.IssueBuilder()
.setPropertyId("prop707")
.setCreatedBy("batch-processor");
const issue1 = builder
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
.setTitle("Device Temperature High")
.setDescription("Device temperature exceeds normal operating range")
.setEntityId("device789")
.setEntityType(issue_types_1.EntityType.DEVICE)
.setPriority(issue_types_1.IssuePriority.HIGH)
.setAssignedTo("tech-support")
.build();
const issue2 = builder
.reset()
.setPropertyId("prop707")
.setCategory(issue_types_1.IssuesCategory.ENERGY)
.setTitle("Low Battery Warning")
.setDescription("Device battery level is below 20%")
.setEntityId("device789")
.setEntityType(issue_types_1.EntityType.DEVICE)
.setPriority(issue_types_1.IssuePriority.MEDIUM)
.setAssignedTo("maintenance-team")
.setCreatedBy("batch-processor")
.build();
return [issue1, issue2];
}
// Example 11: Creating issue with due date calculation
function createIssueWithDueDate() {
const dueDate = new Date();
dueDate.setDate(dueDate.getDate() + 7); // Due in 7 days
const issueData = new IssueBuilder_1.IssueBuilder()
.setCategory(issue_types_1.IssuesCategory.READINESS)
.setPropertyId("prop808")
.setTitle("System Update Required")
.setDescription("System requires critical security update")
.setEntityType(issue_types_1.EntityType.PROPERTY)
.setPriority(issue_types_1.IssuePriority.HIGH)
.setAssignedTo("system-admin")
.setCreatedBy("update-manager")
.setDueDate(dueDate)
.build();
return issueData;
}
// Example 12: Creating issue without assignment
function createUnassignedIssue() {
const issueData = new IssueBuilder_1.IssueBuilder()
.setCategory(issue_types_1.IssuesCategory.OTHER)
.setPropertyId("prop909")
.setTitle("General Inquiry")
.setDescription("General inquiry about system functionality")
.setEntityType(issue_types_1.EntityType.PROPERTY)
.setPriority(issue_types_1.IssuePriority.LOW)
.setCreatedBy("user-inquiry")
.build();
return issueData;
}