cadenlane-cli-2 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/README.md +333 -0
- package/bin.js +2 -0
- package/dist/application/config/config.manager.d.ts +62 -0
- package/dist/application/config/config.manager.d.ts.map +1 -0
- package/dist/application/config/config.manager.js +146 -0
- package/dist/application/config/config.manager.js.map +1 -0
- package/dist/application/services/application.service.d.ts +35 -0
- package/dist/application/services/application.service.d.ts.map +1 -0
- package/dist/application/services/application.service.js +174 -0
- package/dist/application/services/application.service.js.map +1 -0
- package/dist/application/services/download.service.d.ts +27 -0
- package/dist/application/services/download.service.d.ts.map +1 -0
- package/dist/application/services/download.service.js +197 -0
- package/dist/application/services/download.service.js.map +1 -0
- package/dist/application/services/file-naming.service.d.ts +34 -0
- package/dist/application/services/file-naming.service.d.ts.map +1 -0
- package/dist/application/services/file-naming.service.js +142 -0
- package/dist/application/services/file-naming.service.js.map +1 -0
- package/dist/application/services/queue.service.d.ts +53 -0
- package/dist/application/services/queue.service.d.ts.map +1 -0
- package/dist/application/services/queue.service.js +82 -0
- package/dist/application/services/queue.service.js.map +1 -0
- package/dist/cli/commands/start.command.d.ts +39 -0
- package/dist/cli/commands/start.command.d.ts.map +1 -0
- package/dist/cli/commands/start.command.js +196 -0
- package/dist/cli/commands/start.command.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +86 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/domain/constants/config.constants.d.ts +54 -0
- package/dist/domain/constants/config.constants.d.ts.map +1 -0
- package/dist/domain/constants/config.constants.js +142 -0
- package/dist/domain/constants/config.constants.js.map +1 -0
- package/dist/domain/dtos/index.d.ts +4 -0
- package/dist/domain/dtos/index.d.ts.map +1 -0
- package/dist/domain/dtos/index.js +10 -0
- package/dist/domain/dtos/index.js.map +1 -0
- package/dist/domain/dtos/log-entry.dto.d.ts +15 -0
- package/dist/domain/dtos/log-entry.dto.d.ts.map +1 -0
- package/dist/domain/dtos/log-entry.dto.js +64 -0
- package/dist/domain/dtos/log-entry.dto.js.map +1 -0
- package/dist/domain/dtos/message.dto.d.ts +27 -0
- package/dist/domain/dtos/message.dto.d.ts.map +1 -0
- package/dist/domain/dtos/message.dto.js +140 -0
- package/dist/domain/dtos/message.dto.js.map +1 -0
- package/dist/domain/dtos/queue-message.dto.d.ts +10 -0
- package/dist/domain/dtos/queue-message.dto.d.ts.map +1 -0
- package/dist/domain/dtos/queue-message.dto.js +39 -0
- package/dist/domain/dtos/queue-message.dto.js.map +1 -0
- package/dist/domain/entities/cli-instance.entity.d.ts +55 -0
- package/dist/domain/entities/cli-instance.entity.d.ts.map +1 -0
- package/dist/domain/entities/cli-instance.entity.js +132 -0
- package/dist/domain/entities/cli-instance.entity.js.map +1 -0
- package/dist/domain/entities/index.d.ts +3 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +8 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/entities/log-entry.entity.d.ts +60 -0
- package/dist/domain/entities/log-entry.entity.d.ts.map +1 -0
- package/dist/domain/entities/log-entry.entity.js +101 -0
- package/dist/domain/entities/log-entry.entity.js.map +1 -0
- package/dist/domain/entities/message.entity.d.ts +64 -0
- package/dist/domain/entities/message.entity.d.ts.map +1 -0
- package/dist/domain/entities/message.entity.js +110 -0
- package/dist/domain/entities/message.entity.js.map +1 -0
- package/dist/domain/enums/error-category.enum.d.ts +11 -0
- package/dist/domain/enums/error-category.enum.d.ts.map +1 -0
- package/dist/domain/enums/error-category.enum.js +15 -0
- package/dist/domain/enums/error-category.enum.js.map +1 -0
- package/dist/domain/enums/index.d.ts +4 -0
- package/dist/domain/enums/index.d.ts.map +1 -0
- package/dist/domain/enums/index.js +10 -0
- package/dist/domain/enums/index.js.map +1 -0
- package/dist/domain/enums/log-level.enum.d.ts +11 -0
- package/dist/domain/enums/log-level.enum.d.ts.map +1 -0
- package/dist/domain/enums/log-level.enum.js +15 -0
- package/dist/domain/enums/log-level.enum.js.map +1 -0
- package/dist/domain/enums/message-status.enum.d.ts +11 -0
- package/dist/domain/enums/message-status.enum.d.ts.map +1 -0
- package/dist/domain/enums/message-status.enum.js +15 -0
- package/dist/domain/enums/message-status.enum.js.map +1 -0
- package/dist/domain/interfaces/adapters/ifilesystem.adapter.d.ts +34 -0
- package/dist/domain/interfaces/adapters/ifilesystem.adapter.d.ts.map +1 -0
- package/dist/domain/interfaces/adapters/ifilesystem.adapter.js +3 -0
- package/dist/domain/interfaces/adapters/ifilesystem.adapter.js.map +1 -0
- package/dist/domain/interfaces/adapters/ihttp.adapter.d.ts +22 -0
- package/dist/domain/interfaces/adapters/ihttp.adapter.d.ts.map +1 -0
- package/dist/domain/interfaces/adapters/ihttp.adapter.js +3 -0
- package/dist/domain/interfaces/adapters/ihttp.adapter.js.map +1 -0
- package/dist/domain/interfaces/adapters/index.d.ts +4 -0
- package/dist/domain/interfaces/adapters/index.d.ts.map +1 -0
- package/dist/domain/interfaces/adapters/index.js +3 -0
- package/dist/domain/interfaces/adapters/index.js.map +1 -0
- package/dist/domain/interfaces/adapters/isupabase.adapter.d.ts +27 -0
- package/dist/domain/interfaces/adapters/isupabase.adapter.d.ts.map +1 -0
- package/dist/domain/interfaces/adapters/isupabase.adapter.js +3 -0
- package/dist/domain/interfaces/adapters/isupabase.adapter.js.map +1 -0
- package/dist/domain/interfaces/repositories/ilog.repository.d.ts +32 -0
- package/dist/domain/interfaces/repositories/ilog.repository.d.ts.map +1 -0
- package/dist/domain/interfaces/repositories/ilog.repository.js +3 -0
- package/dist/domain/interfaces/repositories/ilog.repository.js.map +1 -0
- package/dist/domain/interfaces/repositories/imessage.repository.d.ts +39 -0
- package/dist/domain/interfaces/repositories/imessage.repository.d.ts.map +1 -0
- package/dist/domain/interfaces/repositories/imessage.repository.js +3 -0
- package/dist/domain/interfaces/repositories/imessage.repository.js.map +1 -0
- package/dist/domain/interfaces/repositories/index.d.ts +4 -0
- package/dist/domain/interfaces/repositories/index.d.ts.map +1 -0
- package/dist/domain/interfaces/repositories/index.js +3 -0
- package/dist/domain/interfaces/repositories/index.js.map +1 -0
- package/dist/domain/interfaces/repositories/iqueue.repository.d.ts +75 -0
- package/dist/domain/interfaces/repositories/iqueue.repository.d.ts.map +1 -0
- package/dist/domain/interfaces/repositories/iqueue.repository.js +3 -0
- package/dist/domain/interfaces/repositories/iqueue.repository.js.map +1 -0
- package/dist/domain/interfaces/services/idownload.service.d.ts +28 -0
- package/dist/domain/interfaces/services/idownload.service.d.ts.map +1 -0
- package/dist/domain/interfaces/services/idownload.service.js +3 -0
- package/dist/domain/interfaces/services/idownload.service.js.map +1 -0
- package/dist/domain/interfaces/services/iqueue.service.d.ts +35 -0
- package/dist/domain/interfaces/services/iqueue.service.d.ts.map +1 -0
- package/dist/domain/interfaces/services/iqueue.service.js +3 -0
- package/dist/domain/interfaces/services/iqueue.service.js.map +1 -0
- package/dist/domain/services/path-resolver.service.d.ts +94 -0
- package/dist/domain/services/path-resolver.service.d.ts.map +1 -0
- package/dist/domain/services/path-resolver.service.js +332 -0
- package/dist/domain/services/path-resolver.service.js.map +1 -0
- package/dist/domain/validators/index.d.ts +4 -0
- package/dist/domain/validators/index.d.ts.map +1 -0
- package/dist/domain/validators/index.js +10 -0
- package/dist/domain/validators/index.js.map +1 -0
- package/dist/domain/validators/message.validator.d.ts +20 -0
- package/dist/domain/validators/message.validator.d.ts.map +1 -0
- package/dist/domain/validators/message.validator.js +31 -0
- package/dist/domain/validators/message.validator.js.map +1 -0
- package/dist/domain/validators/path.validator.d.ts +44 -0
- package/dist/domain/validators/path.validator.d.ts.map +1 -0
- package/dist/domain/validators/path.validator.js +156 -0
- package/dist/domain/validators/path.validator.js.map +1 -0
- package/dist/domain/validators/url.validator.d.ts +19 -0
- package/dist/domain/validators/url.validator.d.ts.map +1 -0
- package/dist/domain/validators/url.validator.js +46 -0
- package/dist/domain/validators/url.validator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/filesystem.adapter.d.ts +35 -0
- package/dist/infrastructure/adapters/filesystem.adapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/filesystem.adapter.js +103 -0
- package/dist/infrastructure/adapters/filesystem.adapter.js.map +1 -0
- package/dist/infrastructure/adapters/http.adapter.d.ts +15 -0
- package/dist/infrastructure/adapters/http.adapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/http.adapter.js +80 -0
- package/dist/infrastructure/adapters/http.adapter.js.map +1 -0
- package/dist/infrastructure/adapters/index.d.ts +4 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -0
- package/dist/infrastructure/adapters/index.js +10 -0
- package/dist/infrastructure/adapters/index.js.map +1 -0
- package/dist/infrastructure/adapters/pgmq.adapter.d.ts +29 -0
- package/dist/infrastructure/adapters/pgmq.adapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/pgmq.adapter.js +84 -0
- package/dist/infrastructure/adapters/pgmq.adapter.js.map +1 -0
- package/dist/infrastructure/adapters/supabase.adapter.d.ts +79 -0
- package/dist/infrastructure/adapters/supabase.adapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/supabase.adapter.js +97 -0
- package/dist/infrastructure/adapters/supabase.adapter.js.map +1 -0
- package/dist/infrastructure/database/supabase.client.d.ts +20 -0
- package/dist/infrastructure/database/supabase.client.d.ts.map +1 -0
- package/dist/infrastructure/database/supabase.client.js +36 -0
- package/dist/infrastructure/database/supabase.client.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +18 -0
- package/dist/infrastructure/di/container.d.ts.map +1 -0
- package/dist/infrastructure/di/container.js +103 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/repositories/cli-instance.repository.d.ts +64 -0
- package/dist/infrastructure/repositories/cli-instance.repository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/cli-instance.repository.js +154 -0
- package/dist/infrastructure/repositories/cli-instance.repository.js.map +1 -0
- package/dist/infrastructure/repositories/config.repository.d.ts +52 -0
- package/dist/infrastructure/repositories/config.repository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/config.repository.js +130 -0
- package/dist/infrastructure/repositories/config.repository.js.map +1 -0
- package/dist/infrastructure/repositories/index.d.ts +4 -0
- package/dist/infrastructure/repositories/index.d.ts.map +1 -0
- package/dist/infrastructure/repositories/index.js +10 -0
- package/dist/infrastructure/repositories/index.js.map +1 -0
- package/dist/infrastructure/repositories/log.repository.d.ts +44 -0
- package/dist/infrastructure/repositories/log.repository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/log.repository.js +108 -0
- package/dist/infrastructure/repositories/log.repository.js.map +1 -0
- package/dist/infrastructure/repositories/message.repository.d.ts +51 -0
- package/dist/infrastructure/repositories/message.repository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/message.repository.js +161 -0
- package/dist/infrastructure/repositories/message.repository.js.map +1 -0
- package/dist/infrastructure/repositories/queue.repository.d.ts +69 -0
- package/dist/infrastructure/repositories/queue.repository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/queue.repository.js +130 -0
- package/dist/infrastructure/repositories/queue.repository.js.map +1 -0
- package/dist/infrastructure/utils/connection-health.util.d.ts +23 -0
- package/dist/infrastructure/utils/connection-health.util.d.ts.map +1 -0
- package/dist/infrastructure/utils/connection-health.util.js +64 -0
- package/dist/infrastructure/utils/connection-health.util.js.map +1 -0
- package/package.json +105 -0
- package/pm2.config.js +104 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CliInstanceEntity = void 0;
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
/**
|
|
39
|
+
* CLI Instance Entity
|
|
40
|
+
* Represents a single CLI installation on a specific computer
|
|
41
|
+
*/
|
|
42
|
+
class CliInstanceEntity {
|
|
43
|
+
id;
|
|
44
|
+
instanceName;
|
|
45
|
+
hostname;
|
|
46
|
+
platform;
|
|
47
|
+
platformVersion;
|
|
48
|
+
nodeVersion;
|
|
49
|
+
appVersion;
|
|
50
|
+
downloadDefaultPath;
|
|
51
|
+
downloadFallbackPath;
|
|
52
|
+
status;
|
|
53
|
+
lastHeartbeatAt;
|
|
54
|
+
lastJobAt;
|
|
55
|
+
totalJobsProcessed;
|
|
56
|
+
totalJobsFailed;
|
|
57
|
+
totalBytesDownloaded;
|
|
58
|
+
createdAt;
|
|
59
|
+
updatedAt;
|
|
60
|
+
constructor(id, instanceName, hostname, platform, platformVersion, nodeVersion, appVersion, downloadDefaultPath, downloadFallbackPath, status, lastHeartbeatAt, lastJobAt, totalJobsProcessed, totalJobsFailed, totalBytesDownloaded, createdAt, updatedAt) {
|
|
61
|
+
this.id = id;
|
|
62
|
+
this.instanceName = instanceName;
|
|
63
|
+
this.hostname = hostname;
|
|
64
|
+
this.platform = platform;
|
|
65
|
+
this.platformVersion = platformVersion;
|
|
66
|
+
this.nodeVersion = nodeVersion;
|
|
67
|
+
this.appVersion = appVersion;
|
|
68
|
+
this.downloadDefaultPath = downloadDefaultPath;
|
|
69
|
+
this.downloadFallbackPath = downloadFallbackPath;
|
|
70
|
+
this.status = status;
|
|
71
|
+
this.lastHeartbeatAt = lastHeartbeatAt;
|
|
72
|
+
this.lastJobAt = lastJobAt;
|
|
73
|
+
this.totalJobsProcessed = totalJobsProcessed;
|
|
74
|
+
this.totalJobsFailed = totalJobsFailed;
|
|
75
|
+
this.totalBytesDownloaded = totalBytesDownloaded;
|
|
76
|
+
this.createdAt = createdAt;
|
|
77
|
+
this.updatedAt = updatedAt;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Create instance info from current system
|
|
81
|
+
*/
|
|
82
|
+
static createFromSystem(instanceName, downloadDefaultPath, downloadFallbackPath = null, appVersion = '1.0.0') {
|
|
83
|
+
return {
|
|
84
|
+
instanceName,
|
|
85
|
+
hostname: os.hostname(),
|
|
86
|
+
platform: process.platform,
|
|
87
|
+
platformVersion: os.release(),
|
|
88
|
+
nodeVersion: process.version,
|
|
89
|
+
appVersion,
|
|
90
|
+
downloadDefaultPath,
|
|
91
|
+
downloadFallbackPath,
|
|
92
|
+
status: 'active',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if instance is healthy (heartbeat within last 5 minutes)
|
|
97
|
+
*/
|
|
98
|
+
isHealthy() {
|
|
99
|
+
if (!this.lastHeartbeatAt)
|
|
100
|
+
return false;
|
|
101
|
+
const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
|
|
102
|
+
return this.lastHeartbeatAt > fiveMinutesAgo;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get failure rate percentage
|
|
106
|
+
*/
|
|
107
|
+
getFailureRate() {
|
|
108
|
+
if (this.totalJobsProcessed === 0)
|
|
109
|
+
return 0;
|
|
110
|
+
return (this.totalJobsFailed / this.totalJobsProcessed) * 100;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get success rate percentage
|
|
114
|
+
*/
|
|
115
|
+
getSuccessRate() {
|
|
116
|
+
return 100 - this.getFailureRate();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get formatted download size
|
|
120
|
+
*/
|
|
121
|
+
getFormattedDownloadSize() {
|
|
122
|
+
const bytes = this.totalBytesDownloaded;
|
|
123
|
+
if (bytes === 0)
|
|
124
|
+
return '0 B';
|
|
125
|
+
const k = 1024;
|
|
126
|
+
const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
127
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
128
|
+
return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.CliInstanceEntity = CliInstanceEntity;
|
|
132
|
+
//# sourceMappingURL=cli-instance.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-instance.entity.js","sourceRoot":"","sources":["../../../src/domain/entities/cli-instance.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogEntryEntity = exports.MessageEntity = void 0;
|
|
4
|
+
var message_entity_1 = require("./message.entity");
|
|
5
|
+
Object.defineProperty(exports, "MessageEntity", { enumerable: true, get: function () { return message_entity_1.MessageEntity; } });
|
|
6
|
+
var log_entry_entity_1 = require("./log-entry.entity");
|
|
7
|
+
Object.defineProperty(exports, "LogEntryEntity", { enumerable: true, get: function () { return log_entry_entity_1.LogEntryEntity; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/entities/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,uDAAoD;AAA3C,kHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { LogLevel } from '../enums';
|
|
2
|
+
/**
|
|
3
|
+
* Log Entry Entity
|
|
4
|
+
* Represents a log entry in the domain with business logic
|
|
5
|
+
*/
|
|
6
|
+
export declare class LogEntryEntity {
|
|
7
|
+
id: string;
|
|
8
|
+
message_id: string;
|
|
9
|
+
log_level: LogLevel;
|
|
10
|
+
log_message: string;
|
|
11
|
+
created_at: Date;
|
|
12
|
+
log_data?: Record<string, any>;
|
|
13
|
+
stack_trace?: string;
|
|
14
|
+
constructor(id: string, message_id: string, log_level: LogLevel, log_message: string, created_at: Date);
|
|
15
|
+
/**
|
|
16
|
+
* Creates an INFO level log entry
|
|
17
|
+
* @param messageId - ID of the message this log belongs to
|
|
18
|
+
* @param message - Log message
|
|
19
|
+
* @param data - Optional structured data
|
|
20
|
+
* @returns LogEntryEntity
|
|
21
|
+
*/
|
|
22
|
+
static createInfo(messageId: string, message: string, data?: Record<string, any>): LogEntryEntity;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an ERROR level log entry
|
|
25
|
+
* @param messageId - ID of the message this log belongs to
|
|
26
|
+
* @param message - Log message
|
|
27
|
+
* @param error - Error object
|
|
28
|
+
* @param data - Optional structured data
|
|
29
|
+
* @returns LogEntryEntity
|
|
30
|
+
*/
|
|
31
|
+
static createError(messageId: string, message: string, error: Error, data?: Record<string, any>): LogEntryEntity;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a WARN level log entry
|
|
34
|
+
* @param messageId - ID of the message this log belongs to
|
|
35
|
+
* @param message - Log message
|
|
36
|
+
* @param data - Optional structured data
|
|
37
|
+
* @returns LogEntryEntity
|
|
38
|
+
*/
|
|
39
|
+
static createWarn(messageId: string, message: string, data?: Record<string, any>): LogEntryEntity;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a DEBUG level log entry
|
|
42
|
+
* @param messageId - ID of the message this log belongs to
|
|
43
|
+
* @param message - Log message
|
|
44
|
+
* @param data - Optional structured data
|
|
45
|
+
* @returns LogEntryEntity
|
|
46
|
+
*/
|
|
47
|
+
static createDebug(messageId: string, message: string, data?: Record<string, any>): LogEntryEntity;
|
|
48
|
+
/**
|
|
49
|
+
* Checks if this is an error log
|
|
50
|
+
* @returns true if ERROR level, false otherwise
|
|
51
|
+
*/
|
|
52
|
+
isError(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Adds structured data to the log entry
|
|
55
|
+
* @param data - Data to add
|
|
56
|
+
* @returns this for method chaining
|
|
57
|
+
*/
|
|
58
|
+
withData(data: Record<string, any>): this;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=log-entry.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-entry.entity.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/log-entry.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;GAGG;AACH,qBAAa,cAAc;IAKhB,EAAE,EAAE,MAAM;IACV,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,IAAI;IARzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;gBAGZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,IAAI;IAGzB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAQjG;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,cAAc;IASjB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAQjG;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAQlG;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAI1C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogEntryEntity = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const enums_1 = require("../enums");
|
|
6
|
+
/**
|
|
7
|
+
* Log Entry Entity
|
|
8
|
+
* Represents a log entry in the domain with business logic
|
|
9
|
+
*/
|
|
10
|
+
class LogEntryEntity {
|
|
11
|
+
id;
|
|
12
|
+
message_id;
|
|
13
|
+
log_level;
|
|
14
|
+
log_message;
|
|
15
|
+
created_at;
|
|
16
|
+
log_data;
|
|
17
|
+
stack_trace;
|
|
18
|
+
constructor(id, message_id, log_level, log_message, created_at) {
|
|
19
|
+
this.id = id;
|
|
20
|
+
this.message_id = message_id;
|
|
21
|
+
this.log_level = log_level;
|
|
22
|
+
this.log_message = log_message;
|
|
23
|
+
this.created_at = created_at;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Creates an INFO level log entry
|
|
27
|
+
* @param messageId - ID of the message this log belongs to
|
|
28
|
+
* @param message - Log message
|
|
29
|
+
* @param data - Optional structured data
|
|
30
|
+
* @returns LogEntryEntity
|
|
31
|
+
*/
|
|
32
|
+
static createInfo(messageId, message, data) {
|
|
33
|
+
const entity = new LogEntryEntity((0, crypto_1.randomUUID)(), messageId, enums_1.LogLevel.INFO, message, new Date());
|
|
34
|
+
if (data) {
|
|
35
|
+
entity.log_data = data;
|
|
36
|
+
}
|
|
37
|
+
return entity;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Creates an ERROR level log entry
|
|
41
|
+
* @param messageId - ID of the message this log belongs to
|
|
42
|
+
* @param message - Log message
|
|
43
|
+
* @param error - Error object
|
|
44
|
+
* @param data - Optional structured data
|
|
45
|
+
* @returns LogEntryEntity
|
|
46
|
+
*/
|
|
47
|
+
static createError(messageId, message, error, data) {
|
|
48
|
+
const entity = new LogEntryEntity((0, crypto_1.randomUUID)(), messageId, enums_1.LogLevel.ERROR, message, new Date());
|
|
49
|
+
entity.stack_trace = error.stack;
|
|
50
|
+
if (data) {
|
|
51
|
+
entity.log_data = data;
|
|
52
|
+
}
|
|
53
|
+
return entity;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Creates a WARN level log entry
|
|
57
|
+
* @param messageId - ID of the message this log belongs to
|
|
58
|
+
* @param message - Log message
|
|
59
|
+
* @param data - Optional structured data
|
|
60
|
+
* @returns LogEntryEntity
|
|
61
|
+
*/
|
|
62
|
+
static createWarn(messageId, message, data) {
|
|
63
|
+
const entity = new LogEntryEntity((0, crypto_1.randomUUID)(), messageId, enums_1.LogLevel.WARN, message, new Date());
|
|
64
|
+
if (data) {
|
|
65
|
+
entity.log_data = data;
|
|
66
|
+
}
|
|
67
|
+
return entity;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Creates a DEBUG level log entry
|
|
71
|
+
* @param messageId - ID of the message this log belongs to
|
|
72
|
+
* @param message - Log message
|
|
73
|
+
* @param data - Optional structured data
|
|
74
|
+
* @returns LogEntryEntity
|
|
75
|
+
*/
|
|
76
|
+
static createDebug(messageId, message, data) {
|
|
77
|
+
const entity = new LogEntryEntity((0, crypto_1.randomUUID)(), messageId, enums_1.LogLevel.DEBUG, message, new Date());
|
|
78
|
+
if (data) {
|
|
79
|
+
entity.log_data = data;
|
|
80
|
+
}
|
|
81
|
+
return entity;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Checks if this is an error log
|
|
85
|
+
* @returns true if ERROR level, false otherwise
|
|
86
|
+
*/
|
|
87
|
+
isError() {
|
|
88
|
+
return this.log_level === enums_1.LogLevel.ERROR;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Adds structured data to the log entry
|
|
92
|
+
* @param data - Data to add
|
|
93
|
+
* @returns this for method chaining
|
|
94
|
+
*/
|
|
95
|
+
withData(data) {
|
|
96
|
+
this.log_data = data;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.LogEntryEntity = LogEntryEntity;
|
|
101
|
+
//# sourceMappingURL=log-entry.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-entry.entity.js","sourceRoot":"","sources":["../../../src/domain/entities/log-entry.entity.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,oCAAoC;AAEpC;;;GAGG;AACH,MAAa,cAAc;IAKhB;IACA;IACA;IACA;IACA;IART,QAAQ,CAAuB;IAC/B,WAAW,CAAU;IAErB,YACS,EAAU,EACV,UAAkB,EAClB,SAAmB,EACnB,WAAmB,EACnB,UAAgB;QAJhB,OAAE,GAAF,EAAE,CAAQ;QACV,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAU;QACnB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAM;IACtB,CAAC;IAEJ;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAE,IAA0B;QAC9E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAA,mBAAU,GAAE,EAAE,SAAS,EAAE,gBAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAChB,SAAiB,EACjB,OAAe,EACf,KAAY,EACZ,IAA0B;QAE1B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAA,mBAAU,GAAE,EAAE,SAAS,EAAE,gBAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAChG,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAE,IAA0B;QAC9E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAA,mBAAU,GAAE,EAAE,SAAS,EAAE,gBAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe,EAAE,IAA0B;QAC/E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAA,mBAAU,GAAE,EAAE,SAAS,EAAE,gBAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAChG,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,KAAK,gBAAQ,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAyB;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAhGD,wCAgGC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MessageStatus, ErrorCategory } from '../enums';
|
|
2
|
+
/**
|
|
3
|
+
* Message Entity
|
|
4
|
+
* Represents a message in the domain with business logic
|
|
5
|
+
*/
|
|
6
|
+
export declare class MessageEntity {
|
|
7
|
+
id: string;
|
|
8
|
+
pgmq_message_id: number;
|
|
9
|
+
file_url: string;
|
|
10
|
+
target_folder: string;
|
|
11
|
+
status: MessageStatus;
|
|
12
|
+
received_at: Date;
|
|
13
|
+
processing_started_at?: Date;
|
|
14
|
+
processing_completed_at?: Date;
|
|
15
|
+
file_name?: string;
|
|
16
|
+
file_path?: string;
|
|
17
|
+
file_size_bytes?: number;
|
|
18
|
+
download_duration_ms?: number;
|
|
19
|
+
total_duration_ms?: number;
|
|
20
|
+
error_message?: string;
|
|
21
|
+
error_category?: ErrorCategory;
|
|
22
|
+
retry_count?: number;
|
|
23
|
+
created_at?: Date;
|
|
24
|
+
updated_at?: Date;
|
|
25
|
+
deleted_from_queue_at?: Date;
|
|
26
|
+
processed_by_instance_id?: string;
|
|
27
|
+
processed_by_instance_name?: string;
|
|
28
|
+
processed_by_hostname?: string;
|
|
29
|
+
processed_by_platform?: string;
|
|
30
|
+
constructor(id: string, pgmq_message_id: number, file_url: string, target_folder: string, status: MessageStatus, received_at: Date, instanceId?: string, instanceName?: string, hostname?: string, platform?: string);
|
|
31
|
+
/**
|
|
32
|
+
* Marks the message as processing
|
|
33
|
+
*/
|
|
34
|
+
markAsProcessing(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Marks the message as completed with file metadata
|
|
37
|
+
* @param fileName - Name of the downloaded file
|
|
38
|
+
* @param filePath - Complete path where the file was saved
|
|
39
|
+
* @param fileSizeBytes - Size of the file in bytes
|
|
40
|
+
* @param downloadDurationMs - Time taken to download in milliseconds
|
|
41
|
+
*/
|
|
42
|
+
markAsCompleted(fileName: string, filePath: string, fileSizeBytes: number, downloadDurationMs: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Marks the message as failed with error details
|
|
45
|
+
* @param errorMessage - Error message
|
|
46
|
+
* @param errorCategory - Category of the error
|
|
47
|
+
*/
|
|
48
|
+
markAsFailed(errorMessage: string, errorCategory: ErrorCategory): void;
|
|
49
|
+
/**
|
|
50
|
+
* Marks the message as deleted from the queue
|
|
51
|
+
*/
|
|
52
|
+
markAsDeletedFromQueue(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Checks if the message is completed
|
|
55
|
+
* @returns true if completed, false otherwise
|
|
56
|
+
*/
|
|
57
|
+
isCompleted(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Checks if the message failed
|
|
60
|
+
* @returns true if failed, false otherwise
|
|
61
|
+
*/
|
|
62
|
+
isFailed(): boolean;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=message.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.entity.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/message.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD;;;GAGG;AACH,qBAAa,aAAa;IAuBf,EAAE,EAAE,MAAM;IACV,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,MAAM;IACrB,MAAM,EAAE,aAAa;IACrB,WAAW,EAAE,IAAI;IA1B1B,qBAAqB,CAAC,EAAE,IAAI,CAAC;IAC7B,uBAAuB,CAAC,EAAE,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,qBAAqB,CAAC,EAAE,IAAI,CAAC;IAG7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;gBAGtB,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,IAAI,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM;IAQnB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAc5G;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI;IAYtE;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAI9B;;;OAGG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageEntity = void 0;
|
|
4
|
+
const enums_1 = require("../enums");
|
|
5
|
+
/**
|
|
6
|
+
* Message Entity
|
|
7
|
+
* Represents a message in the domain with business logic
|
|
8
|
+
*/
|
|
9
|
+
class MessageEntity {
|
|
10
|
+
id;
|
|
11
|
+
pgmq_message_id;
|
|
12
|
+
file_url;
|
|
13
|
+
target_folder;
|
|
14
|
+
status;
|
|
15
|
+
received_at;
|
|
16
|
+
// Optional fields
|
|
17
|
+
processing_started_at;
|
|
18
|
+
processing_completed_at;
|
|
19
|
+
file_name;
|
|
20
|
+
file_path;
|
|
21
|
+
file_size_bytes;
|
|
22
|
+
download_duration_ms;
|
|
23
|
+
total_duration_ms;
|
|
24
|
+
error_message;
|
|
25
|
+
error_category;
|
|
26
|
+
retry_count;
|
|
27
|
+
created_at;
|
|
28
|
+
updated_at;
|
|
29
|
+
deleted_from_queue_at;
|
|
30
|
+
// Instance tracking fields
|
|
31
|
+
processed_by_instance_id;
|
|
32
|
+
processed_by_instance_name;
|
|
33
|
+
processed_by_hostname;
|
|
34
|
+
processed_by_platform;
|
|
35
|
+
constructor(id, pgmq_message_id, file_url, target_folder, status, received_at, instanceId, instanceName, hostname, platform) {
|
|
36
|
+
this.id = id;
|
|
37
|
+
this.pgmq_message_id = pgmq_message_id;
|
|
38
|
+
this.file_url = file_url;
|
|
39
|
+
this.target_folder = target_folder;
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.received_at = received_at;
|
|
42
|
+
this.processed_by_instance_id = instanceId;
|
|
43
|
+
this.processed_by_instance_name = instanceName;
|
|
44
|
+
this.processed_by_hostname = hostname;
|
|
45
|
+
this.processed_by_platform = platform;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Marks the message as processing
|
|
49
|
+
*/
|
|
50
|
+
markAsProcessing() {
|
|
51
|
+
this.status = enums_1.MessageStatus.PROCESSING;
|
|
52
|
+
this.processing_started_at = new Date();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Marks the message as completed with file metadata
|
|
56
|
+
* @param fileName - Name of the downloaded file
|
|
57
|
+
* @param filePath - Complete path where the file was saved
|
|
58
|
+
* @param fileSizeBytes - Size of the file in bytes
|
|
59
|
+
* @param downloadDurationMs - Time taken to download in milliseconds
|
|
60
|
+
*/
|
|
61
|
+
markAsCompleted(fileName, filePath, fileSizeBytes, downloadDurationMs) {
|
|
62
|
+
this.status = enums_1.MessageStatus.COMPLETED;
|
|
63
|
+
this.file_name = fileName;
|
|
64
|
+
this.file_path = filePath;
|
|
65
|
+
this.file_size_bytes = fileSizeBytes;
|
|
66
|
+
this.download_duration_ms = downloadDurationMs;
|
|
67
|
+
this.processing_completed_at = new Date();
|
|
68
|
+
// Calculate total duration if processing started
|
|
69
|
+
if (this.processing_started_at) {
|
|
70
|
+
this.total_duration_ms = this.processing_completed_at.getTime() - this.processing_started_at.getTime();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Marks the message as failed with error details
|
|
75
|
+
* @param errorMessage - Error message
|
|
76
|
+
* @param errorCategory - Category of the error
|
|
77
|
+
*/
|
|
78
|
+
markAsFailed(errorMessage, errorCategory) {
|
|
79
|
+
this.status = enums_1.MessageStatus.FAILED;
|
|
80
|
+
this.error_message = errorMessage;
|
|
81
|
+
this.error_category = errorCategory;
|
|
82
|
+
this.processing_completed_at = new Date();
|
|
83
|
+
// Calculate total duration if processing started
|
|
84
|
+
if (this.processing_started_at) {
|
|
85
|
+
this.total_duration_ms = this.processing_completed_at.getTime() - this.processing_started_at.getTime();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Marks the message as deleted from the queue
|
|
90
|
+
*/
|
|
91
|
+
markAsDeletedFromQueue() {
|
|
92
|
+
this.deleted_from_queue_at = new Date();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Checks if the message is completed
|
|
96
|
+
* @returns true if completed, false otherwise
|
|
97
|
+
*/
|
|
98
|
+
isCompleted() {
|
|
99
|
+
return this.status === enums_1.MessageStatus.COMPLETED;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Checks if the message failed
|
|
103
|
+
* @returns true if failed, false otherwise
|
|
104
|
+
*/
|
|
105
|
+
isFailed() {
|
|
106
|
+
return this.status === enums_1.MessageStatus.FAILED;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.MessageEntity = MessageEntity;
|
|
110
|
+
//# sourceMappingURL=message.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.entity.js","sourceRoot":"","sources":["../../../src/domain/entities/message.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error category enum
|
|
3
|
+
* Categorizes errors for easier diagnosis and monitoring
|
|
4
|
+
*/
|
|
5
|
+
export declare enum ErrorCategory {
|
|
6
|
+
NETWORK = "network",
|
|
7
|
+
FILESYSTEM = "filesystem",
|
|
8
|
+
VALIDATION = "validation",
|
|
9
|
+
UNKNOWN = "unknown"
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=error-category.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-category.enum.d.ts","sourceRoot":"","sources":["../../../src/domain/enums/error-category.enum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorCategory = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Error category enum
|
|
6
|
+
* Categorizes errors for easier diagnosis and monitoring
|
|
7
|
+
*/
|
|
8
|
+
var ErrorCategory;
|
|
9
|
+
(function (ErrorCategory) {
|
|
10
|
+
ErrorCategory["NETWORK"] = "network";
|
|
11
|
+
ErrorCategory["FILESYSTEM"] = "filesystem";
|
|
12
|
+
ErrorCategory["VALIDATION"] = "validation";
|
|
13
|
+
ErrorCategory["UNKNOWN"] = "unknown";
|
|
14
|
+
})(ErrorCategory || (exports.ErrorCategory = ErrorCategory = {}));
|
|
15
|
+
//# sourceMappingURL=error-category.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-category.enum.js","sourceRoot":"","sources":["../../../src/domain/enums/error-category.enum.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,0CAAyB,CAAA;IACzB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACrB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/enums/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevel = exports.ErrorCategory = exports.MessageStatus = void 0;
|
|
4
|
+
var message_status_enum_1 = require("./message-status.enum");
|
|
5
|
+
Object.defineProperty(exports, "MessageStatus", { enumerable: true, get: function () { return message_status_enum_1.MessageStatus; } });
|
|
6
|
+
var error_category_enum_1 = require("./error-category.enum");
|
|
7
|
+
Object.defineProperty(exports, "ErrorCategory", { enumerable: true, get: function () { return error_category_enum_1.ErrorCategory; } });
|
|
8
|
+
var log_level_enum_1 = require("./log-level.enum");
|
|
9
|
+
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return log_level_enum_1.LogLevel; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/enums/index.ts"],"names":[],"mappings":";;;AAAA,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,mDAA4C;AAAnC,0GAAA,QAAQ,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-level.enum.d.ts","sourceRoot":"","sources":["../../../src/domain/enums/log-level.enum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevel = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Log level enum
|
|
6
|
+
* Defines the severity levels for logging
|
|
7
|
+
*/
|
|
8
|
+
var LogLevel;
|
|
9
|
+
(function (LogLevel) {
|
|
10
|
+
LogLevel["INFO"] = "INFO";
|
|
11
|
+
LogLevel["WARN"] = "WARN";
|
|
12
|
+
LogLevel["ERROR"] = "ERROR";
|
|
13
|
+
LogLevel["DEBUG"] = "DEBUG";
|
|
14
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
15
|
+
//# sourceMappingURL=log-level.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-level.enum.js","sourceRoot":"","sources":["../../../src/domain/enums/log-level.enum.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message processing status enum
|
|
3
|
+
* Represents the lifecycle of a message from receipt to completion
|
|
4
|
+
*/
|
|
5
|
+
export declare enum MessageStatus {
|
|
6
|
+
RECEIVED = "received",
|
|
7
|
+
PROCESSING = "processing",
|
|
8
|
+
COMPLETED = "completed",
|
|
9
|
+
FAILED = "failed"
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=message-status.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-status.enum.d.ts","sourceRoot":"","sources":["../../../src/domain/enums/message-status.enum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,aAAa;IACvB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageStatus = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Message processing status enum
|
|
6
|
+
* Represents the lifecycle of a message from receipt to completion
|
|
7
|
+
*/
|
|
8
|
+
var MessageStatus;
|
|
9
|
+
(function (MessageStatus) {
|
|
10
|
+
MessageStatus["RECEIVED"] = "received";
|
|
11
|
+
MessageStatus["PROCESSING"] = "processing";
|
|
12
|
+
MessageStatus["COMPLETED"] = "completed";
|
|
13
|
+
MessageStatus["FAILED"] = "failed";
|
|
14
|
+
})(MessageStatus || (exports.MessageStatus = MessageStatus = {}));
|
|
15
|
+
//# sourceMappingURL=message-status.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-status.enum.js","sourceRoot":"","sources":["../../../src/domain/enums/message-status.enum.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
|