@ductape/sdk 0.0.4-v59 → 0.0.4-v60

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 (251) hide show
  1. package/dist/agents/agents.service.d.ts +8 -2
  2. package/dist/agents/agents.service.js +5 -0
  3. package/dist/agents/agents.service.js.map +1 -1
  4. package/dist/agents/types/agents.types.d.ts +2 -0
  5. package/dist/agents/types/agents.types.js.map +1 -1
  6. package/dist/agents/vector-store-adapter.js +5 -5
  7. package/dist/agents/vector-store-adapter.js.map +1 -1
  8. package/dist/api/services/appApi.service.d.ts +3 -3
  9. package/dist/api/services/appApi.service.js.map +1 -1
  10. package/dist/api/services/productsApi.service.d.ts +1 -1
  11. package/dist/api/services/productsApi.service.js +20 -13
  12. package/dist/api/services/productsApi.service.js.map +1 -1
  13. package/dist/api/services/secretsApi.service.d.ts +12 -0
  14. package/dist/api/services/secretsApi.service.js +30 -2
  15. package/dist/api/services/secretsApi.service.js.map +1 -1
  16. package/dist/api/services/workspaceApi.service.d.ts +8 -0
  17. package/dist/api/services/workspaceApi.service.js +20 -0
  18. package/dist/api/services/workspaceApi.service.js.map +1 -1
  19. package/dist/api/urls.d.ts +2 -0
  20. package/dist/api/urls.js +10 -15
  21. package/dist/api/urls.js.map +1 -1
  22. package/dist/api/utils/auth.utils.d.ts +1 -3
  23. package/dist/api/utils/auth.utils.js.map +1 -1
  24. package/dist/apps/utils/oauth-manager.js +27 -3
  25. package/dist/apps/utils/oauth-manager.js.map +1 -1
  26. package/dist/brokers/brokers.service.d.ts +8 -0
  27. package/dist/brokers/brokers.service.js +50 -4
  28. package/dist/brokers/brokers.service.js.map +1 -1
  29. package/dist/brokers/types/index.d.ts +26 -0
  30. package/dist/brokers/utils/providers/kafka.service.d.ts +7 -0
  31. package/dist/brokers/utils/providers/kafka.service.js +102 -23
  32. package/dist/brokers/utils/providers/kafka.service.js.map +1 -1
  33. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +2 -1
  34. package/dist/brokers/utils/providers/rabbitmq.service.js +99 -15
  35. package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -1
  36. package/dist/database/adapters/cassandra.adapter.d.ts +1 -0
  37. package/dist/database/adapters/cassandra.adapter.js +100 -44
  38. package/dist/database/adapters/cassandra.adapter.js.map +1 -1
  39. package/dist/database/adapters/dynamodb.adapter.d.ts +1 -0
  40. package/dist/database/adapters/dynamodb.adapter.js +89 -20
  41. package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
  42. package/dist/database/adapters/mongodb.adapter.d.ts +1 -0
  43. package/dist/database/adapters/mongodb.adapter.js +123 -45
  44. package/dist/database/adapters/mongodb.adapter.js.map +1 -1
  45. package/dist/database/adapters/mysql.adapter.d.ts +1 -0
  46. package/dist/database/adapters/mysql.adapter.js +125 -48
  47. package/dist/database/adapters/mysql.adapter.js.map +1 -1
  48. package/dist/database/adapters/postgresql.adapter.d.ts +5 -0
  49. package/dist/database/adapters/postgresql.adapter.js +151 -50
  50. package/dist/database/adapters/postgresql.adapter.js.map +1 -1
  51. package/dist/database/databases.service.d.ts +15 -1
  52. package/dist/database/databases.service.js +143 -2
  53. package/dist/database/databases.service.js.map +1 -1
  54. package/dist/database/operators/aggregation-builder.d.ts +11 -8
  55. package/dist/database/operators/aggregation-builder.js +184 -89
  56. package/dist/database/operators/aggregation-builder.js.map +1 -1
  57. package/dist/database/operators/query-builder.d.ts +23 -19
  58. package/dist/database/operators/query-builder.js +77 -45
  59. package/dist/database/operators/query-builder.js.map +1 -1
  60. package/dist/database/types/aggregation.interface.d.ts +21 -15
  61. package/dist/database/types/query.interface.d.ts +27 -21
  62. package/dist/database/types/write.interface.d.ts +20 -12
  63. package/dist/graph/adapters/arangodb.adapter.js +61 -22
  64. package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
  65. package/dist/graph/adapters/memgraph.adapter.js +22 -16
  66. package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
  67. package/dist/graph/adapters/neo4j.adapter.js +51 -21
  68. package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
  69. package/dist/graph/adapters/neptune.adapter.js +32 -16
  70. package/dist/graph/adapters/neptune.adapter.js.map +1 -1
  71. package/dist/graph/graphs.service.d.ts +24 -2
  72. package/dist/graph/graphs.service.js +238 -28
  73. package/dist/graph/graphs.service.js.map +1 -1
  74. package/dist/graph/types/connection.interface.d.ts +8 -0
  75. package/dist/graph/types/query.interface.d.ts +21 -14
  76. package/dist/index.d.ts +367 -20
  77. package/dist/index.js +510 -48
  78. package/dist/index.js.map +1 -1
  79. package/dist/inputs/inputs.service.d.ts +1 -1
  80. package/dist/notifications/notifications.service.d.ts +7 -2
  81. package/dist/notifications/notifications.service.js +2 -0
  82. package/dist/notifications/notifications.service.js.map +1 -1
  83. package/dist/processor/services/processor.service.d.ts +5 -1
  84. package/dist/processor/services/processor.service.js +35 -2
  85. package/dist/processor/services/processor.service.js.map +1 -1
  86. package/dist/products/services/products.service.d.ts +76 -2
  87. package/dist/products/services/products.service.js +984 -27
  88. package/dist/products/services/products.service.js.map +1 -1
  89. package/dist/products/validators/joi-validators/create.productAgent.validator.js +52 -4
  90. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -1
  91. package/dist/products/validators/joi-validators/create.productGraph.validator.js +2 -0
  92. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
  93. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +1 -7
  94. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
  95. package/dist/products/validators/joi-validators/create.productVector.validator.js +4 -4
  96. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -1
  97. package/dist/products/validators/joi-validators/update.productGraph.validator.js +2 -0
  98. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
  99. package/dist/resilience/fallback.service.d.ts +4 -1
  100. package/dist/resilience/fallback.service.js +8 -10
  101. package/dist/resilience/fallback.service.js.map +1 -1
  102. package/dist/resilience/healthcheck.service.d.ts +6 -1
  103. package/dist/resilience/healthcheck.service.js +9 -0
  104. package/dist/resilience/healthcheck.service.js.map +1 -1
  105. package/dist/resilience/quota.service.d.ts +4 -1
  106. package/dist/resilience/quota.service.js +2 -0
  107. package/dist/resilience/quota.service.js.map +1 -1
  108. package/dist/resilience/resilience.service.d.ts +4 -1
  109. package/dist/resilience/resilience.service.js.map +1 -1
  110. package/dist/secrets/secrets.service.d.ts +11 -1
  111. package/dist/secrets/secrets.service.js +109 -10
  112. package/dist/secrets/secrets.service.js.map +1 -1
  113. package/dist/storage/storage.service.d.ts +4 -1
  114. package/dist/storage/storage.service.js +6 -1
  115. package/dist/storage/storage.service.js.map +1 -1
  116. package/dist/test/index.js +1 -3
  117. package/dist/test/index.js.map +1 -1
  118. package/dist/test/test.broker.kafka.d.ts +1 -0
  119. package/dist/test/test.broker.kafka.js +172 -0
  120. package/dist/test/test.broker.kafka.js.map +1 -0
  121. package/dist/test/test.broker.nats.d.ts +1 -0
  122. package/dist/test/test.broker.nats.js +193 -0
  123. package/dist/test/test.broker.nats.js.map +1 -0
  124. package/dist/test/test.broker.pubsub.d.ts +1 -0
  125. package/dist/test/test.broker.pubsub.js +171 -0
  126. package/dist/test/test.broker.pubsub.js.map +1 -0
  127. package/dist/test/test.broker.rabbitmq.d.ts +1 -0
  128. package/dist/test/test.broker.rabbitmq.js +164 -0
  129. package/dist/test/test.broker.rabbitmq.js.map +1 -0
  130. package/dist/test/test.broker.redis.d.ts +1 -0
  131. package/dist/test/test.broker.redis.js +168 -0
  132. package/dist/test/test.broker.redis.js.map +1 -0
  133. package/dist/test/test.broker.sqs.d.ts +1 -0
  134. package/dist/test/test.broker.sqs.js +158 -0
  135. package/dist/test/test.broker.sqs.js.map +1 -0
  136. package/dist/test/test.caches.d.ts +1 -0
  137. package/dist/test/test.caches.js +231 -0
  138. package/dist/test/test.caches.js.map +1 -0
  139. package/dist/test/test.database.dynamo.d.ts +1 -0
  140. package/dist/test/test.database.dynamo.js +265 -0
  141. package/dist/test/test.database.dynamo.js.map +1 -0
  142. package/dist/test/test.database.js +2 -2
  143. package/dist/test/test.database.js.map +1 -1
  144. package/dist/test/test.database.mongo.d.ts +1 -0
  145. package/dist/test/test.database.mongo.js +371 -0
  146. package/dist/test/test.database.mongo.js.map +1 -0
  147. package/dist/test/test.database.mysql.d.ts +1 -0
  148. package/dist/test/test.database.mysql.js +415 -0
  149. package/dist/test/test.database.mysql.js.map +1 -0
  150. package/dist/test/test.database.postgres.d.ts +1 -0
  151. package/dist/test/test.database.postgres.js +412 -0
  152. package/dist/test/test.database.postgres.js.map +1 -0
  153. package/dist/test/test.email.brevo.d.ts +1 -0
  154. package/dist/test/test.email.brevo.js +326 -0
  155. package/dist/test/test.email.brevo.js.map +1 -0
  156. package/dist/test/test.email.mailgun.d.ts +1 -0
  157. package/dist/test/test.email.mailgun.js +352 -0
  158. package/dist/test/test.email.mailgun.js.map +1 -0
  159. package/dist/test/test.email.postmark.d.ts +1 -0
  160. package/dist/test/test.email.postmark.js +316 -0
  161. package/dist/test/test.email.postmark.js.map +1 -0
  162. package/dist/test/test.email.sendgrid.d.ts +1 -0
  163. package/dist/test/test.email.sendgrid.js +365 -0
  164. package/dist/test/test.email.sendgrid.js.map +1 -0
  165. package/dist/test/test.email.smtp.d.ts +1 -0
  166. package/dist/test/test.email.smtp.js +323 -0
  167. package/dist/test/test.email.smtp.js.map +1 -0
  168. package/dist/test/test.graph.arangodb.d.ts +1 -0
  169. package/dist/test/test.graph.arangodb.js +358 -0
  170. package/dist/test/test.graph.arangodb.js.map +1 -0
  171. package/dist/test/test.graph.memgraph.d.ts +1 -0
  172. package/dist/test/test.graph.memgraph.js +320 -0
  173. package/dist/test/test.graph.memgraph.js.map +1 -0
  174. package/dist/test/test.graph.neo4j.d.ts +1 -0
  175. package/dist/test/test.graph.neo4j.js +218 -0
  176. package/dist/test/test.graph.neo4j.js.map +1 -0
  177. package/dist/test/test.graph.neptune.d.ts +1 -0
  178. package/dist/test/test.graph.neptune.js +331 -0
  179. package/dist/test/test.graph.neptune.js.map +1 -0
  180. package/dist/test/test.notifications.d.ts +1 -0
  181. package/dist/test/test.notifications.js +198 -0
  182. package/dist/test/test.notifications.js.map +1 -0
  183. package/dist/test/test.push.expo.d.ts +1 -0
  184. package/dist/test/test.push.expo.js +442 -0
  185. package/dist/test/test.push.expo.js.map +1 -0
  186. package/dist/test/test.push.firebase.d.ts +1 -0
  187. package/dist/test/test.push.firebase.js +409 -0
  188. package/dist/test/test.push.firebase.js.map +1 -0
  189. package/dist/test/test.session.d.ts +1 -0
  190. package/dist/test/test.session.js +299 -0
  191. package/dist/test/test.session.js.map +1 -0
  192. package/dist/test/test.sms.nexmo.d.ts +1 -0
  193. package/dist/test/test.sms.nexmo.js +278 -0
  194. package/dist/test/test.sms.nexmo.js.map +1 -0
  195. package/dist/test/test.sms.twilio.d.ts +1 -0
  196. package/dist/test/test.sms.twilio.js +275 -0
  197. package/dist/test/test.sms.twilio.js.map +1 -0
  198. package/dist/test/test.storage.js +169 -299
  199. package/dist/test/test.storage.js.map +1 -1
  200. package/dist/test/test.vector.pinecone.d.ts +1 -0
  201. package/dist/test/test.vector.pinecone.js +238 -0
  202. package/dist/test/test.vector.pinecone.js.map +1 -0
  203. package/dist/test/test.vector.qdrant.d.ts +1 -0
  204. package/dist/test/test.vector.qdrant.js +307 -0
  205. package/dist/test/test.vector.qdrant.js.map +1 -0
  206. package/dist/test/test.vector.weaviate.d.ts +1 -0
  207. package/dist/test/test.vector.weaviate.js +325 -0
  208. package/dist/test/test.vector.weaviate.js.map +1 -0
  209. package/dist/types/appBuilder.types.d.ts +6 -2
  210. package/dist/types/enums.d.ts +2 -0
  211. package/dist/types/enums.js +2 -0
  212. package/dist/types/enums.js.map +1 -1
  213. package/dist/types/index.types.d.ts +2 -4
  214. package/dist/types/index.types.js +0 -1
  215. package/dist/types/index.types.js.map +1 -1
  216. package/dist/types/processor.types.d.ts +18 -0
  217. package/dist/types/productsBuilder.types.d.ts +19 -15
  218. package/dist/types/productsBuilder.types.js.map +1 -1
  219. package/dist/types/requests.types.d.ts +2 -0
  220. package/dist/utils/index.js +23 -4
  221. package/dist/utils/index.js.map +1 -1
  222. package/dist/vector/adapters/base.adapter.d.ts +1 -1
  223. package/dist/vector/adapters/memory.adapter.d.ts +1 -1
  224. package/dist/vector/adapters/memory.adapter.js +1 -1
  225. package/dist/vector/adapters/memory.adapter.js.map +1 -1
  226. package/dist/vector/adapters/pinecone.adapter.d.ts +1 -1
  227. package/dist/vector/adapters/pinecone.adapter.js +1 -1
  228. package/dist/vector/adapters/pinecone.adapter.js.map +1 -1
  229. package/dist/vector/adapters/qdrant.adapter.d.ts +1 -1
  230. package/dist/vector/adapters/qdrant.adapter.js +1 -1
  231. package/dist/vector/adapters/qdrant.adapter.js.map +1 -1
  232. package/dist/vector/adapters/weaviate.adapter.d.ts +1 -1
  233. package/dist/vector/adapters/weaviate.adapter.js +1 -1
  234. package/dist/vector/adapters/weaviate.adapter.js.map +1 -1
  235. package/dist/vector/index.d.ts +2 -2
  236. package/dist/vector/index.js +2 -2
  237. package/dist/vector/utils/vector-error.js +0 -1
  238. package/dist/vector/utils/vector-error.js.map +1 -1
  239. package/dist/vector/vector-database.service.d.ts +9 -6
  240. package/dist/vector/vector-database.service.js +7 -6
  241. package/dist/vector/vector-database.service.js.map +1 -1
  242. package/dist/vector/vector.service.d.ts +3 -3
  243. package/dist/vector/vector.service.js +12 -9
  244. package/dist/vector/vector.service.js.map +1 -1
  245. package/dist/workflows/workflow-executor.d.ts +4 -1
  246. package/dist/workflows/workflow-executor.js +10 -2
  247. package/dist/workflows/workflow-executor.js.map +1 -1
  248. package/dist/workflows/workflows.service.d.ts +8 -2
  249. package/dist/workflows/workflows.service.js +66 -41
  250. package/dist/workflows/workflows.service.js.map +1 -1
  251. package/package.json +29 -4
@@ -5,46 +5,125 @@ const kafkajs_1 = require("kafkajs");
5
5
  class KafkaService {
6
6
  constructor(config) {
7
7
  this.config = config;
8
- this.kafka = new kafkajs_1.Kafka({
8
+ this.logPrefix = '[Kafka]';
9
+ console.log(`${this.logPrefix} Service initializing...`);
10
+ console.log(`${this.logPrefix} Client ID: ${this.config.clientId}`);
11
+ console.log(`${this.logPrefix} Brokers: ${this.config.brokers.join(', ')}`);
12
+ console.log(`${this.logPrefix} Group ID: ${this.config.groupId || 'default-group'}`);
13
+ console.log(`${this.logPrefix} SSL: ${this.config.ssl ? 'enabled' : 'disabled'}`);
14
+ console.log(`${this.logPrefix} SASL: ${this.config.sasl ? `enabled (${this.config.sasl.mechanism})` : 'disabled'}`);
15
+ const kafkaConfig = {
9
16
  clientId: this.config.clientId,
10
17
  brokers: this.config.brokers,
11
- });
18
+ };
19
+ // Enable SSL if configured
20
+ if (this.config.ssl) {
21
+ kafkaConfig.ssl = true;
22
+ console.log(`${this.logPrefix} SSL configuration applied`);
23
+ }
24
+ // Configure SASL authentication if provided
25
+ if (this.config.sasl) {
26
+ kafkaConfig.sasl = {
27
+ mechanism: this.config.sasl.mechanism,
28
+ username: this.config.sasl.username,
29
+ password: this.config.sasl.password,
30
+ };
31
+ console.log(`${this.logPrefix} SASL configuration applied (user: ${this.config.sasl.username})`);
32
+ }
33
+ this.kafka = new kafkajs_1.Kafka(kafkaConfig);
34
+ console.log(`${this.logPrefix} Service initialized successfully`);
12
35
  }
13
36
  async connect() {
14
- this.producer = this.kafka.producer();
15
- this.consumer = this.kafka.consumer({ groupId: this.config.groupId || 'default-group' });
16
- await this.producer.connect();
37
+ console.log(`${this.logPrefix} Establishing connection...`);
38
+ const startTime = Date.now();
39
+ try {
40
+ this.producer = this.kafka.producer();
41
+ this.consumer = this.kafka.consumer({ groupId: this.config.groupId || 'default-group' });
42
+ console.log(`${this.logPrefix} Connecting producer...`);
43
+ await this.producer.connect();
44
+ console.log(`${this.logPrefix} Producer connected successfully (${Date.now() - startTime}ms)`);
45
+ }
46
+ catch (error) {
47
+ console.error(`${this.logPrefix} Connection failed:`, error);
48
+ throw error;
49
+ }
17
50
  }
18
51
  async publish(topic, message) {
52
+ console.log(`${this.logPrefix} Publishing message to topic: ${topic}`);
53
+ const startTime = Date.now();
19
54
  if (!this.producer) {
55
+ console.log(`${this.logPrefix} No producer available, connecting...`);
20
56
  await this.connect();
21
57
  }
22
- await this.producer.send({
23
- topic,
24
- messages: [{ value: JSON.stringify(message) }],
25
- });
58
+ try {
59
+ const messageValue = JSON.stringify(message);
60
+ console.log(`${this.logPrefix} Sending message (${messageValue.length} bytes) to topic: ${topic}`);
61
+ await this.producer.send({
62
+ topic,
63
+ messages: [{ value: messageValue }],
64
+ });
65
+ console.log(`${this.logPrefix} Message published successfully to ${topic} (${Date.now() - startTime}ms)`);
66
+ }
67
+ catch (error) {
68
+ console.error(`${this.logPrefix} Failed to publish message to ${topic}:`, error);
69
+ throw error;
70
+ }
26
71
  }
27
72
  async subscribe(topic, callback) {
73
+ console.log(`${this.logPrefix} Subscribing to topic: ${topic}`);
74
+ const startTime = Date.now();
28
75
  if (!this.consumer) {
76
+ console.log(`${this.logPrefix} No consumer available, connecting...`);
29
77
  await this.connect();
30
78
  }
31
- await this.consumer.connect();
32
- await this.consumer.subscribe({ topic, fromBeginning: true });
33
- await this.consumer.run({
34
- eachMessage: async ({ message }) => {
35
- if (message.value) {
36
- const content = JSON.parse(message.value.toString());
37
- await callback(content);
38
- }
39
- },
40
- });
79
+ try {
80
+ console.log(`${this.logPrefix} Connecting consumer...`);
81
+ await this.consumer.connect();
82
+ console.log(`${this.logPrefix} Consumer connected, subscribing to topic: ${topic}`);
83
+ await this.consumer.subscribe({ topic, fromBeginning: true });
84
+ console.log(`${this.logPrefix} Subscribed to topic: ${topic}, starting consumer...`);
85
+ await this.consumer.run({
86
+ eachMessage: async ({ message, partition, topic: msgTopic }) => {
87
+ if (message.value) {
88
+ const messageStartTime = Date.now();
89
+ console.log(`${this.logPrefix} Received message from ${msgTopic}:${partition} (${message.value.length} bytes)`);
90
+ try {
91
+ const content = JSON.parse(message.value.toString());
92
+ console.log(`${this.logPrefix} Processing message from ${msgTopic}...`);
93
+ await callback(content);
94
+ console.log(`${this.logPrefix} Message processed successfully (${Date.now() - messageStartTime}ms)`);
95
+ }
96
+ catch (error) {
97
+ console.error(`${this.logPrefix} Error processing message from ${msgTopic}:`, error);
98
+ throw error;
99
+ }
100
+ }
101
+ },
102
+ });
103
+ console.log(`${this.logPrefix} Successfully subscribed to ${topic} (${Date.now() - startTime}ms)`);
104
+ }
105
+ catch (error) {
106
+ console.error(`${this.logPrefix} Failed to subscribe to ${topic}:`, error);
107
+ throw error;
108
+ }
41
109
  }
42
110
  async disconnect() {
43
- if (this.producer) {
44
- await this.producer.disconnect();
111
+ console.log(`${this.logPrefix} Disconnecting...`);
112
+ const startTime = Date.now();
113
+ try {
114
+ if (this.producer) {
115
+ console.log(`${this.logPrefix} Disconnecting producer...`);
116
+ await this.producer.disconnect();
117
+ }
118
+ if (this.consumer) {
119
+ console.log(`${this.logPrefix} Disconnecting consumer...`);
120
+ await this.consumer.disconnect();
121
+ }
122
+ console.log(`${this.logPrefix} Disconnected successfully (${Date.now() - startTime}ms)`);
45
123
  }
46
- if (this.consumer) {
47
- await this.consumer.disconnect();
124
+ catch (error) {
125
+ console.error(`${this.logPrefix} Error during disconnect:`, error);
126
+ throw error;
48
127
  }
49
128
  }
50
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kafka.service.js","sourceRoot":"","sources":["../../../../src/brokers/utils/providers/kafka.service.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AAGpD,MAAa,YAAY;IAKvB,YAAoB,MAAiE;QAAjE,WAAM,GAAN,MAAM,CAA2D;QACnF,IAAI,CAAC,KAAK,GAAG,IAAI,eAAK,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CACb,KAAa,EACb,QAA4C;QAE5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACrD,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAvDD,oCAuDC"}
1
+ {"version":3,"file":"kafka.service.js","sourceRoot":"","sources":["../../../../src/brokers/utils/providers/kafka.service.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@ export declare class RabbitMQService implements IMessageBrokerService {
3
3
  private config;
4
4
  private connection;
5
5
  private channel;
6
+ private readonly logPrefix;
6
7
  constructor(config: {
7
8
  url: string;
8
- queue: string;
9
9
  });
10
+ private maskUrl;
10
11
  connect(): Promise<void>;
11
12
  publish(topic: string, message: object): Promise<void>;
12
13
  subscribe(topic: string, callback: (message: object) => Promise<void>): Promise<void>;
@@ -38,29 +38,113 @@ const amqp = __importStar(require("amqplib"));
38
38
  class RabbitMQService {
39
39
  constructor(config) {
40
40
  this.config = config;
41
+ this.logPrefix = '[RabbitMQ]';
42
+ console.log(`${this.logPrefix} Service initialized with URL: ${this.maskUrl(config.url)}`);
43
+ }
44
+ maskUrl(url) {
45
+ try {
46
+ const parsed = new URL(url);
47
+ if (parsed.password) {
48
+ parsed.password = '***';
49
+ }
50
+ return parsed.toString();
51
+ }
52
+ catch (_a) {
53
+ return '***masked***';
54
+ }
41
55
  }
42
56
  async connect() {
43
- this.connection = await amqp.connect(this.config.url);
44
- this.channel = await this.connection.createChannel();
45
- await this.channel.assertQueue(this.config.queue);
57
+ if (!this.connection) {
58
+ console.log(`${this.logPrefix} Establishing connection...`);
59
+ const startTime = Date.now();
60
+ try {
61
+ this.connection = await amqp.connect(this.config.url);
62
+ this.channel = await this.connection.createChannel();
63
+ console.log(`${this.logPrefix} Connection established successfully (${Date.now() - startTime}ms)`);
64
+ }
65
+ catch (error) {
66
+ console.error(`${this.logPrefix} Connection failed:`, error);
67
+ throw error;
68
+ }
69
+ }
70
+ else {
71
+ console.log(`${this.logPrefix} Reusing existing connection`);
72
+ }
46
73
  }
47
74
  async publish(topic, message) {
48
- await this.connect();
49
- this.channel.sendToQueue(topic, Buffer.from(JSON.stringify(message)));
75
+ console.log(`${this.logPrefix} Publishing message to queue: ${topic}`);
76
+ const startTime = Date.now();
77
+ if (!this.channel) {
78
+ console.log(`${this.logPrefix} No channel available, connecting...`);
79
+ await this.connect();
80
+ }
81
+ try {
82
+ console.log(`${this.logPrefix} Asserting queue: ${topic} (durable: true)`);
83
+ await this.channel.assertQueue(topic, { durable: true });
84
+ const messageBuffer = Buffer.from(JSON.stringify(message));
85
+ console.log(`${this.logPrefix} Sending message (${messageBuffer.length} bytes) to queue: ${topic}`);
86
+ this.channel.sendToQueue(topic, messageBuffer, { persistent: true });
87
+ console.log(`${this.logPrefix} Message published successfully to ${topic} (${Date.now() - startTime}ms)`);
88
+ }
89
+ catch (error) {
90
+ console.error(`${this.logPrefix} Failed to publish message to ${topic}:`, error);
91
+ throw error;
92
+ }
50
93
  }
51
94
  async subscribe(topic, callback) {
52
- await this.connect();
53
- this.channel.consume(topic, async (msg) => {
54
- if (msg) {
55
- const content = JSON.parse(msg.content.toString());
56
- await callback(content);
57
- this.channel.ack(msg);
58
- }
59
- });
95
+ console.log(`${this.logPrefix} Subscribing to queue: ${topic}`);
96
+ const startTime = Date.now();
97
+ if (!this.channel) {
98
+ console.log(`${this.logPrefix} No channel available, connecting...`);
99
+ await this.connect();
100
+ }
101
+ try {
102
+ console.log(`${this.logPrefix} Asserting queue: ${topic} (durable: true)`);
103
+ await this.channel.assertQueue(topic, { durable: true });
104
+ console.log(`${this.logPrefix} Starting consumer for queue: ${topic}`);
105
+ this.channel.consume(topic, async (msg) => {
106
+ if (msg) {
107
+ const messageStartTime = Date.now();
108
+ console.log(`${this.logPrefix} Received message from ${topic} (${msg.content.length} bytes)`);
109
+ try {
110
+ const content = JSON.parse(msg.content.toString());
111
+ console.log(`${this.logPrefix} Processing message from ${topic}...`);
112
+ await callback(content);
113
+ this.channel.ack(msg);
114
+ console.log(`${this.logPrefix} Message processed and acknowledged (${Date.now() - messageStartTime}ms)`);
115
+ }
116
+ catch (error) {
117
+ console.error(`${this.logPrefix} Error processing message from ${topic}:`, error);
118
+ // Note: Message will not be acked, allowing redelivery
119
+ throw error;
120
+ }
121
+ }
122
+ });
123
+ console.log(`${this.logPrefix} Successfully subscribed to ${topic} (${Date.now() - startTime}ms)`);
124
+ }
125
+ catch (error) {
126
+ console.error(`${this.logPrefix} Failed to subscribe to ${topic}:`, error);
127
+ throw error;
128
+ }
60
129
  }
61
130
  async disconnect() {
62
- await this.channel.close();
63
- await this.connection.close();
131
+ console.log(`${this.logPrefix} Disconnecting...`);
132
+ const startTime = Date.now();
133
+ try {
134
+ if (this.channel) {
135
+ console.log(`${this.logPrefix} Closing channel...`);
136
+ await this.channel.close();
137
+ }
138
+ if (this.connection) {
139
+ console.log(`${this.logPrefix} Closing connection...`);
140
+ await this.connection.close();
141
+ }
142
+ console.log(`${this.logPrefix} Disconnected successfully (${Date.now() - startTime}ms)`);
143
+ }
144
+ catch (error) {
145
+ console.error(`${this.logPrefix} Error during disconnect:`, error);
146
+ throw error;
147
+ }
64
148
  }
65
149
  }
66
150
  exports.RabbitMQService = RabbitMQService;
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.service.js","sourceRoot":"","sources":["../../../../src/brokers/utils/providers/rabbitmq.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAgC;AAGhC,MAAa,eAAe;IAI1B,YAAoB,MAAsC;QAAtC,WAAM,GAAN,MAAM,CAAgC;IAAG,CAAC;IAE9D,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe;QAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CACb,KAAa,EACb,QAA4C;QAE5C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnD,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF;AAnCD,0CAmCC"}
1
+ {"version":3,"file":"rabbitmq.service.js","sourceRoot":"","sources":["../../../../src/brokers/utils/providers/rabbitmq.service.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,7 @@ export declare class CassandraAdapter extends BaseAdapter {
65
65
  escapeValue(value: any): string;
66
66
  /**
67
67
  * Check if value is an update operator object
68
+ * Supports both lowercase (new) and uppercase (legacy) operators
68
69
  */
69
70
  private isUpdateOperator;
70
71
  getParameterPlaceholder(index: number): string;
@@ -64,15 +64,28 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
64
64
  }
65
65
  // ==================== CONNECTION METHODS ====================
66
66
  async connect(options) {
67
+ console.log(`[CassandraAdapter] connect() called`);
68
+ console.log(`[CassandraAdapter] Options:`, JSON.stringify(Object.assign(Object.assign({}, options), { connectionUrl: '***REDACTED***' }), null, 2));
67
69
  try {
70
+ console.log(`[CassandraAdapter] Importing 'cassandra-driver' library...`);
68
71
  // Dynamic import of cassandra-driver
69
72
  const cassandra = await Promise.resolve().then(() => __importStar(require('cassandra-driver')));
73
+ console.log(`[CassandraAdapter] 'cassandra-driver' library imported successfully`);
70
74
  this.connectionUrl = options.connectionUrl;
75
+ console.log(`[CassandraAdapter] Connection URL stored`);
71
76
  // Parse connection URL: cassandra://host1,host2:port/keyspace
77
+ console.log(`[CassandraAdapter] Parsing connection URL...`);
72
78
  const url = new URL(options.connectionUrl);
73
79
  const hosts = url.hostname.split(',');
74
80
  const port = parseInt(url.port) || 9042;
75
81
  this.keyspace = url.pathname.slice(1) || 'system';
82
+ console.log(`[CassandraAdapter] Connection config:`, {
83
+ hosts,
84
+ port,
85
+ keyspace: this.keyspace,
86
+ hasUsername: !!url.username,
87
+ hasPassword: !!url.password,
88
+ });
76
89
  const clientOptions = {
77
90
  contactPoints: hosts,
78
91
  localDataCenter: 'datacenter1', // Default, can be overridden
@@ -85,25 +98,38 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
85
98
  username: url.username,
86
99
  password: url.password,
87
100
  };
101
+ console.log(`[CassandraAdapter] Using authentication`);
88
102
  }
89
103
  // Parse query parameters for additional options
90
104
  const params = new URLSearchParams(url.search);
91
105
  if (params.get('datacenter')) {
92
106
  clientOptions.localDataCenter = params.get('datacenter');
107
+ console.log(`[CassandraAdapter] Using datacenter: ${clientOptions.localDataCenter}`);
93
108
  }
109
+ console.log(`[CassandraAdapter] Creating Cassandra client...`);
94
110
  this.cassandraClient = new cassandra.Client(clientOptions);
111
+ console.log(`[CassandraAdapter] Client created, connecting...`);
95
112
  await this.cassandraClient.connect();
113
+ console.log(`[CassandraAdapter] Connected successfully`);
96
114
  // Get cluster information
115
+ console.log(`[CassandraAdapter] Getting cluster information...`);
97
116
  const metadata = this.cassandraClient.metadata;
98
117
  const version = await this.getClusterVersion();
118
+ console.log(`[CassandraAdapter] Cluster version: ${version}`);
99
119
  this.client = this.cassandraClient;
100
120
  this.connected = true;
121
+ console.log(`[CassandraAdapter] Connection marked as connected`);
101
122
  return {
102
123
  connected: true,
103
124
  version: `Cassandra ${version}`,
104
125
  };
105
126
  }
106
127
  catch (error) {
128
+ console.error(`[CassandraAdapter] Connection failed with error:`, error);
129
+ console.error(`[CassandraAdapter] Error type:`, error.constructor.name);
130
+ console.error(`[CassandraAdapter] Error message:`, error.message);
131
+ console.error(`[CassandraAdapter] Error code:`, error.code);
132
+ console.error(`[CassandraAdapter] Full error:`, JSON.stringify(error, null, 2));
107
133
  throw database_error_1.DatabaseError.connectionError(`Failed to connect to Cassandra: ${error.message}`, error);
108
134
  }
109
135
  }
@@ -224,6 +250,7 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
224
250
  }
225
251
  }
226
252
  async update(options) {
253
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
227
254
  this.ensureConnected();
228
255
  try {
229
256
  const setClauses = [];
@@ -231,51 +258,54 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
231
258
  // Build SET clause
232
259
  for (const [key, value] of Object.entries(options.data)) {
233
260
  if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
234
- // Handle update operators
235
- if ('$INC' in value) {
261
+ // Handle update operators - support both lowercase (new) and uppercase (legacy)
262
+ if ('$inc' in value || '$INC' in value) {
236
263
  // Cassandra supports counter increment
237
264
  setClauses.push(`${key} = ${key} + ?`);
238
- values.push(value.$INC);
265
+ values.push((_a = value.$inc) !== null && _a !== void 0 ? _a : value.$INC);
239
266
  }
240
- else if ('$DEC' in value) {
267
+ else if ('$dec' in value || '$DEC' in value) {
241
268
  // Cassandra supports counter decrement
242
269
  setClauses.push(`${key} = ${key} - ?`);
243
- values.push(value.$DEC);
270
+ values.push((_b = value.$dec) !== null && _b !== void 0 ? _b : value.$DEC);
244
271
  }
245
- else if ('$SET' in value) {
272
+ else if ('$set' in value || '$SET' in value) {
246
273
  setClauses.push(`${key} = ?`);
247
- values.push(value.$SET);
274
+ values.push((_c = value.$set) !== null && _c !== void 0 ? _c : value.$SET);
248
275
  }
249
- else if ('$UNSET' in value && value.$UNSET) {
276
+ else if (('$unset' in value && value.$unset) || ('$UNSET' in value && value.$UNSET)) {
250
277
  // Cassandra uses DELETE for removing columns, or set to null
251
278
  setClauses.push(`${key} = null`);
252
279
  }
253
- else if ('$PUSH' in value) {
280
+ else if ('$push' in value || '$PUSH' in value) {
254
281
  // Cassandra list append
255
282
  setClauses.push(`${key} = ${key} + ?`);
256
- values.push([value.$PUSH]);
283
+ values.push([(_d = value.$push) !== null && _d !== void 0 ? _d : value.$PUSH]);
257
284
  }
258
- else if ('$PULL' in value) {
285
+ else if ('$pull' in value || '$PULL' in value) {
259
286
  // Cassandra list remove
260
287
  setClauses.push(`${key} = ${key} - ?`);
261
- values.push([value.$PULL]);
288
+ values.push([(_e = value.$pull) !== null && _e !== void 0 ? _e : value.$PULL]);
262
289
  }
263
- else if ('$ADDTOSET' in value) {
290
+ else if ('$addToSet' in value || '$ADDTOSET' in value) {
264
291
  // Cassandra set add
265
292
  setClauses.push(`${key} = ${key} + ?`);
266
- values.push(new Set([value.$ADDTOSET]));
293
+ values.push(new Set([(_f = value.$addToSet) !== null && _f !== void 0 ? _f : value.$ADDTOSET]));
267
294
  }
268
- else if ('$MUL' in value) {
295
+ else if ('$mul' in value || '$MUL' in value) {
269
296
  // Cassandra doesn't support multiply natively - log warning
270
- console.warn(`Cassandra does not support $MUL operator natively for column ${key}`);
297
+ console.warn(`Cassandra does not support $mul operator natively for column ${key}`);
271
298
  setClauses.push(`${key} = ?`);
272
- values.push(value.$MUL); // Just set the multiplier value as fallback
299
+ values.push((_g = value.$mul) !== null && _g !== void 0 ? _g : value.$MUL); // Just set the multiplier value as fallback
273
300
  }
274
- else if ('$MIN' in value || '$MAX' in value) {
301
+ else if ('$min' in value || '$MIN' in value || '$max' in value || '$MAX' in value) {
275
302
  // Cassandra doesn't support min/max natively - log warning
276
- console.warn(`Cassandra does not support $MIN/$MAX operator natively for column ${key}`);
303
+ console.warn(`Cassandra does not support $min/$max operator natively for column ${key}`);
277
304
  setClauses.push(`${key} = ?`);
278
- values.push(value.$MIN || value.$MAX); // Just set the value as fallback
305
+ values.push((_k = (_j = (_h = value.$min) !== null && _h !== void 0 ? _h : value.$MIN) !== null && _j !== void 0 ? _j : value.$max) !== null && _k !== void 0 ? _k : value.$MAX); // Just set the value as fallback
306
+ }
307
+ else if ('$currentDate' in value || '$CURRENTDATE' in value) {
308
+ setClauses.push(`${key} = toTimestamp(now())`);
279
309
  }
280
310
  }
281
311
  else {
@@ -825,11 +855,17 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
825
855
  }
826
856
  /**
827
857
  * Check if value is an update operator object
858
+ * Supports both lowercase (new) and uppercase (legacy) operators
828
859
  */
829
860
  isUpdateOperator(value) {
830
861
  if (!value || typeof value !== 'object')
831
862
  return false;
832
- const operators = ['$INC', '$DEC', '$MUL', '$MIN', '$MAX', '$SET', '$UNSET', '$PUSH', '$PULL', '$ADDTOSET'];
863
+ // Support both lowercase (Mongoose style) and uppercase (legacy) operators
864
+ const operators = [
865
+ '$inc', '$INC', '$dec', '$DEC', '$mul', '$MUL', '$min', '$MIN', '$max', '$MAX',
866
+ '$set', '$SET', '$unset', '$UNSET', '$push', '$PUSH', '$pull', '$PULL',
867
+ '$addToSet', '$ADDTOSET', '$currentDate', '$CURRENTDATE'
868
+ ];
833
869
  return operators.some(op => op in value);
834
870
  }
835
871
  getParameterPlaceholder(index) {
@@ -917,17 +953,25 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
917
953
  const clauses = [];
918
954
  const params = [];
919
955
  for (const [key, value] of Object.entries(where)) {
920
- if (key === '$AND') {
921
- const andResult = this.buildWhereClause(value);
922
- clauses.push(`(${andResult.whereClause})`);
923
- params.push(...andResult.whereParams);
956
+ // Normalize key to lowercase for logical operators (support both cases for backwards compatibility)
957
+ const normalizedKey = key.toLowerCase();
958
+ if (normalizedKey === '$and') {
959
+ const conditions = Array.isArray(value) ? value : [value];
960
+ const andClauses = [];
961
+ for (const cond of conditions) {
962
+ const andResult = this.buildWhereClause(cond);
963
+ andClauses.push(andResult.whereClause);
964
+ params.push(...andResult.whereParams);
965
+ }
966
+ clauses.push(`(${andClauses.join(' AND ')})`);
924
967
  }
925
- else if (key === '$OR') {
968
+ else if (normalizedKey === '$or') {
926
969
  // Note: Cassandra has limited OR support - only within the same partition key
927
970
  // This will generate the OR clause but may fail at runtime if not on partition key
971
+ const conditions = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
928
972
  const orClauses = [];
929
- for (const [orKey, orValue] of Object.entries(value)) {
930
- const orResult = this.buildWhereClause({ [orKey]: orValue });
973
+ for (const cond of conditions) {
974
+ const orResult = this.buildWhereClause(cond);
931
975
  orClauses.push(orResult.whereClause);
932
976
  params.push(...orResult.whereParams);
933
977
  }
@@ -936,68 +980,80 @@ class CassandraAdapter extends base_adapter_1.BaseAdapter {
936
980
  else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
937
981
  for (const [op, opValue] of Object.entries(value)) {
938
982
  const escapedKey = this.escapeIdentifier(key);
939
- switch (op) {
940
- case '$EQ':
983
+ // Normalize operator to lowercase (support both cases for backwards compatibility)
984
+ const normalizedOp = op.toLowerCase();
985
+ switch (normalizedOp) {
986
+ case '$eq':
941
987
  clauses.push(`${escapedKey} = ?`);
942
988
  params.push(opValue);
943
989
  break;
944
- case '$NE':
945
- case '$NOT':
990
+ case '$ne':
946
991
  clauses.push(`${escapedKey} != ?`);
947
992
  params.push(opValue);
948
993
  break;
949
- case '$GT':
994
+ case '$gt':
950
995
  clauses.push(`${escapedKey} > ?`);
951
996
  params.push(opValue);
952
997
  break;
953
- case '$GTE':
998
+ case '$gte':
954
999
  clauses.push(`${escapedKey} >= ?`);
955
1000
  params.push(opValue);
956
1001
  break;
957
- case '$LT':
1002
+ case '$lt':
958
1003
  clauses.push(`${escapedKey} < ?`);
959
1004
  params.push(opValue);
960
1005
  break;
961
- case '$LTE':
1006
+ case '$lte':
962
1007
  clauses.push(`${escapedKey} <= ?`);
963
1008
  params.push(opValue);
964
1009
  break;
965
- case '$IN':
1010
+ case '$in':
966
1011
  clauses.push(`${escapedKey} IN ?`);
967
1012
  params.push(opValue);
968
1013
  break;
969
- case '$NOT_IN':
1014
+ case '$nin':
1015
+ case '$not_in':
970
1016
  // Cassandra doesn't support NOT IN or multiple != conditions in WHERE clause
971
1017
  // Throw an explicit error to prevent silent failures
972
- throw new database_error_1.DatabaseError(`$NOT_IN operator is not supported in Cassandra. ` +
1018
+ throw new database_error_1.DatabaseError(`$nin operator is not supported in Cassandra. ` +
973
1019
  `Cassandra does not allow multiple inequality conditions on the same column. ` +
974
1020
  `Consider filtering results client-side or restructuring your query.`, enums_1.DatabaseErrorType.QUERY_ERROR);
975
- case '$LIKE':
1021
+ case '$like':
976
1022
  // Cassandra uses LIKE with SASI indexes or CONTAINS for collections
977
1023
  clauses.push(`${escapedKey} LIKE ?`);
978
1024
  params.push(opValue);
979
1025
  break;
980
- case '$IS_NULL':
1026
+ case '$isnull':
1027
+ case '$is_null':
981
1028
  // Cassandra doesn't have IS NULL syntax, use = null
982
1029
  if (opValue) {
983
1030
  clauses.push(`${escapedKey} = null`);
984
1031
  }
985
1032
  break;
986
- case '$IS_NOT_NULL':
1033
+ case '$isnotnull':
1034
+ case '$is_not_null':
987
1035
  // Cassandra doesn't have IS NOT NULL, use != null
988
1036
  if (opValue) {
989
1037
  clauses.push(`${escapedKey} != null`);
990
1038
  }
991
1039
  break;
992
- case '$CONTAINS':
1040
+ case '$contains':
993
1041
  clauses.push(`${escapedKey} CONTAINS ?`);
994
1042
  params.push(opValue);
995
1043
  break;
996
- case '$CONTAINS_KEY':
1044
+ case '$contains_key':
997
1045
  // For map types in Cassandra
998
1046
  clauses.push(`${escapedKey} CONTAINS KEY ?`);
999
1047
  params.push(opValue);
1000
1048
  break;
1049
+ case '$exists':
1050
+ if (opValue) {
1051
+ clauses.push(`${escapedKey} != null`);
1052
+ }
1053
+ else {
1054
+ clauses.push(`${escapedKey} = null`);
1055
+ }
1056
+ break;
1001
1057
  }
1002
1058
  }
1003
1059
  }