@klapeks/micro-db-utils 0.0.7 → 0.0.8

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.
@@ -1,4 +1,4 @@
1
- import type { Consumer, ConsumerConfig, EachMessagePayload } from "kafkajs";
1
+ import type { Consumer, ConsumerConfig, ConsumerRunConfig, EachMessagePayload } from "kafkajs";
2
2
  import { KafkaConnection } from "./kafka";
3
3
  export type KafkaConnectionHandler = (message: any, payload: EachMessagePayload) => any;
4
4
  export declare class KafkaConsumer {
@@ -8,6 +8,6 @@ export declare class KafkaConsumer {
8
8
  constructor(connection: KafkaConnection, config: ConsumerConfig);
9
9
  private _needConnection;
10
10
  connect(): Promise<void>;
11
- subscribe(topic: string, handler: KafkaConnectionHandler): Promise<void>;
11
+ subscribe(topic: string, handler: KafkaConnectionHandler, consumerOptions?: Omit<ConsumerRunConfig, "eachMessage">): Promise<void>;
12
12
  disconnect(): Promise<void>;
13
13
  }
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -62,7 +73,7 @@ var KafkaConsumer = /** @class */ (function () {
62
73
  });
63
74
  });
64
75
  };
65
- KafkaConsumer.prototype.subscribe = function (topic, handler) {
76
+ KafkaConsumer.prototype.subscribe = function (topic, handler, consumerOptions) {
66
77
  return __awaiter(this, void 0, void 0, function () {
67
78
  var _this = this;
68
79
  return __generator(this, function (_a) {
@@ -79,9 +90,13 @@ var KafkaConsumer = /** @class */ (function () {
79
90
  })];
80
91
  case 3:
81
92
  _a.sent();
93
+ if (!consumerOptions)
94
+ consumerOptions = {};
95
+ if (!consumerOptions.partitionsConsumedConcurrently) {
96
+ consumerOptions.partitionsConsumedConcurrently = 10;
97
+ }
82
98
  logger.log("Pre run:", topic);
83
- return [4 /*yield*/, this.consumer.run({
84
- eachMessage: function (payload) { return __awaiter(_this, void 0, void 0, function () {
99
+ return [4 /*yield*/, this.consumer.run(__assign(__assign({}, consumerOptions), { eachMessage: function (payload) { return __awaiter(_this, void 0, void 0, function () {
85
100
  var msg;
86
101
  var _a;
87
102
  return __generator(this, function (_b) {
@@ -100,8 +115,7 @@ var KafkaConsumer = /** @class */ (function () {
100
115
  return [2 /*return*/];
101
116
  }
102
117
  });
103
- }); },
104
- })];
118
+ }); } }))];
105
119
  case 4:
106
120
  _a.sent();
107
121
  logger.log("Listening:", topic);
@@ -18,4 +18,10 @@ export declare class RedisConnection {
18
18
  /** in seconds */
19
19
  expiredInSeconds?: number;
20
20
  }): Promise<void>;
21
+ setLock(key: string, options?: {
22
+ expiredInSeconds?: number;
23
+ }): Promise<{
24
+ isAlreadyLocked: boolean;
25
+ }>;
26
+ unlock(key: string): Promise<boolean>;
21
27
  }
@@ -129,6 +129,38 @@ var RedisConnection = /** @class */ (function () {
129
129
  });
130
130
  });
131
131
  };
132
+ RedisConnection.prototype.setLock = function (key, options) {
133
+ return __awaiter(this, void 0, void 0, function () {
134
+ var result, err_2;
135
+ return __generator(this, function (_a) {
136
+ switch (_a.label) {
137
+ case 0:
138
+ _a.trys.push([0, 2, , 3]);
139
+ return [4 /*yield*/, this.redisClient.set(this.keyPrefix + key, "1", {
140
+ NX: true,
141
+ EX: (options === null || options === void 0 ? void 0 : options.expiredInSeconds) || 60
142
+ })];
143
+ case 1:
144
+ result = _a.sent();
145
+ return [2 /*return*/, {
146
+ isAlreadyLocked: !result
147
+ }];
148
+ case 2:
149
+ err_2 = _a.sent();
150
+ logger.error("Error locking redis:", (0, utils_1.shortErrorParser)(err_2));
151
+ throw err_2;
152
+ case 3: return [2 /*return*/];
153
+ }
154
+ });
155
+ });
156
+ };
157
+ RedisConnection.prototype.unlock = function (key) {
158
+ return __awaiter(this, void 0, void 0, function () {
159
+ return __generator(this, function (_a) {
160
+ return [2 /*return*/, this.remove(key)];
161
+ });
162
+ });
163
+ };
132
164
  return RedisConnection;
133
165
  }());
134
166
  exports.RedisConnection = RedisConnection;
@@ -136,7 +136,7 @@ var SelectEntityHandler = /** @class */ (function (_super) {
136
136
  for (var _i = 0, _c = Object.keys(where); _i < _c.length; _i++) {
137
137
  var key = _c[_i];
138
138
  var placeholderKey = key + "_" + i;
139
- if (typeof where[key] == undefined)
139
+ if (typeof where[key] === 'undefined')
140
140
  continue;
141
141
  if (where[key] == null) {
142
142
  qb2 = qb2.andWhere('key is NULL');
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@klapeks/micro-db-utils",
3
3
  "description": "klapeks utils for db and other storages",
4
- "version": "0.0.7",
4
+ "version": "0.0.8",
5
5
  "type": "commonjs",
6
6
  "author": "Klapeks",
7
7
  "license": "ISC",