@devbro/pashmak 0.1.22 → 0.1.24
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/dist/bin/app/console/DefaultCommand.cjs +42 -50
- package/dist/bin/app/console/KeyGenerateCommand.cjs +42 -50
- package/dist/bin/app/console/StartCommand.cjs +42 -50
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +42 -50
- package/dist/bin/app/console/generate/index.cjs +42 -50
- package/dist/bin/app/console/index.cjs +46 -54
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +42 -50
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +44 -52
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +44 -52
- package/dist/bin/app/console/migrate/index.cjs +46 -54
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +42 -50
- package/dist/bin/cache.cjs +42 -50
- package/dist/bin/facades.cjs +42 -50
- package/dist/bin/factories.cjs +44 -52
- package/dist/bin/index.cjs +57 -66
- package/dist/bin/middlewares.cjs +42 -50
- package/dist/bin/queue.cjs +39 -47
- package/dist/factories.mjs +2 -15
- package/dist/factories.mjs.map +1 -1
- package/dist/queue.mjs +32 -29
- package/dist/queue.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -455,7 +455,7 @@ var Router = class {
|
|
|
455
455
|
// src/facades.mts
|
|
456
456
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
457
457
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
458
|
-
var
|
|
458
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
459
459
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
460
460
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
461
461
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -472,7 +472,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
472
472
|
// src/factories.mts
|
|
473
473
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
474
474
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
475
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
476
475
|
|
|
477
476
|
// src/queue.mts
|
|
478
477
|
var queue_exports = {};
|
|
@@ -481,6 +480,7 @@ __export(queue_exports, {
|
|
|
481
480
|
});
|
|
482
481
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
483
482
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
483
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
484
484
|
var DatabaseTransport = class {
|
|
485
485
|
static {
|
|
486
486
|
__name(this, "DatabaseTransport");
|
|
@@ -497,37 +497,39 @@ var DatabaseTransport = class {
|
|
|
497
497
|
messageQueues = [];
|
|
498
498
|
repeater;
|
|
499
499
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
500
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
501
|
+
const conn = db(this.config.db_connection);
|
|
502
|
+
try {
|
|
503
|
+
await conn.connect();
|
|
504
|
+
let q = conn.getQuery();
|
|
505
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
506
|
+
for (let msg of messages) {
|
|
507
|
+
try {
|
|
508
|
+
let callback = this.channels.get(msg.channel);
|
|
509
|
+
await callback(msg.message);
|
|
510
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
511
|
+
status: "processed",
|
|
512
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
513
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
514
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
515
|
+
});
|
|
516
|
+
} catch (error) {
|
|
517
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
518
|
+
status: "failed",
|
|
519
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
520
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
521
|
+
process_message: error.message || "Error processing message"
|
|
522
|
+
});
|
|
523
|
+
}
|
|
522
524
|
}
|
|
525
|
+
} catch (error) {
|
|
526
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
527
|
+
error
|
|
528
|
+
});
|
|
529
|
+
} finally {
|
|
530
|
+
await conn.disconnect();
|
|
523
531
|
}
|
|
524
|
-
}
|
|
525
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
526
|
-
error
|
|
527
|
-
});
|
|
528
|
-
} finally {
|
|
529
|
-
await conn.disconnect();
|
|
530
|
-
}
|
|
532
|
+
});
|
|
531
533
|
}, "processMessage");
|
|
532
534
|
constructor(config3 = {}) {
|
|
533
535
|
this.config = { ...this.config, ...config3 };
|
|
@@ -590,14 +592,6 @@ var FlexibleFactory = class {
|
|
|
590
592
|
return ctor(...args);
|
|
591
593
|
}
|
|
592
594
|
};
|
|
593
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
594
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
595
|
-
logger().info({
|
|
596
|
-
msg: "Sending email",
|
|
597
|
-
mail
|
|
598
|
-
});
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
595
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
602
596
|
return new import_neko_mailer.SESProvider(opt);
|
|
603
597
|
});
|
|
@@ -607,13 +601,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
607
601
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
608
602
|
return new import_neko_mailer.MemoryProvider();
|
|
609
603
|
});
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
604
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
605
|
+
return new DatabaseTransport(opt);
|
|
613
606
|
});
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
607
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
608
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
617
609
|
});
|
|
618
610
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
619
611
|
static {
|
|
@@ -648,7 +640,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
648
640
|
|
|
649
641
|
// src/facades.mts
|
|
650
642
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
651
|
-
var
|
|
643
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
652
644
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
653
645
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
654
646
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -661,7 +653,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
661
653
|
});
|
|
662
654
|
return rc;
|
|
663
655
|
});
|
|
664
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
656
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
665
657
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
666
658
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
667
659
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -717,7 +709,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
717
709
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
718
710
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
719
711
|
rc.setExtrasFunction((message) => {
|
|
720
|
-
message.requestId = (0,
|
|
712
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
721
713
|
return message;
|
|
722
714
|
});
|
|
723
715
|
return rc;
|
|
@@ -736,11 +728,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
736
728
|
if (!queue_config) {
|
|
737
729
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
738
730
|
}
|
|
739
|
-
const provider =
|
|
731
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
740
732
|
queue_config.provider,
|
|
741
733
|
queue_config.config
|
|
742
734
|
);
|
|
743
|
-
const rc = new
|
|
735
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
744
736
|
return rc;
|
|
745
737
|
});
|
|
746
738
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
@@ -455,7 +455,7 @@ var Router = class {
|
|
|
455
455
|
// src/facades.mts
|
|
456
456
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
457
457
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
458
|
-
var
|
|
458
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
459
459
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
460
460
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
461
461
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -472,7 +472,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
472
472
|
// src/factories.mts
|
|
473
473
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
474
474
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
475
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
476
475
|
|
|
477
476
|
// src/queue.mts
|
|
478
477
|
var queue_exports = {};
|
|
@@ -481,6 +480,7 @@ __export(queue_exports, {
|
|
|
481
480
|
});
|
|
482
481
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
483
482
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
483
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
484
484
|
var DatabaseTransport = class {
|
|
485
485
|
static {
|
|
486
486
|
__name(this, "DatabaseTransport");
|
|
@@ -497,37 +497,39 @@ var DatabaseTransport = class {
|
|
|
497
497
|
messageQueues = [];
|
|
498
498
|
repeater;
|
|
499
499
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
500
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
501
|
+
const conn = db(this.config.db_connection);
|
|
502
|
+
try {
|
|
503
|
+
await conn.connect();
|
|
504
|
+
let q = conn.getQuery();
|
|
505
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
506
|
+
for (let msg of messages) {
|
|
507
|
+
try {
|
|
508
|
+
let callback = this.channels.get(msg.channel);
|
|
509
|
+
await callback(msg.message);
|
|
510
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
511
|
+
status: "processed",
|
|
512
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
513
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
514
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
515
|
+
});
|
|
516
|
+
} catch (error) {
|
|
517
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
518
|
+
status: "failed",
|
|
519
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
520
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
521
|
+
process_message: error.message || "Error processing message"
|
|
522
|
+
});
|
|
523
|
+
}
|
|
522
524
|
}
|
|
525
|
+
} catch (error) {
|
|
526
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
527
|
+
error
|
|
528
|
+
});
|
|
529
|
+
} finally {
|
|
530
|
+
await conn.disconnect();
|
|
523
531
|
}
|
|
524
|
-
}
|
|
525
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
526
|
-
error
|
|
527
|
-
});
|
|
528
|
-
} finally {
|
|
529
|
-
await conn.disconnect();
|
|
530
|
-
}
|
|
532
|
+
});
|
|
531
533
|
}, "processMessage");
|
|
532
534
|
constructor(config3 = {}) {
|
|
533
535
|
this.config = { ...this.config, ...config3 };
|
|
@@ -590,14 +592,6 @@ var FlexibleFactory = class {
|
|
|
590
592
|
return ctor(...args);
|
|
591
593
|
}
|
|
592
594
|
};
|
|
593
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
594
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
595
|
-
logger().info({
|
|
596
|
-
msg: "Sending email",
|
|
597
|
-
mail
|
|
598
|
-
});
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
595
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
602
596
|
return new import_neko_mailer.SESProvider(opt);
|
|
603
597
|
});
|
|
@@ -607,13 +601,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
607
601
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
608
602
|
return new import_neko_mailer.MemoryProvider();
|
|
609
603
|
});
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
604
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
605
|
+
return new DatabaseTransport(opt);
|
|
613
606
|
});
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
607
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
608
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
617
609
|
});
|
|
618
610
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
619
611
|
static {
|
|
@@ -648,7 +640,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
648
640
|
|
|
649
641
|
// src/facades.mts
|
|
650
642
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
651
|
-
var
|
|
643
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
652
644
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
653
645
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
654
646
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -661,7 +653,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
661
653
|
});
|
|
662
654
|
return rc;
|
|
663
655
|
});
|
|
664
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
656
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
665
657
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
666
658
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
667
659
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -717,7 +709,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
717
709
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
718
710
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
719
711
|
rc.setExtrasFunction((message) => {
|
|
720
|
-
message.requestId = (0,
|
|
712
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
721
713
|
return message;
|
|
722
714
|
});
|
|
723
715
|
return rc;
|
|
@@ -736,11 +728,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
736
728
|
if (!queue_config) {
|
|
737
729
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
738
730
|
}
|
|
739
|
-
const provider =
|
|
731
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
740
732
|
queue_config.provider,
|
|
741
733
|
queue_config.config
|
|
742
734
|
);
|
|
743
|
-
const rc = new
|
|
735
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
744
736
|
return rc;
|
|
745
737
|
});
|
|
746
738
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
@@ -757,7 +749,7 @@ var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
757
749
|
|
|
758
750
|
// src/app/console/migrate/MigrateCommand.mts
|
|
759
751
|
var import_clipanion2 = require("clipanion");
|
|
760
|
-
var
|
|
752
|
+
var import_neko_context4 = require("@devbro/neko-context");
|
|
761
753
|
var import_path2 = __toESM(require("path"), 1);
|
|
762
754
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
763
755
|
var import_neko_config2 = require("@devbro/neko-config");
|
|
@@ -773,7 +765,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
773
765
|
description: `whether to drop all tables before running migrations by using rollback function`
|
|
774
766
|
});
|
|
775
767
|
async execute() {
|
|
776
|
-
await
|
|
768
|
+
await import_neko_context4.context_provider.run(async () => {
|
|
777
769
|
const db2 = db();
|
|
778
770
|
const schema = db2.getSchema();
|
|
779
771
|
if (this.fresh) {
|
|
@@ -1610,7 +1610,7 @@ var Router = class {
|
|
|
1610
1610
|
// src/facades.mts
|
|
1611
1611
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
1612
1612
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
1613
|
-
var
|
|
1613
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
1614
1614
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
1615
1615
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
1616
1616
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -1627,7 +1627,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
1627
1627
|
// src/factories.mts
|
|
1628
1628
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
1629
1629
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
1630
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
1631
1630
|
|
|
1632
1631
|
// src/queue.mts
|
|
1633
1632
|
var queue_exports = {};
|
|
@@ -1636,6 +1635,7 @@ __export(queue_exports, {
|
|
|
1636
1635
|
});
|
|
1637
1636
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
1638
1637
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
1638
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
1639
1639
|
var DatabaseTransport = class {
|
|
1640
1640
|
static {
|
|
1641
1641
|
__name(this, "DatabaseTransport");
|
|
@@ -1652,37 +1652,39 @@ var DatabaseTransport = class {
|
|
|
1652
1652
|
messageQueues = [];
|
|
1653
1653
|
repeater;
|
|
1654
1654
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1655
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
1656
|
+
const conn = db(this.config.db_connection);
|
|
1657
|
+
try {
|
|
1658
|
+
await conn.connect();
|
|
1659
|
+
let q = conn.getQuery();
|
|
1660
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
1661
|
+
for (let msg of messages) {
|
|
1662
|
+
try {
|
|
1663
|
+
let callback = this.channels.get(msg.channel);
|
|
1664
|
+
await callback(msg.message);
|
|
1665
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1666
|
+
status: "processed",
|
|
1667
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
1668
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1669
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
1670
|
+
});
|
|
1671
|
+
} catch (error) {
|
|
1672
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1673
|
+
status: "failed",
|
|
1674
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1675
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
1676
|
+
process_message: error.message || "Error processing message"
|
|
1677
|
+
});
|
|
1678
|
+
}
|
|
1677
1679
|
}
|
|
1680
|
+
} catch (error) {
|
|
1681
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
1682
|
+
error
|
|
1683
|
+
});
|
|
1684
|
+
} finally {
|
|
1685
|
+
await conn.disconnect();
|
|
1678
1686
|
}
|
|
1679
|
-
}
|
|
1680
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
1681
|
-
error
|
|
1682
|
-
});
|
|
1683
|
-
} finally {
|
|
1684
|
-
await conn.disconnect();
|
|
1685
|
-
}
|
|
1687
|
+
});
|
|
1686
1688
|
}, "processMessage");
|
|
1687
1689
|
constructor(config3 = {}) {
|
|
1688
1690
|
this.config = { ...this.config, ...config3 };
|
|
@@ -1745,14 +1747,6 @@ var FlexibleFactory = class {
|
|
|
1745
1747
|
return ctor(...args);
|
|
1746
1748
|
}
|
|
1747
1749
|
};
|
|
1748
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
1749
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
1750
|
-
logger().info({
|
|
1751
|
-
msg: "Sending email",
|
|
1752
|
-
mail
|
|
1753
|
-
});
|
|
1754
|
-
});
|
|
1755
|
-
});
|
|
1756
1750
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
1757
1751
|
return new import_neko_mailer.SESProvider(opt);
|
|
1758
1752
|
});
|
|
@@ -1762,13 +1756,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
1762
1756
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
1763
1757
|
return new import_neko_mailer.MemoryProvider();
|
|
1764
1758
|
});
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
1759
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
1760
|
+
return new DatabaseTransport(opt);
|
|
1768
1761
|
});
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
1762
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
1763
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
1772
1764
|
});
|
|
1773
1765
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
1774
1766
|
static {
|
|
@@ -1803,7 +1795,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
1803
1795
|
|
|
1804
1796
|
// src/facades.mts
|
|
1805
1797
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
1806
|
-
var
|
|
1798
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
1807
1799
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
1808
1800
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
1809
1801
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -1816,7 +1808,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
1816
1808
|
});
|
|
1817
1809
|
return rc;
|
|
1818
1810
|
});
|
|
1819
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
1811
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
1820
1812
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
1821
1813
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
1822
1814
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -1872,7 +1864,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1872
1864
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
1873
1865
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
1874
1866
|
rc.setExtrasFunction((message) => {
|
|
1875
|
-
message.requestId = (0,
|
|
1867
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
1876
1868
|
return message;
|
|
1877
1869
|
});
|
|
1878
1870
|
return rc;
|
|
@@ -1891,11 +1883,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1891
1883
|
if (!queue_config) {
|
|
1892
1884
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
1893
1885
|
}
|
|
1894
|
-
const provider =
|
|
1886
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
1895
1887
|
queue_config.provider,
|
|
1896
1888
|
queue_config.config
|
|
1897
1889
|
);
|
|
1898
|
-
const rc = new
|
|
1890
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
1899
1891
|
return rc;
|
|
1900
1892
|
});
|
|
1901
1893
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
@@ -1912,7 +1904,7 @@ var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1912
1904
|
|
|
1913
1905
|
// src/app/console/migrate/MigrateRollbackCommand.mts
|
|
1914
1906
|
var import_clipanion2 = require("clipanion");
|
|
1915
|
-
var
|
|
1907
|
+
var import_neko_context4 = require("@devbro/neko-context");
|
|
1916
1908
|
var import_path2 = __toESM(require("path"), 1);
|
|
1917
1909
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
1918
1910
|
var import_neko_config2 = require("@devbro/neko-config");
|
|
@@ -1927,7 +1919,7 @@ var MigrateRollbackCommand = class extends import_clipanion2.Command {
|
|
|
1927
1919
|
validator: t.isNumber()
|
|
1928
1920
|
});
|
|
1929
1921
|
async execute() {
|
|
1930
|
-
await
|
|
1922
|
+
await import_neko_context4.context_provider.run(async () => {
|
|
1931
1923
|
const db2 = db();
|
|
1932
1924
|
const schema = db2.getSchema();
|
|
1933
1925
|
const migrationsDir = import_neko_config2.config.get("migration.path");
|