@famir/database 0.0.1 → 0.0.3

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.
Files changed (238) hide show
  1. package/README.md +1 -2
  2. package/dist/database.d.ts +1 -1
  3. package/dist/database.error.js +1 -1
  4. package/dist/database.error.js.map +1 -1
  5. package/dist/database.functions.d.ts +33 -18
  6. package/dist/database.functions.js +8 -8
  7. package/dist/database.functions.js.map +1 -1
  8. package/dist/database.js.map +1 -1
  9. package/dist/database.keys.d.ts +6 -4
  10. package/dist/database.keys.js +14 -8
  11. package/dist/database.keys.js.map +1 -1
  12. package/dist/database.schemas.js +1 -5
  13. package/dist/database.schemas.js.map +1 -1
  14. package/dist/index.d.ts +1 -2
  15. package/dist/index.js +1 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/modules/base/index.js.map +1 -0
  18. package/dist/{repositories → modules}/base/redis-base.repository.d.ts +5 -3
  19. package/dist/{repositories → modules}/base/redis-base.repository.js +22 -18
  20. package/dist/modules/base/redis-base.repository.js.map +1 -0
  21. package/dist/{repositories → modules}/campaign/campaign.d.ts +2 -2
  22. package/dist/{repositories → modules}/campaign/campaign.functions.d.ts +8 -7
  23. package/dist/{repositories → modules}/campaign/campaign.functions.js +29 -26
  24. package/dist/modules/campaign/campaign.functions.js.map +1 -0
  25. package/dist/modules/campaign/campaign.js.map +1 -0
  26. package/dist/{models/campaign/campaign.d.ts → modules/campaign/campaign.models.d.ts} +3 -2
  27. package/dist/{models/campaign/campaign.js → modules/campaign/campaign.models.js} +6 -4
  28. package/dist/modules/campaign/campaign.models.js.map +1 -0
  29. package/dist/{repositories → modules}/campaign/campaign.schemas.d.ts +2 -2
  30. package/dist/{repositories → modules}/campaign/campaign.schemas.js +50 -43
  31. package/dist/modules/campaign/campaign.schemas.js.map +1 -0
  32. package/dist/{repositories → modules}/campaign/index.d.ts +1 -0
  33. package/dist/{repositories → modules}/campaign/index.js +1 -0
  34. package/dist/modules/campaign/index.js.map +1 -0
  35. package/dist/{repositories → modules}/campaign/redis-campaign.repository.d.ts +5 -5
  36. package/dist/{repositories → modules}/campaign/redis-campaign.repository.js +11 -11
  37. package/dist/modules/campaign/redis-campaign.repository.js.map +1 -0
  38. package/dist/modules/index.js.map +1 -0
  39. package/dist/{repositories → modules}/lure/index.d.ts +1 -0
  40. package/dist/{repositories → modules}/lure/index.js +1 -0
  41. package/dist/modules/lure/index.js.map +1 -0
  42. package/dist/{repositories → modules}/lure/lure.d.ts +1 -1
  43. package/dist/{repositories → modules}/lure/lure.functions.d.ts +1 -1
  44. package/dist/{repositories → modules}/lure/lure.functions.js +12 -12
  45. package/dist/modules/lure/lure.functions.js.map +1 -0
  46. package/dist/modules/lure/lure.js.map +1 -0
  47. package/dist/{models/lure/lure.js → modules/lure/lure.models.js} +1 -1
  48. package/dist/modules/lure/lure.models.js.map +1 -0
  49. package/dist/{repositories → modules}/lure/lure.schemas.js +14 -14
  50. package/dist/modules/lure/lure.schemas.js.map +1 -0
  51. package/dist/{repositories → modules}/lure/redis-lure.repository.d.ts +4 -4
  52. package/dist/{repositories → modules}/lure/redis-lure.repository.js +6 -6
  53. package/dist/modules/lure/redis-lure.repository.js.map +1 -0
  54. package/dist/{repositories → modules}/message/index.d.ts +1 -0
  55. package/dist/{repositories → modules}/message/index.js +1 -0
  56. package/dist/modules/message/index.js.map +1 -0
  57. package/dist/modules/message/message.d.ts +9 -0
  58. package/dist/{repositories → modules}/message/message.functions.d.ts +8 -3
  59. package/dist/{repositories → modules}/message/message.functions.js +23 -12
  60. package/dist/modules/message/message.functions.js.map +1 -0
  61. package/dist/modules/message/message.js.map +1 -0
  62. package/dist/modules/message/message.models.d.ts +29 -0
  63. package/dist/{models/message/message.js → modules/message/message.models.js} +8 -10
  64. package/dist/modules/message/message.models.js.map +1 -0
  65. package/dist/modules/message/message.schemas.js +160 -0
  66. package/dist/modules/message/message.schemas.js.map +1 -0
  67. package/dist/modules/message/redis-message.repository.d.ts +23 -0
  68. package/dist/{repositories → modules}/message/redis-message.repository.js +33 -10
  69. package/dist/modules/message/redis-message.repository.js.map +1 -0
  70. package/dist/{repositories → modules}/proxy/index.d.ts +1 -0
  71. package/dist/{repositories → modules}/proxy/index.js +1 -0
  72. package/dist/modules/proxy/index.js.map +1 -0
  73. package/dist/{repositories → modules}/proxy/proxy.d.ts +1 -1
  74. package/dist/{repositories → modules}/proxy/proxy.functions.d.ts +1 -1
  75. package/dist/{repositories → modules}/proxy/proxy.functions.js +13 -13
  76. package/dist/modules/proxy/proxy.functions.js.map +1 -0
  77. package/dist/modules/proxy/proxy.js.map +1 -0
  78. package/dist/{models/proxy/proxy.js → modules/proxy/proxy.models.js} +1 -1
  79. package/dist/modules/proxy/proxy.models.js.map +1 -0
  80. package/dist/{repositories → modules}/proxy/proxy.schemas.js +12 -12
  81. package/dist/modules/proxy/proxy.schemas.js.map +1 -0
  82. package/dist/{repositories → modules}/proxy/redis-proxy.repository.d.ts +4 -4
  83. package/dist/{repositories → modules}/proxy/redis-proxy.repository.js +6 -6
  84. package/dist/modules/proxy/redis-proxy.repository.js.map +1 -0
  85. package/dist/{repositories → modules}/redirector/index.d.ts +1 -0
  86. package/dist/{repositories → modules}/redirector/index.js +1 -0
  87. package/dist/modules/redirector/index.js.map +1 -0
  88. package/dist/{repositories → modules}/redirector/redirector.d.ts +3 -1
  89. package/dist/{repositories → modules}/redirector/redirector.functions.d.ts +15 -4
  90. package/dist/{repositories → modules}/redirector/redirector.functions.js +39 -13
  91. package/dist/modules/redirector/redirector.functions.js.map +1 -0
  92. package/dist/modules/redirector/redirector.js.map +1 -0
  93. package/dist/{models/redirector/redirector.d.ts → modules/redirector/redirector.models.d.ts} +5 -1
  94. package/dist/{models/redirector/redirector.js → modules/redirector/redirector.models.js} +10 -2
  95. package/dist/modules/redirector/redirector.models.js.map +1 -0
  96. package/dist/modules/redirector/redirector.schemas.d.ts +7 -0
  97. package/dist/modules/redirector/redirector.schemas.js +73 -0
  98. package/dist/modules/redirector/redirector.schemas.js.map +1 -0
  99. package/dist/{repositories → modules}/redirector/redis-redirector.repository.d.ts +6 -4
  100. package/dist/{repositories → modules}/redirector/redis-redirector.repository.js +28 -8
  101. package/dist/modules/redirector/redis-redirector.repository.js.map +1 -0
  102. package/dist/{repositories → modules}/session/index.d.ts +1 -0
  103. package/dist/{repositories → modules}/session/index.js +1 -0
  104. package/dist/modules/session/index.js.map +1 -0
  105. package/dist/{repositories → modules}/session/redis-session.repository.d.ts +4 -4
  106. package/dist/{repositories → modules}/session/redis-session.repository.js +11 -11
  107. package/dist/modules/session/redis-session.repository.js.map +1 -0
  108. package/dist/{repositories → modules}/session/session.d.ts +1 -1
  109. package/dist/{repositories → modules}/session/session.functions.d.ts +4 -4
  110. package/dist/{repositories → modules}/session/session.functions.js +10 -10
  111. package/dist/modules/session/session.functions.js.map +1 -0
  112. package/dist/modules/session/session.js.map +1 -0
  113. package/dist/{models/session/session.d.ts → modules/session/session.models.d.ts} +9 -3
  114. package/dist/{models/session/session.js → modules/session/session.models.js} +6 -6
  115. package/dist/modules/session/session.models.js.map +1 -0
  116. package/dist/modules/session/session.schemas.d.ts +4 -0
  117. package/dist/modules/session/session.schemas.js +59 -0
  118. package/dist/modules/session/session.schemas.js.map +1 -0
  119. package/dist/{repositories → modules}/target/index.d.ts +1 -0
  120. package/dist/{repositories → modules}/target/index.js +1 -0
  121. package/dist/modules/target/index.js.map +1 -0
  122. package/dist/{repositories → modules}/target/redis-target.repository.d.ts +6 -6
  123. package/dist/{repositories → modules}/target/redis-target.repository.js +16 -14
  124. package/dist/modules/target/redis-target.repository.js.map +1 -0
  125. package/dist/{repositories → modules}/target/target.d.ts +3 -3
  126. package/dist/{repositories → modules}/target/target.functions.d.ts +6 -5
  127. package/dist/{repositories → modules}/target/target.functions.js +44 -40
  128. package/dist/modules/target/target.functions.js.map +1 -0
  129. package/dist/modules/target/target.js.map +1 -0
  130. package/dist/{models/target/target.d.ts → modules/target/target.models.d.ts} +8 -5
  131. package/dist/{models/target/target.js → modules/target/target.models.js} +14 -11
  132. package/dist/modules/target/target.models.js.map +1 -0
  133. package/dist/{repositories → modules}/target/target.schemas.d.ts +3 -1
  134. package/dist/{repositories → modules}/target/target.schemas.js +74 -71
  135. package/dist/modules/target/target.schemas.js.map +1 -0
  136. package/dist/redis-database-connector.d.ts +3 -2
  137. package/dist/redis-database-connector.js +10 -8
  138. package/dist/redis-database-connector.js.map +1 -1
  139. package/dist/redis-database-manager.d.ts +4 -3
  140. package/dist/redis-database-manager.js +10 -8
  141. package/dist/redis-database-manager.js.map +1 -1
  142. package/dist/redis-functions.d.ts +1 -1
  143. package/dist/redis-functions.js +30 -1395
  144. package/dist/redis-functions.js.map +1 -1
  145. package/package.json +17 -13
  146. package/dist/models/campaign/campaign.js.map +0 -1
  147. package/dist/models/campaign/index.d.ts +0 -1
  148. package/dist/models/campaign/index.js +0 -2
  149. package/dist/models/campaign/index.js.map +0 -1
  150. package/dist/models/index.js.map +0 -1
  151. package/dist/models/lure/index.d.ts +0 -1
  152. package/dist/models/lure/index.js +0 -2
  153. package/dist/models/lure/index.js.map +0 -1
  154. package/dist/models/lure/lure.js.map +0 -1
  155. package/dist/models/message/index.d.ts +0 -1
  156. package/dist/models/message/index.js +0 -2
  157. package/dist/models/message/index.js.map +0 -1
  158. package/dist/models/message/message.d.ts +0 -38
  159. package/dist/models/message/message.js.map +0 -1
  160. package/dist/models/proxy/index.d.ts +0 -1
  161. package/dist/models/proxy/index.js +0 -2
  162. package/dist/models/proxy/index.js.map +0 -1
  163. package/dist/models/proxy/proxy.js.map +0 -1
  164. package/dist/models/redirector/index.d.ts +0 -1
  165. package/dist/models/redirector/index.js +0 -2
  166. package/dist/models/redirector/index.js.map +0 -1
  167. package/dist/models/redirector/redirector.js.map +0 -1
  168. package/dist/models/session/index.d.ts +0 -1
  169. package/dist/models/session/index.js +0 -2
  170. package/dist/models/session/index.js.map +0 -1
  171. package/dist/models/session/session.js.map +0 -1
  172. package/dist/models/target/index.d.ts +0 -1
  173. package/dist/models/target/index.js +0 -2
  174. package/dist/models/target/index.js.map +0 -1
  175. package/dist/models/target/target.js.map +0 -1
  176. package/dist/repositories/base/index.js.map +0 -1
  177. package/dist/repositories/base/redis-base.repository.js.map +0 -1
  178. package/dist/repositories/campaign/campaign.functions.js.map +0 -1
  179. package/dist/repositories/campaign/campaign.js.map +0 -1
  180. package/dist/repositories/campaign/campaign.schemas.js.map +0 -1
  181. package/dist/repositories/campaign/index.js.map +0 -1
  182. package/dist/repositories/campaign/redis-campaign.repository.js.map +0 -1
  183. package/dist/repositories/index.d.ts +0 -8
  184. package/dist/repositories/index.js +0 -9
  185. package/dist/repositories/index.js.map +0 -1
  186. package/dist/repositories/lure/index.js.map +0 -1
  187. package/dist/repositories/lure/lure.functions.js.map +0 -1
  188. package/dist/repositories/lure/lure.js.map +0 -1
  189. package/dist/repositories/lure/lure.schemas.js.map +0 -1
  190. package/dist/repositories/lure/redis-lure.repository.js.map +0 -1
  191. package/dist/repositories/message/index.js.map +0 -1
  192. package/dist/repositories/message/message.d.ts +0 -6
  193. package/dist/repositories/message/message.functions.js.map +0 -1
  194. package/dist/repositories/message/message.js.map +0 -1
  195. package/dist/repositories/message/message.schemas.js +0 -206
  196. package/dist/repositories/message/message.schemas.js.map +0 -1
  197. package/dist/repositories/message/redis-message.repository.d.ts +0 -20
  198. package/dist/repositories/message/redis-message.repository.js.map +0 -1
  199. package/dist/repositories/proxy/index.js.map +0 -1
  200. package/dist/repositories/proxy/proxy.functions.js.map +0 -1
  201. package/dist/repositories/proxy/proxy.js.map +0 -1
  202. package/dist/repositories/proxy/proxy.schemas.js.map +0 -1
  203. package/dist/repositories/proxy/redis-proxy.repository.js.map +0 -1
  204. package/dist/repositories/redirector/index.js.map +0 -1
  205. package/dist/repositories/redirector/redirector.functions.js.map +0 -1
  206. package/dist/repositories/redirector/redirector.js.map +0 -1
  207. package/dist/repositories/redirector/redirector.schemas.d.ts +0 -3
  208. package/dist/repositories/redirector/redirector.schemas.js +0 -51
  209. package/dist/repositories/redirector/redirector.schemas.js.map +0 -1
  210. package/dist/repositories/redirector/redis-redirector.repository.js.map +0 -1
  211. package/dist/repositories/session/index.js.map +0 -1
  212. package/dist/repositories/session/redis-session.repository.js.map +0 -1
  213. package/dist/repositories/session/session.functions.js.map +0 -1
  214. package/dist/repositories/session/session.js.map +0 -1
  215. package/dist/repositories/session/session.schemas.d.ts +0 -2
  216. package/dist/repositories/session/session.schemas.js +0 -44
  217. package/dist/repositories/session/session.schemas.js.map +0 -1
  218. package/dist/repositories/target/index.js.map +0 -1
  219. package/dist/repositories/target/redis-target.repository.js.map +0 -1
  220. package/dist/repositories/target/target.functions.js.map +0 -1
  221. package/dist/repositories/target/target.js.map +0 -1
  222. package/dist/repositories/target/target.schemas.js.map +0 -1
  223. package/dist/{repositories → modules}/base/index.d.ts +0 -0
  224. package/dist/{repositories → modules}/base/index.js +0 -0
  225. package/dist/{repositories → modules}/campaign/campaign.js +0 -0
  226. package/dist/{models → modules}/index.d.ts +0 -0
  227. package/dist/{models → modules}/index.js +0 -0
  228. package/dist/{repositories → modules}/lure/lure.js +0 -0
  229. package/dist/{models/lure/lure.d.ts → modules/lure/lure.models.d.ts} +0 -0
  230. package/dist/{repositories → modules}/lure/lure.schemas.d.ts +1 -1
  231. package/dist/{repositories → modules}/message/message.js +0 -0
  232. package/dist/{repositories → modules}/message/message.schemas.d.ts +0 -0
  233. package/dist/{repositories → modules}/proxy/proxy.js +0 -0
  234. package/dist/{models/proxy/proxy.d.ts → modules/proxy/proxy.models.d.ts} +0 -0
  235. package/dist/{repositories → modules}/proxy/proxy.schemas.d.ts +1 -1
  236. /package/dist/{repositories → modules}/redirector/redirector.js +0 -0
  237. /package/dist/{repositories → modules}/session/session.js +0 -0
  238. /package/dist/{repositories → modules}/target/target.js +0 -0
@@ -0,0 +1,23 @@
1
+ import { DIContainer } from '@famir/common';
2
+ import { Config } from '@famir/config';
3
+ import { HttpBody, HttpConnection, HttpError, HttpHeaders, HttpMethod, HttpPayload, HttpType } from '@famir/http-proto';
4
+ import { Logger } from '@famir/logger';
5
+ import { Validator } from '@famir/validator';
6
+ import { DatabaseConnector, RedisDatabaseConfig } from '../../database.js';
7
+ import { RedisBaseRepository } from '../base/index.js';
8
+ import { MessageRepository } from './message.js';
9
+ import { FullMessageModel, MessageModel } from './message.models.js';
10
+ export declare class RedisMessageRepository extends RedisBaseRepository implements MessageRepository {
11
+ static register(container: DIContainer): void;
12
+ constructor(validator: Validator, config: Config<RedisDatabaseConfig>, logger: Logger, connector: DatabaseConnector);
13
+ create(campaignId: string, messageId: string, proxyId: string, targetId: string, sessionId: string, type: HttpType, method: HttpMethod, url: string, requestHeaders: HttpHeaders, requestBody: HttpBody, status: number, responseHeaders: HttpHeaders, responseBody: HttpBody, connection: HttpConnection, payload: HttpPayload, errors: HttpError[], analyze: string, startTime: number, finishTime: number): Promise<void>;
14
+ createDummy(campaignId: string, messageId: string, proxyId: string, targetId: string, sessionId: string): Promise<void>;
15
+ read(campaignId: string, messageId: string): Promise<MessageModel | null>;
16
+ readFull(campaignId: string, messageId: string): Promise<FullMessageModel | null>;
17
+ protected buildModel(rawModel: unknown): MessageModel | null;
18
+ protected buildFullModel(rawModel: unknown): FullMessageModel | null;
19
+ protected parseHeaders(value: string): HttpHeaders;
20
+ protected parseConnection(value: string): HttpConnection;
21
+ protected parsePayload(value: string): HttpPayload;
22
+ protected parseErrors(value: string): HttpError[];
23
+ }
@@ -2,22 +2,22 @@ import { CONFIG } from '@famir/config';
2
2
  import { LOGGER } from '@famir/logger';
3
3
  import { VALIDATOR } from '@famir/validator';
4
4
  import { DATABASE_CONNECTOR } from '../../database.js';
5
- import { FullMessageModel, MessageModel } from '../../models/index.js';
6
5
  import { RedisBaseRepository } from '../base/index.js';
7
6
  import { MESSAGE_REPOSITORY } from './message.js';
7
+ import { FullMessageModel, MessageModel } from './message.models.js';
8
8
  import { messageSchemas } from './message.schemas.js';
9
9
  export class RedisMessageRepository extends RedisBaseRepository {
10
- static inject(container) {
11
- container.registerSingleton(MESSAGE_REPOSITORY, (c) => new RedisMessageRepository(c.resolve(VALIDATOR), c.resolve(CONFIG), c.resolve(LOGGER), c.resolve(DATABASE_CONNECTOR).connection()));
10
+ static register(container) {
11
+ container.registerSingleton(MESSAGE_REPOSITORY, (c) => new RedisMessageRepository(c.resolve(VALIDATOR), c.resolve(CONFIG), c.resolve(LOGGER), c.resolve(DATABASE_CONNECTOR)));
12
12
  }
13
- constructor(validator, config, logger, connection) {
14
- super(validator, config, logger, connection, 'message');
13
+ constructor(validator, config, logger, connector) {
14
+ super(validator, config, logger, connector, 'message');
15
15
  this.validator.addSchemas(messageSchemas);
16
16
  this.logger.debug(`MessageRepository initialized`);
17
17
  }
18
- async create(campaignId, messageId, proxyId, targetId, sessionId, kind, method, url, requestHeaders, requestBody, status, responseHeaders, responseBody, connection, payload, errors, processor, startTime, finishTime) {
18
+ async create(campaignId, messageId, proxyId, targetId, sessionId, type, method, url, requestHeaders, requestBody, status, responseHeaders, responseBody, connection, payload, errors, analyze, startTime, finishTime) {
19
19
  try {
20
- const statusReply = await this.connection.message.create_message(this.options.prefix, campaignId, messageId, proxyId, targetId, sessionId, kind, method, url, this.encodeJson(requestHeaders), this.encodeBase64(requestBody), status, this.encodeJson(responseHeaders), this.encodeBase64(responseBody), this.encodeJson(connection), this.encodeJson(payload), this.encodeJson(errors), processor, startTime, finishTime);
20
+ const statusReply = await this.connection.message.create_message(this.options.prefix, campaignId, messageId, proxyId, targetId, sessionId, type, method, url, this.encodeJson(requestHeaders), this.encodeBase64(requestBody), status.toString(), this.encodeJson(responseHeaders), this.encodeBase64(responseBody), this.encodeJson(connection), this.encodeJson(payload), this.encodeJson(errors), analyze, startTime.toString(), finishTime.toString(), Date.now().toString());
21
21
  const mesg = this.handleStatusReply(statusReply);
22
22
  this.logger.info(mesg, { message: { campaignId, messageId, proxyId, targetId, sessionId } });
23
23
  }
@@ -25,13 +25,32 @@ export class RedisMessageRepository extends RedisBaseRepository {
25
25
  this.raiseError(error, 'create', { campaignId, messageId, proxyId, targetId, sessionId });
26
26
  }
27
27
  }
28
+ async createDummy(campaignId, messageId, proxyId, targetId, sessionId) {
29
+ try {
30
+ const statusReply = await this.connection.message.create_dummy_message(this.options.prefix, campaignId, messageId, proxyId, targetId, sessionId);
31
+ const mesg = this.handleStatusReply(statusReply);
32
+ this.logger.info(mesg, { message: { campaignId, messageId, proxyId, targetId, sessionId } });
33
+ }
34
+ catch (error) {
35
+ this.raiseError(error, 'createDummy', { campaignId, messageId, proxyId, targetId, sessionId });
36
+ }
37
+ }
28
38
  async read(campaignId, messageId) {
39
+ try {
40
+ const rawModel = await this.connection.message.read_message(this.options.prefix, campaignId, messageId);
41
+ return this.buildModel(rawModel);
42
+ }
43
+ catch (error) {
44
+ this.raiseError(error, 'read', { campaignId, messageId });
45
+ }
46
+ }
47
+ async readFull(campaignId, messageId) {
29
48
  try {
30
49
  const rawModel = await this.connection.message.read_full_message(this.options.prefix, campaignId, messageId);
31
50
  return this.buildFullModel(rawModel);
32
51
  }
33
52
  catch (error) {
34
- this.raiseError(error, 'read', { campaignId, messageId });
53
+ this.raiseError(error, 'readFull', { campaignId, messageId });
35
54
  }
36
55
  }
37
56
  buildModel(rawModel) {
@@ -39,14 +58,18 @@ export class RedisMessageRepository extends RedisBaseRepository {
39
58
  return null;
40
59
  }
41
60
  this.validateRawData('database-raw-message', rawModel);
42
- return new MessageModel(rawModel.campaign_id, rawModel.message_id, rawModel.proxy_id, rawModel.target_id, rawModel.session_id, rawModel.kind, rawModel.method, rawModel.url, rawModel.status, rawModel.processor, rawModel.start_time, rawModel.finish_time, new Date(rawModel.created_at));
61
+ this.validateRawData('database-message-type', rawModel.type);
62
+ this.validateRawData('database-message-method', rawModel.method);
63
+ return new MessageModel(rawModel.campaign_id, rawModel.message_id, rawModel.proxy_id, rawModel.target_id, rawModel.session_id, rawModel.type, rawModel.method, rawModel.url, rawModel.status, rawModel.analyze, rawModel.start_time, rawModel.finish_time, new Date(rawModel.created_at));
43
64
  }
44
65
  buildFullModel(rawModel) {
45
66
  if (rawModel === null) {
46
67
  return null;
47
68
  }
48
69
  this.validateRawData('database-raw-full-message', rawModel);
49
- return new FullMessageModel(rawModel.campaign_id, rawModel.message_id, rawModel.proxy_id, rawModel.target_id, rawModel.session_id, rawModel.kind, rawModel.method, rawModel.url, this.parseHeaders(rawModel.request_headers), this.decodeBase64(rawModel.request_body), rawModel.status, this.parseHeaders(rawModel.response_headers), this.decodeBase64(rawModel.response_body), this.parseConnection(rawModel.connection), this.parsePayload(rawModel.payload), this.parseErrors(rawModel.errors), rawModel.processor, rawModel.start_time, rawModel.finish_time, new Date(rawModel.created_at));
70
+ this.validateRawData('database-message-type', rawModel.type);
71
+ this.validateRawData('database-message-method', rawModel.method);
72
+ return new FullMessageModel(rawModel.campaign_id, rawModel.message_id, rawModel.proxy_id, rawModel.target_id, rawModel.session_id, rawModel.type, rawModel.method, rawModel.url, this.parseHeaders(rawModel.request_headers), this.decodeBase64(rawModel.request_body), rawModel.status, this.parseHeaders(rawModel.response_headers), this.decodeBase64(rawModel.response_body), this.parseConnection(rawModel.connection), this.parsePayload(rawModel.payload), this.parseErrors(rawModel.errors), rawModel.analyze, rawModel.start_time, rawModel.finish_time, new Date(rawModel.created_at));
50
73
  }
51
74
  parseHeaders(value) {
52
75
  const data = this.decodeJson(value);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-message.repository.js","sourceRoot":"","sources":["../../../src/modules/message/redis-message.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAA;AAU9C,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAa,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAA0C,MAAM,mBAAmB,CAAA;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAOrD,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAI7D,MAAM,CAAC,QAAQ,CAAC,SAAsB;QACpC,SAAS,CAAC,iBAAiB,CACzB,kBAAkB,EAClB,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,sBAAsB,CACxB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAC9B,CACJ,CAAA;IACH,CAAC;IAED,YACE,SAAoB,EACpB,MAAmC,EACnC,MAAc,EACd,SAA4B;QAE5B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAEtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;QAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,SAAiB,EACjB,IAAc,EACd,MAAkB,EAClB,GAAW,EACX,cAA2B,EAC3B,WAAqB,EACrB,MAAc,EACd,eAA4B,EAC5B,YAAsB,EACtB,UAA0B,EAC1B,OAAoB,EACpB,MAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,MAAM,EACN,GAAG,EACH,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAC9B,MAAM,CAAC,QAAQ,EAAE,EACjB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAChC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EACvB,OAAO,EACP,SAAS,CAAC,QAAQ,EAAE,EACpB,UAAU,CAAC,QAAQ,EAAE,EACrB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CACtB,CAAA;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YAEhD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,SAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CACpE,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,SAAS,CACV,CAAA;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YAEhD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAChG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,SAAiB;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CACzD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,UAAU,EACV,SAAS,CACV,CAAA;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,SAAiB;QAClD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,UAAU,EACV,SAAS,CACV,CAAA;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAES,UAAU,CAAC,QAAiB;QACpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,eAAe,CAAa,sBAAsB,EAAE,QAAQ,CAAC,CAAA;QAClE,IAAI,CAAC,eAAe,CAAW,uBAAuB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACtE,IAAI,CAAC,eAAe,CAAa,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE5E,OAAO,IAAI,YAAY,CACrB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,WAAW,EACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC9B,CAAA;IACH,CAAC;IAES,cAAc,CAAC,QAAiB;QACxC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,eAAe,CAAiB,2BAA2B,EAAE,QAAQ,CAAC,CAAA;QAC3E,IAAI,CAAC,eAAe,CAAW,uBAAuB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACtE,IAAI,CAAC,eAAe,CAAa,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE5E,OAAO,IAAI,gBAAgB,CACzB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,GAAG,EACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EACxC,QAAQ,CAAC,MAAM,EACf,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC5C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EACzC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EACjC,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,WAAW,EACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC9B,CAAA;IACH,CAAC;IAES,YAAY,CAAC,KAAa;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,eAAe,CAAc,0BAA0B,EAAE,IAAI,CAAC,CAAA;QAEnE,OAAO,IAAI,CAAA;IACb,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,eAAe,CAAiB,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAEzE,OAAO,IAAI,CAAA;IACb,CAAC;IAES,YAAY,CAAC,KAAa;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,eAAe,CAAc,0BAA0B,EAAE,IAAI,CAAC,CAAA;QAEnE,OAAO,IAAI,CAAA;IACb,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,eAAe,CAAc,yBAAyB,EAAE,IAAI,CAAC,CAAA;QAElE,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
1
  export * from './proxy.js';
2
+ export * from './proxy.models.js';
2
3
  export * from './proxy.schemas.js';
3
4
  export * from './redis-proxy.repository.js';
@@ -1,4 +1,5 @@
1
1
  export * from './proxy.js';
2
+ export * from './proxy.models.js';
2
3
  export * from './proxy.schemas.js';
3
4
  export * from './redis-proxy.repository.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/proxy/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA"}
@@ -1,4 +1,4 @@
1
- import { ProxyModel } from '../../models/index.js';
1
+ import { ProxyModel } from './proxy.models.js';
2
2
  export declare const PROXY_REPOSITORY: unique symbol;
3
3
  export interface ProxyRepository {
4
4
  create(campaignId: string, proxyId: string, url: string, lockSecret: string): Promise<void>;
@@ -11,7 +11,7 @@ export declare const proxyFunctions: {
11
11
  readonly proxy: {
12
12
  readonly create_proxy: {
13
13
  readonly NUMBER_OF_KEYS: 5;
14
- readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, proxyId: string, url: string, lockSecret: string) => void;
14
+ readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, proxyId: string, url: string, createdAt: string, lockSecret: string) => void;
15
15
  readonly transformReply: () => unknown;
16
16
  };
17
17
  readonly read_proxy: {
@@ -1,21 +1,21 @@
1
- import { campaignKey, campaignLockKey, enabledProxyIndexKey, proxyIndexKey, proxyKey, proxyUniqueUrlKey } from '../../database.keys.js';
1
+ import { campaignKey, campaignLockKey, enabledProxyIndexKey, proxyIndexKey, proxyKey, proxyUrlsKey, } from '../../database.keys.js';
2
2
  export const proxyFunctions = {
3
3
  proxy: {
4
4
  create_proxy: {
5
5
  NUMBER_OF_KEYS: 5,
6
- parseCommand(parser, prefix, campaignId, proxyId, url, lockSecret) {
6
+ parseCommand(parser, prefix, campaignId, proxyId, url, createdAt, lockSecret) {
7
7
  parser.pushKey(campaignKey(prefix, campaignId));
8
8
  parser.pushKey(campaignLockKey(prefix, campaignId));
9
9
  parser.pushKey(proxyKey(prefix, campaignId, proxyId));
10
- parser.pushKey(proxyUniqueUrlKey(prefix, campaignId));
10
+ parser.pushKey(proxyUrlsKey(prefix, campaignId));
11
11
  parser.pushKey(proxyIndexKey(prefix, campaignId));
12
12
  parser.push(campaignId);
13
13
  parser.push(proxyId);
14
14
  parser.push(url);
15
- parser.push(Date.now().toString());
15
+ parser.push(createdAt);
16
16
  parser.push(lockSecret);
17
17
  },
18
- transformReply: undefined
18
+ transformReply: undefined,
19
19
  },
20
20
  read_proxy: {
21
21
  NUMBER_OF_KEYS: 2,
@@ -23,7 +23,7 @@ export const proxyFunctions = {
23
23
  parser.pushKey(campaignKey(prefix, campaignId));
24
24
  parser.pushKey(proxyKey(prefix, campaignId, proxyId));
25
25
  },
26
- transformReply: undefined
26
+ transformReply: undefined,
27
27
  },
28
28
  read_proxy_index: {
29
29
  NUMBER_OF_KEYS: 2,
@@ -31,7 +31,7 @@ export const proxyFunctions = {
31
31
  parser.pushKey(campaignKey(prefix, campaignId));
32
32
  parser.pushKey(proxyIndexKey(prefix, campaignId));
33
33
  },
34
- transformReply: undefined
34
+ transformReply: undefined,
35
35
  },
36
36
  enable_proxy: {
37
37
  NUMBER_OF_KEYS: 4,
@@ -42,7 +42,7 @@ export const proxyFunctions = {
42
42
  parser.pushKey(enabledProxyIndexKey(prefix, campaignId));
43
43
  parser.push(lockSecret);
44
44
  },
45
- transformReply: undefined
45
+ transformReply: undefined,
46
46
  },
47
47
  disable_proxy: {
48
48
  NUMBER_OF_KEYS: 4,
@@ -53,7 +53,7 @@ export const proxyFunctions = {
53
53
  parser.pushKey(enabledProxyIndexKey(prefix, campaignId));
54
54
  parser.push(lockSecret);
55
55
  },
56
- transformReply: undefined
56
+ transformReply: undefined,
57
57
  },
58
58
  delete_proxy: {
59
59
  NUMBER_OF_KEYS: 5,
@@ -61,12 +61,12 @@ export const proxyFunctions = {
61
61
  parser.pushKey(campaignKey(prefix, campaignId));
62
62
  parser.pushKey(campaignLockKey(prefix, campaignId));
63
63
  parser.pushKey(proxyKey(prefix, campaignId, proxyId));
64
- parser.pushKey(proxyUniqueUrlKey(prefix, campaignId));
64
+ parser.pushKey(proxyUrlsKey(prefix, campaignId));
65
65
  parser.pushKey(proxyIndexKey(prefix, campaignId));
66
66
  parser.push(lockSecret);
67
67
  },
68
- transformReply: undefined
69
- }
70
- }
68
+ transformReply: undefined,
69
+ },
70
+ },
71
71
  };
72
72
  //# sourceMappingURL=proxy.functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.functions.js","sourceRoot":"","sources":["../../../src/modules/proxy/proxy.functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/modules/proxy/proxy.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA"}
@@ -20,4 +20,4 @@ export class ProxyModel {
20
20
  this.createdAt = createdAt;
21
21
  }
22
22
  }
23
- //# sourceMappingURL=proxy.js.map
23
+ //# sourceMappingURL=proxy.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.models.js","sourceRoot":"","sources":["../../../src/modules/proxy/proxy.models.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,UAAU;IAUV;IACA;IACA;IACA;IACA;IACA;IAdX,MAAM,CAAC,SAAS,GAAG,CAAuB,KAAe,EAAc,EAAE;QACvE,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,CAAC,SAAS,GAAG,CAAuB,KAAQ,EAAoC,EAAE;QACtF,OAAO,KAAK,CAAC,SAAS,CAAA;IACxB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,OAAe,EACf,GAAW,EACX,SAAkB,EAClB,YAAoB,EACpB,SAAe;QALf,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC"}
@@ -3,32 +3,32 @@ const rawProxySchema = {
3
3
  required: ['campaign_id', 'proxy_id', 'url', 'is_enabled', 'message_count', 'created_at'],
4
4
  properties: {
5
5
  campaign_id: {
6
- type: 'string'
6
+ type: 'string',
7
7
  },
8
8
  proxy_id: {
9
- type: 'string'
9
+ type: 'string',
10
10
  },
11
11
  url: {
12
- type: 'string'
12
+ type: 'string',
13
13
  },
14
14
  is_enabled: {
15
- type: 'integer'
15
+ type: 'integer',
16
16
  },
17
17
  message_count: {
18
- type: 'integer'
18
+ type: 'integer',
19
19
  },
20
20
  created_at: {
21
- type: 'integer'
22
- }
21
+ type: 'integer',
22
+ },
23
23
  },
24
- additionalProperties: false
25
- };
26
- export const proxySchemas = {
27
- 'database-raw-proxy': rawProxySchema
24
+ additionalProperties: false,
28
25
  };
29
26
  export const proxyUrlSchema = {
30
27
  type: 'string',
31
28
  minLength: 1,
32
- maxLength: 128
29
+ maxLength: 128,
30
+ };
31
+ export const proxySchemas = {
32
+ 'database-raw-proxy': rawProxySchema,
33
33
  };
34
34
  //# sourceMappingURL=proxy.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.schemas.js","sourceRoot":"","sources":["../../../src/modules/proxy/proxy.schemas.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,CAAC;IACzF,UAAU,EAAE;QACV,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;SACf;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;SACf;QACD,UAAU,EAAE;YACV,IAAI,EAAE,SAAS;SAChB;QACD,aAAa,EAAE;YACb,IAAI,EAAE,SAAS;SAChB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,SAAS;SAChB;KACF;IACD,oBAAoB,EAAE,KAAK;CACnB,CAAA;AAMV,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;CACN,CAAA;AAMV,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,oBAAoB,EAAE,cAAc;CAC5B,CAAA"}
@@ -2,13 +2,13 @@ import { DIContainer } from '@famir/common';
2
2
  import { Config } from '@famir/config';
3
3
  import { Logger } from '@famir/logger';
4
4
  import { Validator } from '@famir/validator';
5
- import { RedisDatabaseConfig, RedisDatabaseConnection } from '../../database.js';
6
- import { ProxyModel } from '../../models/index.js';
5
+ import { DatabaseConnector, RedisDatabaseConfig } from '../../database.js';
7
6
  import { RedisBaseRepository } from '../base/index.js';
8
7
  import { ProxyRepository } from './proxy.js';
8
+ import { ProxyModel } from './proxy.models.js';
9
9
  export declare class RedisProxyRepository extends RedisBaseRepository implements ProxyRepository {
10
- static inject(container: DIContainer): void;
11
- constructor(validator: Validator, config: Config<RedisDatabaseConfig>, logger: Logger, connection: RedisDatabaseConnection);
10
+ static register(container: DIContainer): void;
11
+ constructor(validator: Validator, config: Config<RedisDatabaseConfig>, logger: Logger, connector: DatabaseConnector);
12
12
  create(campaignId: string, proxyId: string, url: string, lockSecret: string): Promise<void>;
13
13
  read(campaignId: string, proxyId: string): Promise<ProxyModel | null>;
14
14
  enable(campaignId: string, proxyId: string, lockSecret: string): Promise<void>;
@@ -2,22 +2,22 @@ import { CONFIG } from '@famir/config';
2
2
  import { LOGGER } from '@famir/logger';
3
3
  import { VALIDATOR } from '@famir/validator';
4
4
  import { DATABASE_CONNECTOR } from '../../database.js';
5
- import { ProxyModel } from '../../models/index.js';
6
5
  import { RedisBaseRepository } from '../base/index.js';
7
6
  import { PROXY_REPOSITORY } from './proxy.js';
7
+ import { ProxyModel } from './proxy.models.js';
8
8
  import { proxySchemas } from './proxy.schemas.js';
9
9
  export class RedisProxyRepository extends RedisBaseRepository {
10
- static inject(container) {
11
- container.registerSingleton(PROXY_REPOSITORY, (c) => new RedisProxyRepository(c.resolve(VALIDATOR), c.resolve(CONFIG), c.resolve(LOGGER), c.resolve(DATABASE_CONNECTOR).connection()));
10
+ static register(container) {
11
+ container.registerSingleton(PROXY_REPOSITORY, (c) => new RedisProxyRepository(c.resolve(VALIDATOR), c.resolve(CONFIG), c.resolve(LOGGER), c.resolve(DATABASE_CONNECTOR)));
12
12
  }
13
- constructor(validator, config, logger, connection) {
14
- super(validator, config, logger, connection, 'proxy');
13
+ constructor(validator, config, logger, connector) {
14
+ super(validator, config, logger, connector, 'proxy');
15
15
  this.validator.addSchemas(proxySchemas);
16
16
  this.logger.debug(`ProxyRepository initialized`);
17
17
  }
18
18
  async create(campaignId, proxyId, url, lockSecret) {
19
19
  try {
20
- const statusReply = await this.connection.proxy.create_proxy(this.options.prefix, campaignId, proxyId, url, lockSecret);
20
+ const statusReply = await this.connection.proxy.create_proxy(this.options.prefix, campaignId, proxyId, url, Date.now().toString(), lockSecret);
21
21
  const mesg = this.handleStatusReply(statusReply);
22
22
  this.logger.info(mesg, { proxy: { campaignId, proxyId } });
23
23
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-proxy.repository.js","sourceRoot":"","sources":["../../../src/modules/proxy/redis-proxy.repository.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from './redirector.js';
2
+ export * from './redirector.models.js';
2
3
  export * from './redirector.schemas.js';
3
4
  export * from './redis-redirector.repository.js';
@@ -1,4 +1,5 @@
1
1
  export * from './redirector.js';
2
+ export * from './redirector.models.js';
2
3
  export * from './redirector.schemas.js';
3
4
  export * from './redis-redirector.repository.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/redirector/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA"}
@@ -1,10 +1,12 @@
1
- import { FullRedirectorModel, RedirectorModel } from '../../models/index.js';
1
+ import { FullRedirectorModel, RedirectorModel } from './redirector.models.js';
2
2
  export declare const REDIRECTOR_REPOSITORY: unique symbol;
3
3
  export interface RedirectorRepository {
4
4
  create(campaignId: string, redirectorId: string, page: string, lockSecret: string): Promise<void>;
5
5
  read(campaignId: string, redirectorId: string): Promise<RedirectorModel | null>;
6
6
  readFull(campaignId: string, redirectorId: string): Promise<FullRedirectorModel | null>;
7
7
  update(campaignId: string, redirectorId: string, page: string | null | undefined, lockSecret: string): Promise<void>;
8
+ appendField(campaignId: string, redirectorId: string, field: string, lockSecret: string): Promise<void>;
9
+ removeField(campaignId: string, redirectorId: string, field: string, lockSecret: string): Promise<void>;
8
10
  delete(campaignId: string, redirectorId: string, lockSecret: string): Promise<void>;
9
11
  list(campaignId: string): Promise<RedirectorModel[] | null>;
10
12
  listFull(campaignId: string): Promise<FullRedirectorModel[] | null>;
@@ -7,12 +7,13 @@ export interface RawRedirector {
7
7
  }
8
8
  export interface RawFullRedirector extends RawRedirector {
9
9
  page: string;
10
+ fields: string[];
10
11
  }
11
12
  export declare const redirectorFunctions: {
12
13
  readonly redirector: {
13
14
  readonly create_redirector: {
14
15
  readonly NUMBER_OF_KEYS: 4;
15
- readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, page: string, lockSecret: string) => void;
16
+ readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, page: string, createdAt: string, lockSecret: string) => void;
16
17
  readonly transformReply: () => unknown;
17
18
  };
18
19
  readonly read_redirector: {
@@ -21,7 +22,7 @@ export declare const redirectorFunctions: {
21
22
  readonly transformReply: () => unknown;
22
23
  };
23
24
  readonly read_full_redirector: {
24
- readonly NUMBER_OF_KEYS: 2;
25
+ readonly NUMBER_OF_KEYS: 3;
25
26
  readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string) => void;
26
27
  readonly transformReply: () => unknown;
27
28
  };
@@ -32,11 +33,21 @@ export declare const redirectorFunctions: {
32
33
  };
33
34
  readonly update_redirector: {
34
35
  readonly NUMBER_OF_KEYS: 3;
35
- readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, page: string | null | undefined, lockSecret: string) => void;
36
+ readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, page: string | null, lockSecret: string) => void;
36
37
  readonly transformReply: () => unknown;
37
38
  };
38
- readonly delete_redirector: {
39
+ readonly append_redirector_field: {
39
40
  readonly NUMBER_OF_KEYS: 4;
41
+ readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, field: string, lockSecret: string) => void;
42
+ readonly transformReply: () => unknown;
43
+ };
44
+ readonly remove_redirector_field: {
45
+ readonly NUMBER_OF_KEYS: 4;
46
+ readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, field: string, lockSecret: string) => void;
47
+ readonly transformReply: () => unknown;
48
+ };
49
+ readonly delete_redirector: {
50
+ readonly NUMBER_OF_KEYS: 5;
40
51
  readonly parseCommand: (parser: CommandParser, prefix: string, campaignId: string, redirectorId: string, lockSecret: string) => void;
41
52
  readonly transformReply: () => unknown;
42
53
  };
@@ -1,9 +1,9 @@
1
- import { campaignKey, campaignLockKey, redirectorIndexKey, redirectorKey } from '../../database.keys.js';
1
+ import { campaignKey, campaignLockKey, redirectorFieldsKey, redirectorIndexKey, redirectorKey, } from '../../database.keys.js';
2
2
  export const redirectorFunctions = {
3
3
  redirector: {
4
4
  create_redirector: {
5
5
  NUMBER_OF_KEYS: 4,
6
- parseCommand(parser, prefix, campaignId, redirectorId, page, lockSecret) {
6
+ parseCommand(parser, prefix, campaignId, redirectorId, page, createdAt, lockSecret) {
7
7
  parser.pushKey(campaignKey(prefix, campaignId));
8
8
  parser.pushKey(campaignLockKey(prefix, campaignId));
9
9
  parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
@@ -11,10 +11,10 @@ export const redirectorFunctions = {
11
11
  parser.push(campaignId);
12
12
  parser.push(redirectorId);
13
13
  parser.push(page);
14
- parser.push(Date.now().toString());
14
+ parser.push(createdAt);
15
15
  parser.push(lockSecret);
16
16
  },
17
- transformReply: undefined
17
+ transformReply: undefined,
18
18
  },
19
19
  read_redirector: {
20
20
  NUMBER_OF_KEYS: 2,
@@ -22,15 +22,16 @@ export const redirectorFunctions = {
22
22
  parser.pushKey(campaignKey(prefix, campaignId));
23
23
  parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
24
24
  },
25
- transformReply: undefined
25
+ transformReply: undefined,
26
26
  },
27
27
  read_full_redirector: {
28
- NUMBER_OF_KEYS: 2,
28
+ NUMBER_OF_KEYS: 3,
29
29
  parseCommand(parser, prefix, campaignId, redirectorId) {
30
30
  parser.pushKey(campaignKey(prefix, campaignId));
31
31
  parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
32
+ parser.pushKey(redirectorFieldsKey(prefix, campaignId, redirectorId));
32
33
  },
33
- transformReply: undefined
34
+ transformReply: undefined,
34
35
  },
35
36
  read_redirector_index: {
36
37
  NUMBER_OF_KEYS: 2,
@@ -38,7 +39,7 @@ export const redirectorFunctions = {
38
39
  parser.pushKey(campaignKey(prefix, campaignId));
39
40
  parser.pushKey(redirectorIndexKey(prefix, campaignId));
40
41
  },
41
- transformReply: undefined
42
+ transformReply: undefined,
42
43
  },
43
44
  update_redirector: {
44
45
  NUMBER_OF_KEYS: 3,
@@ -52,19 +53,44 @@ export const redirectorFunctions = {
52
53
  }
53
54
  parser.push(lockSecret);
54
55
  },
55
- transformReply: undefined
56
+ transformReply: undefined,
56
57
  },
57
- delete_redirector: {
58
+ append_redirector_field: {
58
59
  NUMBER_OF_KEYS: 4,
60
+ parseCommand(parser, prefix, campaignId, redirectorId, field, lockSecret) {
61
+ parser.pushKey(campaignKey(prefix, campaignId));
62
+ parser.pushKey(campaignLockKey(prefix, campaignId));
63
+ parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
64
+ parser.pushKey(redirectorFieldsKey(prefix, campaignId, redirectorId));
65
+ parser.push(field);
66
+ parser.push(lockSecret);
67
+ },
68
+ transformReply: undefined,
69
+ },
70
+ remove_redirector_field: {
71
+ NUMBER_OF_KEYS: 4,
72
+ parseCommand(parser, prefix, campaignId, redirectorId, field, lockSecret) {
73
+ parser.pushKey(campaignKey(prefix, campaignId));
74
+ parser.pushKey(campaignLockKey(prefix, campaignId));
75
+ parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
76
+ parser.pushKey(redirectorFieldsKey(prefix, campaignId, redirectorId));
77
+ parser.push(field);
78
+ parser.push(lockSecret);
79
+ },
80
+ transformReply: undefined,
81
+ },
82
+ delete_redirector: {
83
+ NUMBER_OF_KEYS: 5,
59
84
  parseCommand(parser, prefix, campaignId, redirectorId, lockSecret) {
60
85
  parser.pushKey(campaignKey(prefix, campaignId));
61
86
  parser.pushKey(campaignLockKey(prefix, campaignId));
62
87
  parser.pushKey(redirectorKey(prefix, campaignId, redirectorId));
88
+ parser.pushKey(redirectorFieldsKey(prefix, campaignId, redirectorId));
63
89
  parser.pushKey(redirectorIndexKey(prefix, campaignId));
64
90
  parser.push(lockSecret);
65
91
  },
66
- transformReply: undefined
67
- }
68
- }
92
+ transformReply: undefined,
93
+ },
94
+ },
69
95
  };
70
96
  //# sourceMappingURL=redirector.functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirector.functions.js","sourceRoot":"","sources":["../../../src/modules/redirector/redirector.functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirector.js","sourceRoot":"","sources":["../../../src/modules/redirector/redirector.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ export type RedirectorParams = Record<string, string>;
1
2
  export declare class RedirectorModel {
2
3
  readonly campaignId: string;
3
4
  readonly redirectorId: string;
@@ -8,5 +9,8 @@ export declare class RedirectorModel {
8
9
  }
9
10
  export declare class FullRedirectorModel extends RedirectorModel {
10
11
  readonly page: string;
11
- constructor(campaignId: string, redirectorId: string, page: string, lureCount: number, createdAt: Date);
12
+ readonly fields: string[];
13
+ constructor(campaignId: string, redirectorId: string, page: string, fields: string[], lureCount: number, createdAt: Date);
14
+ get isLoose(): boolean;
15
+ checkParams(params: RedirectorParams): boolean;
12
16
  }
@@ -15,9 +15,17 @@ export class RedirectorModel {
15
15
  }
16
16
  export class FullRedirectorModel extends RedirectorModel {
17
17
  page;
18
- constructor(campaignId, redirectorId, page, lureCount, createdAt) {
18
+ fields;
19
+ constructor(campaignId, redirectorId, page, fields, lureCount, createdAt) {
19
20
  super(campaignId, redirectorId, lureCount, createdAt);
20
21
  this.page = page;
22
+ this.fields = fields;
23
+ }
24
+ get isLoose() {
25
+ return this.fields.length === 0;
26
+ }
27
+ checkParams(params) {
28
+ return this.isLoose || this.fields.every((field) => params[field] != null);
21
29
  }
22
30
  }
23
- //# sourceMappingURL=redirector.js.map
31
+ //# sourceMappingURL=redirector.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirector.models.js","sourceRoot":"","sources":["../../../src/modules/redirector/redirector.models.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,eAAe;IAMf;IACA;IACA;IACA;IARX,MAAM,CAAC,SAAS,GAAG,CAA4B,KAAe,EAAc,EAAE;QAC5E,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,SAAe;QAHf,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC;;AAQN,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAI3C;IACA;IAJX,YACE,UAAkB,EAClB,YAAoB,EACX,IAAY,EACZ,MAAgB,EACzB,SAAiB,EACjB,SAAe;QAEf,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAL5C,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAU;IAK3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,WAAW,CAAC,MAAwB;QAClC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;IAC5E,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { JSONSchemaType, ValidatorSchemas } from '@famir/validator';
2
+ import { RedirectorParams } from './redirector.models.js';
3
+ export declare const redirectorPageSchema: JSONSchemaType<string>;
4
+ export declare const redirectorFieldSchema: JSONSchemaType<string>;
5
+ export declare const redirectorFieldsSchema: JSONSchemaType<string[]>;
6
+ export declare const redirectorParamsSchema: JSONSchemaType<RedirectorParams>;
7
+ export declare const redirectorSchemas: ValidatorSchemas;