@ductape/sdk 0.0.4-v51 → 0.0.4-v53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agents/agent-context.d.ts +98 -0
- package/dist/agents/agent-context.js +588 -0
- package/dist/agents/agent-context.js.map +1 -0
- package/dist/agents/agent-executor.d.ts +180 -0
- package/dist/agents/agent-executor.js +715 -0
- package/dist/agents/agent-executor.js.map +1 -0
- package/dist/agents/agents.service.d.ts +304 -0
- package/dist/agents/agents.service.js +1244 -0
- package/dist/agents/agents.service.js.map +1 -0
- package/dist/agents/index.d.ts +55 -0
- package/dist/agents/index.js +110 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/memory-manager.d.ts +182 -0
- package/dist/agents/memory-manager.js +383 -0
- package/dist/agents/memory-manager.js.map +1 -0
- package/dist/agents/tool-registry.d.ts +141 -0
- package/dist/agents/tool-registry.js +355 -0
- package/dist/agents/tool-registry.js.map +1 -0
- package/dist/agents/types/agents.types.d.ts +1225 -0
- package/dist/agents/types/agents.types.js +12 -0
- package/dist/agents/types/agents.types.js.map +1 -0
- package/dist/agents/types/index.d.ts +6 -0
- package/dist/agents/types/index.js +23 -0
- package/dist/agents/types/index.js.map +1 -0
- package/dist/agents/vector-store-adapter.d.ts +108 -0
- package/dist/agents/vector-store-adapter.js +213 -0
- package/dist/agents/vector-store-adapter.js.map +1 -0
- package/dist/api/services/appApi.service.js +4 -5
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/processorApi.service.d.ts +322 -0
- package/dist/api/services/processorApi.service.js +252 -0
- package/dist/api/services/processorApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +69 -1
- package/dist/api/services/productsApi.service.js +67 -31
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/resilienceApi.service.d.ts +106 -0
- package/dist/api/services/resilienceApi.service.js +224 -0
- package/dist/api/services/resilienceApi.service.js.map +1 -0
- package/dist/api/services/secretsApi.service.d.ts +38 -0
- package/dist/api/services/secretsApi.service.js +96 -0
- package/dist/api/services/secretsApi.service.js.map +1 -0
- package/dist/api/services/userApi.service.js +0 -1
- package/dist/api/services/userApi.service.js.map +1 -1
- package/dist/api/services/workflowApi.service.d.ts +199 -0
- package/dist/api/services/workflowApi.service.js +183 -0
- package/dist/api/services/workflowApi.service.js.map +1 -0
- package/dist/api/services/workspaceApi.service.js +0 -1
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +57 -0
- package/dist/api/urls.js +68 -1
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/cache.utils.js +4 -10
- package/dist/api/utils/cache.utils.js.map +1 -1
- package/dist/apps/services/app.service.d.ts +0 -10
- package/dist/apps/services/app.service.js +74 -30
- package/dist/apps/services/app.service.js.map +1 -1
- package/dist/apps/utils/auth-context-manager.d.ts +137 -0
- package/dist/apps/utils/auth-context-manager.js +248 -0
- package/dist/apps/utils/auth-context-manager.js.map +1 -0
- package/dist/apps/utils/credential-manager.d.ts +128 -0
- package/dist/apps/utils/credential-manager.js +199 -0
- package/dist/apps/utils/credential-manager.js.map +1 -0
- package/dist/apps/utils/index.d.ts +10 -0
- package/dist/apps/utils/index.js +54 -0
- package/dist/apps/utils/index.js.map +1 -0
- package/dist/apps/utils/input-helpers.d.ts +67 -0
- package/dist/apps/utils/input-helpers.js +185 -0
- package/dist/apps/utils/input-helpers.js.map +1 -0
- package/dist/apps/utils/input-resolver.d.ts +165 -0
- package/dist/apps/utils/input-resolver.js +477 -0
- package/dist/apps/utils/input-resolver.js.map +1 -0
- package/dist/apps/utils/oauth-manager.d.ts +196 -0
- package/dist/apps/utils/oauth-manager.js +405 -0
- package/dist/apps/utils/oauth-manager.js.map +1 -0
- package/dist/apps/validators/joi-validators/create.appWebhook.validator.d.ts +2 -1
- package/dist/apps/validators/joi-validators/create.appWebhook.validator.js +15 -2
- package/dist/apps/validators/joi-validators/create.appWebhook.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.appWebhook.validator.d.ts +2 -1
- package/dist/apps/validators/joi-validators/update.appWebhook.validator.js +14 -2
- package/dist/apps/validators/joi-validators/update.appWebhook.validator.js.map +1 -1
- package/dist/bin.d.ts +26 -0
- package/dist/bin.js +28 -0
- package/dist/bin.js.map +1 -0
- package/dist/brokers/brokers.service.d.ts +257 -0
- package/dist/brokers/brokers.service.js +604 -0
- package/dist/brokers/brokers.service.js.map +1 -0
- package/dist/brokers/index.d.ts +46 -0
- package/dist/brokers/index.js +83 -0
- package/dist/brokers/index.js.map +1 -0
- package/dist/brokers/types/index.d.ts +288 -0
- package/dist/brokers/types/index.js +8 -0
- package/dist/brokers/types/index.js.map +1 -0
- package/dist/brokers/utils/broker.util.d.ts +33 -0
- package/dist/brokers/utils/broker.util.js +125 -0
- package/dist/brokers/utils/broker.util.js.map +1 -0
- package/dist/brokers/utils/providers/aws-sqs.service.d.ts +16 -0
- package/dist/brokers/utils/providers/aws-sqs.service.js +71 -0
- package/dist/brokers/utils/providers/aws-sqs.service.js.map +1 -0
- package/dist/brokers/utils/providers/google-pubsub.service.d.ts +16 -0
- package/dist/brokers/utils/providers/google-pubsub.service.js +43 -0
- package/dist/brokers/utils/providers/google-pubsub.service.js.map +1 -0
- package/dist/brokers/utils/providers/index.d.ts +6 -0
- package/dist/brokers/utils/providers/index.js +16 -0
- package/dist/brokers/utils/providers/index.js.map +1 -0
- package/dist/brokers/utils/providers/kafka.service.d.ts +16 -0
- package/dist/brokers/utils/providers/kafka.service.js +52 -0
- package/dist/brokers/utils/providers/kafka.service.js.map +1 -0
- package/dist/brokers/utils/providers/nats.service.d.ts +18 -0
- package/dist/brokers/utils/providers/nats.service.js +63 -0
- package/dist/brokers/utils/providers/nats.service.js.map +1 -0
- package/dist/brokers/utils/providers/rabbitmq.service.d.ts +14 -0
- package/dist/brokers/utils/providers/rabbitmq.service.js +67 -0
- package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -0
- package/dist/brokers/utils/providers/redis.service.d.ts +18 -0
- package/dist/brokers/utils/providers/redis.service.js +93 -0
- package/dist/brokers/utils/providers/redis.service.js.map +1 -0
- package/dist/cache/cache.manager.d.ts +159 -0
- package/dist/cache/cache.manager.js +265 -0
- package/dist/cache/cache.manager.js.map +1 -0
- package/dist/cache/cache.service.d.ts +186 -0
- package/dist/cache/cache.service.js +437 -0
- package/dist/cache/cache.service.js.map +1 -0
- package/dist/cache/index.d.ts +52 -0
- package/dist/cache/index.js +79 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/types/index.d.ts +106 -0
- package/dist/cache/types/index.js +6 -0
- package/dist/cache/types/index.js.map +1 -0
- package/dist/database/actions/action-manager.d.ts +170 -0
- package/dist/database/actions/action-manager.js +465 -0
- package/dist/database/actions/action-manager.js.map +1 -0
- package/dist/database/actions/index.d.ts +6 -0
- package/dist/database/actions/index.js +13 -0
- package/dist/database/actions/index.js.map +1 -0
- package/dist/database/adapters/adapter.factory.d.ts +62 -0
- package/dist/database/adapters/adapter.factory.js +97 -0
- package/dist/database/adapters/adapter.factory.js.map +1 -0
- package/dist/database/adapters/base.adapter.d.ts +307 -90
- package/dist/database/adapters/base.adapter.js +139 -20
- package/dist/database/adapters/base.adapter.js.map +1 -1
- package/dist/database/adapters/cassandra.adapter.d.ts +90 -0
- package/dist/database/adapters/cassandra.adapter.js +1019 -0
- package/dist/database/adapters/cassandra.adapter.js.map +1 -0
- package/dist/database/adapters/dynamodb.adapter.d.ts +94 -77
- package/dist/database/adapters/dynamodb.adapter.js +1162 -1305
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
- package/dist/database/adapters/index.d.ts +11 -0
- package/dist/database/adapters/index.js +27 -0
- package/dist/database/adapters/index.js.map +1 -0
- package/dist/database/adapters/mariadb.adapter.d.ts +100 -0
- package/dist/database/adapters/mariadb.adapter.js +247 -0
- package/dist/database/adapters/mariadb.adapter.js.map +1 -0
- package/dist/database/adapters/mongodb.adapter.d.ts +105 -57
- package/dist/database/adapters/mongodb.adapter.js +941 -838
- package/dist/database/adapters/mongodb.adapter.js.map +1 -1
- package/dist/database/adapters/mysql.adapter.d.ts +76 -138
- package/dist/database/adapters/mysql.adapter.js +990 -1246
- package/dist/database/adapters/mysql.adapter.js.map +1 -1
- package/dist/database/adapters/postgresql.adapter.d.ts +75 -139
- package/dist/database/adapters/postgresql.adapter.js +1076 -1346
- package/dist/database/adapters/postgresql.adapter.js.map +1 -1
- package/dist/database/databases.service.d.ts +1374 -0
- package/dist/database/databases.service.js +2680 -0
- package/dist/database/databases.service.js.map +1 -0
- package/dist/database/index.d.ts +41 -13
- package/dist/database/index.js +97 -86
- package/dist/database/index.js.map +1 -1
- package/dist/database/migrations/index.d.ts +6 -0
- package/dist/database/migrations/index.js +12 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/migrations/migration-engine.d.ts +132 -0
- package/dist/database/migrations/migration-engine.js +1356 -0
- package/dist/database/migrations/migration-engine.js.map +1 -0
- package/dist/database/operators/aggregation-builder.d.ts +64 -0
- package/dist/database/operators/aggregation-builder.js +746 -0
- package/dist/database/operators/aggregation-builder.js.map +1 -0
- package/dist/database/operators/index.d.ts +7 -0
- package/dist/database/operators/index.js +15 -0
- package/dist/database/operators/index.js.map +1 -0
- package/dist/database/operators/query-builder.d.ts +55 -0
- package/dist/database/operators/query-builder.js +365 -0
- package/dist/database/operators/query-builder.js.map +1 -0
- package/dist/database/presave/decrypt.d.ts +25 -0
- package/dist/database/presave/decrypt.js +146 -0
- package/dist/database/presave/decrypt.js.map +1 -0
- package/dist/database/presave/index.d.ts +9 -0
- package/dist/database/presave/index.js +18 -0
- package/dist/database/presave/index.js.map +1 -0
- package/dist/database/presave/presave-processor.d.ts +148 -0
- package/dist/database/presave/presave-processor.js +702 -0
- package/dist/database/presave/presave-processor.js.map +1 -0
- package/dist/database/schema/index.d.ts +7 -0
- package/dist/database/schema/index.js +13 -0
- package/dist/database/schema/index.js.map +1 -0
- package/dist/database/schema/schema-manager.d.ts +258 -0
- package/dist/database/schema/schema-manager.js +637 -0
- package/dist/database/schema/schema-manager.js.map +1 -0
- package/dist/database/transactions/index.d.ts +6 -0
- package/dist/database/transactions/index.js +13 -0
- package/dist/database/transactions/index.js.map +1 -0
- package/dist/database/transactions/transaction-manager.d.ts +113 -0
- package/dist/database/transactions/transaction-manager.js +344 -0
- package/dist/database/transactions/transaction-manager.js.map +1 -0
- package/dist/database/triggers/index.d.ts +7 -0
- package/dist/database/triggers/index.js +14 -0
- package/dist/database/triggers/index.js.map +1 -0
- package/dist/database/triggers/trigger-processor.d.ts +239 -0
- package/dist/database/triggers/trigger-processor.js +1034 -0
- package/dist/database/triggers/trigger-processor.js.map +1 -0
- package/dist/database/types/action.interface.d.ts +148 -0
- package/dist/database/types/action.interface.js +6 -0
- package/dist/database/types/action.interface.js.map +1 -0
- package/dist/database/types/aggregation.interface.d.ts +179 -0
- package/dist/database/types/aggregation.interface.js +6 -0
- package/dist/database/types/aggregation.interface.js.map +1 -0
- package/dist/database/types/connection.interface.d.ts +137 -0
- package/dist/database/types/connection.interface.js +6 -0
- package/dist/database/types/connection.interface.js.map +1 -0
- package/dist/database/types/enums.d.ts +195 -0
- package/dist/database/types/enums.js +244 -0
- package/dist/database/types/enums.js.map +1 -0
- package/dist/database/types/index.d.ts +12 -10
- package/dist/database/types/index.js +26 -32
- package/dist/database/types/index.js.map +1 -1
- package/dist/database/types/migration.interface.d.ts +686 -0
- package/dist/database/types/migration.interface.js +9 -0
- package/dist/database/types/migration.interface.js.map +1 -0
- package/dist/database/types/presave.interface.d.ts +292 -0
- package/dist/database/types/presave.interface.js +60 -0
- package/dist/database/types/presave.interface.js.map +1 -0
- package/dist/database/types/query.interface.d.ts +199 -0
- package/dist/database/types/query.interface.js +6 -0
- package/dist/database/types/query.interface.js.map +1 -0
- package/dist/database/types/schema.interface.d.ts +398 -0
- package/dist/database/types/schema.interface.js +6 -0
- package/dist/database/types/schema.interface.js.map +1 -0
- package/dist/database/types/transaction.interface.d.ts +84 -0
- package/dist/database/types/transaction.interface.js +6 -0
- package/dist/database/types/transaction.interface.js.map +1 -0
- package/dist/database/types/trigger.interface.d.ts +612 -0
- package/dist/database/types/trigger.interface.js +121 -0
- package/dist/database/types/trigger.interface.js.map +1 -0
- package/dist/database/types/write.interface.d.ts +208 -0
- package/dist/database/types/write.interface.js +6 -0
- package/dist/database/types/write.interface.js.map +1 -0
- package/dist/database/utils/database-error.d.ts +96 -0
- package/dist/database/utils/database-error.js +221 -0
- package/dist/database/utils/database-error.js.map +1 -0
- package/dist/database/utils/index.d.ts +6 -0
- package/dist/database/utils/index.js +11 -0
- package/dist/database/utils/index.js.map +1 -0
- package/dist/graph/adapters/adapter.factory.d.ts +47 -0
- package/dist/graph/adapters/adapter.factory.js +77 -0
- package/dist/graph/adapters/adapter.factory.js.map +1 -0
- package/dist/graph/adapters/arangodb.adapter.d.ts +78 -72
- package/dist/graph/adapters/arangodb.adapter.js +1310 -1220
- package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
- package/dist/graph/adapters/base.adapter.d.ts +135 -118
- package/dist/graph/adapters/base.adapter.js +46 -20
- package/dist/graph/adapters/base.adapter.js.map +1 -1
- package/dist/graph/adapters/index.d.ts +5 -4
- package/dist/graph/adapters/index.js +6 -8
- package/dist/graph/adapters/index.js.map +1 -1
- package/dist/graph/adapters/memgraph.adapter.d.ts +98 -73
- package/dist/graph/adapters/memgraph.adapter.js +1050 -1202
- package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
- package/dist/graph/adapters/neo4j.adapter.d.ts +71 -78
- package/dist/graph/adapters/neo4j.adapter.js +912 -1605
- package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
- package/dist/graph/adapters/neptune.adapter.d.ts +76 -81
- package/dist/graph/adapters/neptune.adapter.js +1095 -1228
- package/dist/graph/adapters/neptune.adapter.js.map +1 -1
- package/dist/graph/graphs.service.d.ts +524 -0
- package/dist/graph/graphs.service.js +1683 -0
- package/dist/graph/graphs.service.js.map +1 -0
- package/dist/graph/index.d.ts +54 -8
- package/dist/graph/index.js +67 -32
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/transactions/index.d.ts +4 -0
- package/dist/graph/transactions/index.js +9 -0
- package/dist/graph/transactions/index.js.map +1 -0
- package/dist/graph/transactions/transaction-manager.d.ts +61 -0
- package/dist/graph/transactions/transaction-manager.js +126 -0
- package/dist/graph/transactions/transaction-manager.js.map +1 -0
- package/dist/graph/types/connection.interface.d.ts +141 -0
- package/dist/graph/types/connection.interface.js +9 -0
- package/dist/graph/types/connection.interface.js.map +1 -0
- package/dist/graph/types/enums.d.ts +101 -0
- package/dist/graph/types/enums.js +114 -0
- package/dist/graph/types/enums.js.map +1 -0
- package/dist/graph/types/index.d.ts +11 -9
- package/dist/graph/types/index.js +15 -30
- package/dist/graph/types/index.js.map +1 -1
- package/dist/graph/types/node.interface.d.ts +248 -0
- package/dist/graph/types/node.interface.js +9 -0
- package/dist/graph/types/node.interface.js.map +1 -0
- package/dist/graph/types/query.interface.d.ts +168 -0
- package/dist/graph/types/query.interface.js +9 -0
- package/dist/graph/types/query.interface.js.map +1 -0
- package/dist/graph/types/relationship.interface.d.ts +207 -0
- package/dist/graph/types/relationship.interface.js +9 -0
- package/dist/graph/types/relationship.interface.js.map +1 -0
- package/dist/graph/types/schema.interface.d.ts +295 -0
- package/dist/graph/types/schema.interface.js +9 -0
- package/dist/graph/types/schema.interface.js.map +1 -0
- package/dist/graph/types/transaction.interface.d.ts +55 -0
- package/dist/graph/types/transaction.interface.js +9 -0
- package/dist/graph/types/transaction.interface.js.map +1 -0
- package/dist/graph/types/traversal.interface.d.ts +181 -0
- package/dist/graph/types/traversal.interface.js +9 -0
- package/dist/graph/types/traversal.interface.js.map +1 -0
- package/dist/graph/utils/graph-error.d.ts +71 -0
- package/dist/graph/utils/graph-error.js +142 -0
- package/dist/graph/utils/graph-error.js.map +1 -0
- package/dist/graph/utils/index.d.ts +4 -0
- package/dist/graph/utils/index.js +9 -0
- package/dist/graph/utils/index.js.map +1 -0
- package/dist/index.d.ts +1905 -875
- package/dist/index.js +3063 -1282
- package/dist/index.js.map +1 -1
- package/dist/init.interface.d.ts +407 -0
- package/dist/init.interface.js +3 -0
- package/dist/init.interface.js.map +1 -0
- package/dist/jobs/index.d.ts +38 -0
- package/dist/jobs/index.js +50 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/jobs.service.d.ts +154 -0
- package/dist/jobs/jobs.service.js +491 -0
- package/dist/jobs/jobs.service.js.map +1 -0
- package/dist/jobs/jobs.state.d.ts +113 -0
- package/dist/jobs/jobs.state.js +447 -0
- package/dist/jobs/jobs.state.js.map +1 -0
- package/dist/jobs/types.d.ts +449 -0
- package/dist/jobs/types.js +74 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/logs/logs.types.d.ts +12 -2
- package/dist/logs/logs.types.js +5 -1
- package/dist/logs/logs.types.js.map +1 -1
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.js +11 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/models.service.d.ts +137 -0
- package/dist/models/models.service.js +195 -0
- package/dist/models/models.service.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.js +26 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notifications.service.d.ts +252 -0
- package/dist/notifications/notifications.service.js +654 -0
- package/dist/notifications/notifications.service.js.map +1 -0
- package/dist/notifications/types/index.d.ts +4 -0
- package/dist/notifications/types/index.js +21 -0
- package/dist/notifications/types/index.js.map +1 -0
- package/dist/notifications/types/notifications.types.d.ts +400 -0
- package/dist/notifications/types/notifications.types.js +49 -0
- package/dist/notifications/types/notifications.types.js.map +1 -0
- package/dist/processor/services/messagebrokers/kafka.service.js +2 -0
- package/dist/processor/services/messagebrokers/kafka.service.js.map +1 -1
- package/dist/processor/services/messagebrokers/rabbitmq.service.d.ts +1 -9
- package/dist/processor/services/messagebrokers/rabbitmq.service.js +11 -40
- package/dist/processor/services/messagebrokers/rabbitmq.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +86 -70
- package/dist/processor/services/processor.service.js +1353 -1259
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/processor/utils/processor.utils.js +5 -1
- package/dist/processor/utils/processor.utils.js.map +1 -1
- package/dist/products/services/products.service.d.ts +167 -25
- package/dist/products/services/products.service.js +1248 -412
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/validators/index.d.ts +6 -3
- package/dist/products/validators/index.js +14 -5
- package/dist/products/validators/index.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productAgent.validator.js +218 -0
- package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productDatabase.validator.js +5 -0
- package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.d.ts +4 -15
- package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.js +109 -501
- package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productGraph.validator.js +14 -9
- package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js +0 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +87 -30
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productModel.validator.js +132 -0
- package/dist/products/validators/joi-validators/create.productModel.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productNotification.validator.js +135 -50
- package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productStorage.validator.js +77 -18
- package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productVector.validator.js +135 -0
- package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/update.productDatabase.validator.js +5 -0
- package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.d.ts +0 -6
- package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.js +26 -28
- package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productGraph.validator.js +11 -12
- package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productMessageBrokerTopic.validator.js +0 -1
- package/dist/products/validators/joi-validators/update.productMessageBrokerTopic.validator.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +88 -0
- package/dist/resilience/fallback.service.js +511 -0
- package/dist/resilience/fallback.service.js.map +1 -0
- package/dist/resilience/healthcheck.service.d.ts +106 -0
- package/dist/resilience/healthcheck.service.js +379 -0
- package/dist/resilience/healthcheck.service.js.map +1 -0
- package/dist/resilience/index.d.ts +104 -0
- package/dist/resilience/index.js +140 -0
- package/dist/resilience/index.js.map +1 -0
- package/dist/resilience/quota.service.d.ts +90 -0
- package/dist/resilience/quota.service.js +519 -0
- package/dist/resilience/quota.service.js.map +1 -0
- package/dist/resilience/resilience.service.d.ts +95 -0
- package/dist/resilience/resilience.service.js +525 -0
- package/dist/resilience/resilience.service.js.map +1 -0
- package/dist/resilience/types/index.d.ts +479 -0
- package/dist/resilience/types/index.js +26 -0
- package/dist/resilience/types/index.js.map +1 -0
- package/dist/secrets/index.d.ts +10 -0
- package/dist/secrets/index.js +33 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/secrets.resolver.d.ts +52 -0
- package/dist/secrets/secrets.resolver.js +233 -0
- package/dist/secrets/secrets.resolver.js.map +1 -0
- package/dist/secrets/secrets.service.d.ts +83 -0
- package/dist/secrets/secrets.service.js +159 -0
- package/dist/secrets/secrets.service.js.map +1 -0
- package/dist/secrets/secrets.types.d.ts +188 -0
- package/dist/secrets/secrets.types.js +87 -0
- package/dist/secrets/secrets.types.js.map +1 -0
- package/dist/sessions/index.d.ts +50 -0
- package/dist/sessions/index.js +93 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/sessions.helper.d.ts +68 -0
- package/dist/sessions/sessions.helper.js +116 -0
- package/dist/sessions/sessions.helper.js.map +1 -0
- package/dist/sessions/sessions.resolver.d.ts +150 -0
- package/dist/sessions/sessions.resolver.js +356 -0
- package/dist/sessions/sessions.resolver.js.map +1 -0
- package/dist/sessions/sessions.service.d.ts +170 -0
- package/dist/sessions/sessions.service.js +736 -0
- package/dist/sessions/sessions.service.js.map +1 -0
- package/dist/sessions/types/index.d.ts +290 -0
- package/dist/sessions/types/index.js +6 -0
- package/dist/sessions/types/index.js.map +1 -0
- package/dist/storage/index.d.ts +66 -0
- package/dist/storage/index.js +98 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.service.d.ts +123 -0
- package/dist/storage/storage.service.js +478 -0
- package/dist/storage/storage.service.js.map +1 -0
- package/dist/storage/types/index.d.ts +207 -0
- package/dist/storage/types/index.js +6 -0
- package/dist/storage/types/index.js.map +1 -0
- package/dist/storage/utils/storage.util.d.ts +51 -0
- package/dist/storage/utils/storage.util.js +402 -0
- package/dist/storage/utils/storage.util.js.map +1 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.js +13 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/test.appBuilder.d.ts +0 -1
- package/dist/test/test.appBuilder.js +0 -15
- package/dist/test/test.appBuilder.js.map +1 -1
- package/dist/test/test.database.js +140 -0
- package/dist/test/test.database.js.map +1 -0
- package/dist/test/test.health.d.ts +0 -1
- package/dist/test/test.health.js +0 -48
- package/dist/test/test.health.js.map +1 -1
- package/dist/test/test.import.d.ts +0 -1
- package/dist/test/test.import.js +0 -1506
- package/dist/test/test.import.js.map +1 -1
- package/dist/test/test.import.openapi.d.ts +0 -1
- package/dist/test/test.import.openapi.js +0 -75
- package/dist/test/test.import.openapi.js.map +1 -1
- package/dist/test/test.imports.d.ts +0 -1
- package/dist/test/test.imports.js +0 -76
- package/dist/test/test.imports.js.map +1 -1
- package/dist/test/test.logs.d.ts +0 -1
- package/dist/test/test.logs.js +0 -17
- package/dist/test/test.logs.js.map +1 -1
- package/dist/test/test.notifiers.d.ts +0 -1
- package/dist/test/test.notifiers.js +0 -84
- package/dist/test/test.notifiers.js.map +1 -1
- package/dist/test/test.processor.d.ts +0 -1
- package/dist/test/test.processor.js +0 -37
- package/dist/test/test.processor.js.map +1 -1
- package/dist/test/test.productBuilder.d.ts +0 -1
- package/dist/test/test.productBuilder.js +0 -660
- package/dist/test/test.productBuilder.js.map +1 -1
- package/dist/test/test.products.d.ts +0 -1
- package/dist/test/test.products.js +0 -48
- package/dist/test/test.products.js.map +1 -1
- package/dist/test/test.storage.js +332 -0
- package/dist/test/test.storage.js.map +1 -0
- package/dist/test/test.triggers.js +314 -0
- package/dist/test/test.triggers.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +1 -1
- package/dist/types/enums.d.ts +6 -1
- package/dist/types/enums.js +5 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/processor.types.d.ts +197 -35
- package/dist/types/processor.types.js +9 -1
- package/dist/types/processor.types.js.map +1 -1
- package/dist/types/productsBuilder.types.d.ts +837 -75
- package/dist/types/productsBuilder.types.js +168 -62
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.js +2 -49
- package/dist/utils/index.js.map +1 -1
- package/dist/vector/adapters/base.adapter.d.ts +152 -0
- package/dist/vector/adapters/base.adapter.js +137 -0
- package/dist/vector/adapters/base.adapter.js.map +1 -0
- package/dist/vector/adapters/index.d.ts +10 -0
- package/dist/vector/adapters/index.js +19 -0
- package/dist/vector/adapters/index.js.map +1 -0
- package/dist/vector/adapters/memory.adapter.d.ts +85 -0
- package/dist/vector/adapters/memory.adapter.js +505 -0
- package/dist/vector/adapters/memory.adapter.js.map +1 -0
- package/dist/vector/adapters/pinecone.adapter.d.ts +52 -0
- package/dist/vector/adapters/pinecone.adapter.js +400 -0
- package/dist/vector/adapters/pinecone.adapter.js.map +1 -0
- package/dist/vector/adapters/qdrant.adapter.d.ts +56 -0
- package/dist/vector/adapters/qdrant.adapter.js +392 -0
- package/dist/vector/adapters/qdrant.adapter.js.map +1 -0
- package/dist/vector/adapters/weaviate.adapter.d.ts +64 -0
- package/dist/vector/adapters/weaviate.adapter.js +478 -0
- package/dist/vector/adapters/weaviate.adapter.js.map +1 -0
- package/dist/vector/index.d.ts +47 -0
- package/dist/vector/index.js +72 -0
- package/dist/vector/index.js.map +1 -0
- package/dist/vector/types/connection.interface.d.ts +151 -0
- package/dist/vector/types/connection.interface.js +8 -0
- package/dist/vector/types/connection.interface.js.map +1 -0
- package/dist/vector/types/embedding.interface.d.ts +144 -0
- package/dist/vector/types/embedding.interface.js +8 -0
- package/dist/vector/types/embedding.interface.js.map +1 -0
- package/dist/vector/types/enums.d.ts +104 -0
- package/dist/vector/types/enums.js +113 -0
- package/dist/vector/types/enums.js.map +1 -0
- package/dist/vector/types/index.d.ts +9 -0
- package/dist/vector/types/index.js +16 -0
- package/dist/vector/types/index.js.map +1 -0
- package/dist/vector/types/vector.interface.d.ts +315 -0
- package/dist/vector/types/vector.interface.js +8 -0
- package/dist/vector/types/vector.interface.js.map +1 -0
- package/dist/vector/utils/index.d.ts +6 -0
- package/dist/vector/utils/index.js +11 -0
- package/dist/vector/utils/index.js.map +1 -0
- package/dist/vector/utils/vector-error.d.ts +69 -0
- package/dist/vector/utils/vector-error.js +117 -0
- package/dist/vector/utils/vector-error.js.map +1 -0
- package/dist/vector/vector-database.service.d.ts +405 -0
- package/dist/vector/vector-database.service.js +544 -0
- package/dist/vector/vector-database.service.js.map +1 -0
- package/dist/vector/vector.service.d.ts +245 -0
- package/dist/vector/vector.service.js +381 -0
- package/dist/vector/vector.service.js.map +1 -0
- package/dist/workflows/index.d.ts +30 -0
- package/dist/workflows/index.js +64 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/types/index.d.ts +6 -0
- package/dist/workflows/types/index.js +23 -0
- package/dist/workflows/types/index.js.map +1 -0
- package/dist/workflows/types/workflows.types.d.ts +1035 -0
- package/dist/workflows/types/workflows.types.js +13 -0
- package/dist/workflows/types/workflows.types.js.map +1 -0
- package/dist/workflows/workflow-builder.d.ts +70 -0
- package/dist/workflows/workflow-builder.js +338 -0
- package/dist/workflows/workflow-builder.js.map +1 -0
- package/dist/workflows/workflow-executor.d.ts +205 -0
- package/dist/workflows/workflow-executor.js +1186 -0
- package/dist/workflows/workflow-executor.js.map +1 -0
- package/dist/workflows/workflows.service.d.ts +398 -0
- package/dist/workflows/workflows.service.js +1595 -0
- package/dist/workflows/workflows.service.js.map +1 -0
- package/package.json +16 -13
- package/dist/actions/actions.repo.d.ts +0 -0
- package/dist/actions/actions.repo.js +0 -13
- package/dist/actions/actions.repo.js.map +0 -1
- package/dist/actions/actions.service.d.ts +0 -0
- package/dist/actions/actions.service.js +0 -24
- package/dist/actions/actions.service.js.map +0 -1
- package/dist/actions/utils/actions.util.read.d.ts +0 -0
- package/dist/actions/utils/actions.util.read.js +0 -427
- package/dist/actions/utils/actions.util.read.js.map +0 -1
- package/dist/api/services/integrationsApi.service.d.ts +0 -18
- package/dist/api/services/integrationsApi.service.js +0 -80
- package/dist/api/services/integrationsApi.service.js.map +0 -1
- package/dist/api/services/workspaceSecretsApi.service.d.ts +0 -75
- package/dist/api/services/workspaceSecretsApi.service.js +0 -62
- package/dist/api/services/workspaceSecretsApi.service.js.map +0 -1
- package/dist/appBuilder/services/app.service.d.ts +0 -111
- package/dist/appBuilder/services/app.service.js +0 -737
- package/dist/appBuilder/services/app.service.js.map +0 -1
- package/dist/appBuilder/services/appBuilder.service.d.ts +0 -111
- package/dist/appBuilder/services/appBuilder.service.js +0 -662
- package/dist/appBuilder/services/appBuilder.service.js.map +0 -1
- package/dist/appBuilder/utils/objects.utils.d.ts +0 -3
- package/dist/appBuilder/utils/objects.utils.js +0 -9
- package/dist/appBuilder/utils/objects.utils.js.map +0 -1
- package/dist/appBuilder/utils/string.utils.d.ts +0 -2
- package/dist/appBuilder/utils/string.utils.js +0 -57
- package/dist/appBuilder/utils/string.utils.js.map +0 -1
- package/dist/appBuilder/validators/index.d.ts +0 -19
- package/dist/appBuilder/validators/index.js +0 -40
- package/dist/appBuilder/validators/index.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.app.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/create.app.validator.js +0 -10
- package/dist/appBuilder/validators/joi-validators/create.app.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js +0 -20
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js +0 -44
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js +0 -31
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js +0 -11
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js +0 -12
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js +0 -17
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js +0 -30
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js +0 -14
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/sample.validator.d.ts +0 -5
- package/dist/appBuilder/validators/joi-validators/sample.validator.js +0 -26
- package/dist/appBuilder/validators/joi-validators/sample.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.app.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.app.validator.js +0 -34
- package/dist/appBuilder/validators/joi-validators/update.app.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js +0 -23
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js +0 -21
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js +0 -19
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js +0 -12
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js +0 -17
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js +0 -16
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js +0 -14
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js +0 -27
- package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
- package/dist/apps/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
- package/dist/apps/validators/joi-validators/create.appEvent.validator.js +0 -30
- package/dist/apps/validators/joi-validators/create.appEvent.validator.js.map +0 -1
- package/dist/apps/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
- package/dist/apps/validators/joi-validators/update.appEvent.validator.js +0 -16
- package/dist/apps/validators/joi-validators/update.appEvent.validator.js.map +0 -1
- package/dist/clients/integrations.client.d.ts +0 -2
- package/dist/clients/integrations.client.js +0 -26
- package/dist/clients/integrations.client.js.map +0 -1
- package/dist/database/database.service.d.ts +0 -232
- package/dist/database/database.service.js +0 -802
- package/dist/database/database.service.js.map +0 -1
- package/dist/database/types/aggregation.types.d.ts +0 -261
- package/dist/database/types/aggregation.types.js +0 -21
- package/dist/database/types/aggregation.types.js.map +0 -1
- package/dist/database/types/connection.types.d.ts +0 -132
- package/dist/database/types/connection.types.js +0 -6
- package/dist/database/types/connection.types.js.map +0 -1
- package/dist/database/types/database.types.d.ts +0 -175
- package/dist/database/types/database.types.js +0 -75
- package/dist/database/types/database.types.js.map +0 -1
- package/dist/database/types/index.types.d.ts +0 -220
- package/dist/database/types/index.types.js +0 -27
- package/dist/database/types/index.types.js.map +0 -1
- package/dist/database/types/migration.types.d.ts +0 -205
- package/dist/database/types/migration.types.js +0 -44
- package/dist/database/types/migration.types.js.map +0 -1
- package/dist/database/types/query.types.d.ts +0 -305
- package/dist/database/types/query.types.js +0 -57
- package/dist/database/types/query.types.js.map +0 -1
- package/dist/database/types/result.types.d.ts +0 -220
- package/dist/database/types/result.types.js +0 -6
- package/dist/database/types/result.types.js.map +0 -1
- package/dist/database/types/schema.types.d.ts +0 -190
- package/dist/database/types/schema.types.js +0 -69
- package/dist/database/types/schema.types.js.map +0 -1
- package/dist/database/utils/helpers.d.ts +0 -66
- package/dist/database/utils/helpers.js +0 -501
- package/dist/database/utils/helpers.js.map +0 -1
- package/dist/database/utils/migration.utils.d.ts +0 -151
- package/dist/database/utils/migration.utils.js +0 -476
- package/dist/database/utils/migration.utils.js.map +0 -1
- package/dist/database/utils/transaction.d.ts +0 -64
- package/dist/database/utils/transaction.js +0 -130
- package/dist/database/utils/transaction.js.map +0 -1
- package/dist/database/validators/connection.validator.d.ts +0 -20
- package/dist/database/validators/connection.validator.js +0 -267
- package/dist/database/validators/connection.validator.js.map +0 -1
- package/dist/database/validators/query.validator.d.ts +0 -31
- package/dist/database/validators/query.validator.js +0 -305
- package/dist/database/validators/query.validator.js.map +0 -1
- package/dist/database/validators/schema.validator.d.ts +0 -31
- package/dist/database/validators/schema.validator.js +0 -334
- package/dist/database/validators/schema.validator.js.map +0 -1
- package/dist/graph/graph.service.d.ts +0 -278
- package/dist/graph/graph.service.js +0 -687
- package/dist/graph/graph.service.js.map +0 -1
- package/dist/graph/types/connection.types.d.ts +0 -158
- package/dist/graph/types/connection.types.js +0 -43
- package/dist/graph/types/connection.types.js.map +0 -1
- package/dist/graph/types/graph.types.d.ts +0 -144
- package/dist/graph/types/graph.types.js +0 -84
- package/dist/graph/types/graph.types.js.map +0 -1
- package/dist/graph/types/node.types.d.ts +0 -193
- package/dist/graph/types/node.types.js +0 -49
- package/dist/graph/types/node.types.js.map +0 -1
- package/dist/graph/types/path.types.d.ts +0 -224
- package/dist/graph/types/path.types.js +0 -38
- package/dist/graph/types/path.types.js.map +0 -1
- package/dist/graph/types/query.types.d.ts +0 -247
- package/dist/graph/types/query.types.js +0 -23
- package/dist/graph/types/query.types.js.map +0 -1
- package/dist/graph/types/relationship.types.d.ts +0 -224
- package/dist/graph/types/relationship.types.js +0 -35
- package/dist/graph/types/relationship.types.js.map +0 -1
- package/dist/graph/types/result.types.d.ts +0 -237
- package/dist/graph/types/result.types.js +0 -7
- package/dist/graph/types/result.types.js.map +0 -1
- package/dist/graph/validators/index.d.ts +0 -81
- package/dist/graph/validators/index.js +0 -243
- package/dist/graph/validators/index.js.map +0 -1
- package/dist/integrationsBuilder/services/integration.service.d.ts +0 -138
- package/dist/integrationsBuilder/services/integration.service.js +0 -1148
- package/dist/integrationsBuilder/services/integration.service.js.map +0 -1
- package/dist/integrationsBuilder/services/integrationBuilder.service.d.ts +0 -130
- package/dist/integrationsBuilder/services/integrationBuilder.service.js +0 -1017
- package/dist/integrationsBuilder/services/integrationBuilder.service.js.map +0 -1
- package/dist/integrationsBuilder/utils/objects.utils.d.ts +0 -2
- package/dist/integrationsBuilder/utils/objects.utils.js +0 -48
- package/dist/integrationsBuilder/utils/objects.utils.js.map +0 -1
- package/dist/integrationsBuilder/utils/string.utils.d.ts +0 -1
- package/dist/integrationsBuilder/utils/string.utils.js +0 -9
- package/dist/integrationsBuilder/utils/string.utils.js.map +0 -1
- package/dist/integrationsBuilder/validators/index.d.ts +0 -18
- package/dist/integrationsBuilder/validators/index.js +0 -38
- package/dist/integrationsBuilder/validators/index.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js +0 -10
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.d.ts +0 -4
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js +0 -26
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js +0 -10
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js +0 -60
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js +0 -9
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js.map +0 -1
- package/dist/postman.d.ts +0 -1
- package/dist/postman.js +0 -21674
- package/dist/postman.js.map +0 -1
- package/dist/processor/utils/mongo.util.d.ts +0 -0
- package/dist/processor/utils/mongo.util.js +0 -152
- package/dist/processor/utils/mongo.util.js.map +0 -1
- package/dist/processor/utils/postgres.util.d.ts +0 -14
- package/dist/processor/utils/postgres.util.js +0 -83
- package/dist/processor/utils/postgres.util.js.map +0 -1
- package/dist/products/services/utils/crypt.utils.d.ts +0 -1
- package/dist/products/services/utils/crypt.utils.js +0 -17
- package/dist/products/services/utils/crypt.utils.js.map +0 -1
- package/dist/products/services/utils/functions.utils.d.ts +0 -13
- package/dist/products/services/utils/functions.utils.js +0 -289
- package/dist/products/services/utils/functions.utils.js.map +0 -1
- package/dist/products/services/utils/objects.utils.d.ts +0 -13
- package/dist/products/services/utils/objects.utils.js +0 -89
- package/dist/products/services/utils/objects.utils.js.map +0 -1
- package/dist/products/services/utils/string.utils.d.ts +0 -12
- package/dist/products/services/utils/string.utils.js +0 -168
- package/dist/products/services/utils/string.utils.js.map +0 -1
- package/dist/products/validators/joi-validators/create.product.validator.d.ts +0 -3
- package/dist/products/validators/joi-validators/create.product.validator.js +0 -10
- package/dist/products/validators/joi-validators/create.product.validator.js.map +0 -1
- package/dist/products/validators/joi-validators/create.productGraphAction.validator.d.ts +0 -14
- package/dist/products/validators/joi-validators/create.productGraphAction.validator.js +0 -696
- package/dist/products/validators/joi-validators/create.productGraphAction.validator.js.map +0 -1
- package/dist/products/validators/joi-validators/update.productGraphAction.validator.d.ts +0 -7
- package/dist/products/validators/joi-validators/update.productGraphAction.validator.js +0 -72
- package/dist/products/validators/joi-validators/update.productGraphAction.validator.js.map +0 -1
- package/dist/test.appBuilder.js +0 -14
- package/dist/test.appBuilder.js.map +0 -1
- package/dist/test.import.d.ts +0 -0
- package/dist/test.import.js +0 -24
- package/dist/test.import.js.map +0 -1
- package/dist/test.imports.js +0 -28
- package/dist/test.imports.js.map +0 -1
- package/dist/test.integrationBuilder.js +0 -276
- package/dist/test.integrationBuilder.js.map +0 -1
- package/dist/test.processor.d.ts +0 -1
- package/dist/test.processor.js +0 -23
- package/dist/test.processor.js.map +0 -1
- package/dist/test.utils.d.ts +0 -1
- package/dist/test.utils.js +0 -25
- package/dist/test.utils.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/integrationsBuilder.types.d.ts +0 -276
- package/dist/types/integrationsBuilder.types.js +0 -51
- package/dist/types/integrationsBuilder.types.js.map +0 -1
- /package/dist/{test.appBuilder.d.ts → test/test.database.d.ts} +0 -0
- /package/dist/{test.imports.d.ts → test/test.storage.d.ts} +0 -0
- /package/dist/{test.integrationBuilder.d.ts → test/test.triggers.d.ts} +0 -0
|
@@ -0,0 +1,1019 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cassandra Adapter
|
|
4
|
+
*
|
|
5
|
+
* Database adapter for Apache Cassandra using the 'cassandra-driver' library.
|
|
6
|
+
* Implements all methods from BaseAdapter with Cassandra-specific operations.
|
|
7
|
+
*
|
|
8
|
+
* Key Cassandra concepts:
|
|
9
|
+
* - Keyspace (like a database/schema)
|
|
10
|
+
* - Column family/Table
|
|
11
|
+
* - Partition key and clustering columns
|
|
12
|
+
* - No JOINs - denormalized data model
|
|
13
|
+
* - No transactions in the traditional sense (uses lightweight transactions)
|
|
14
|
+
* - Eventual consistency by default
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.CassandraAdapter = void 0;
|
|
51
|
+
const base_adapter_1 = require("./base.adapter");
|
|
52
|
+
const enums_1 = require("../types/enums");
|
|
53
|
+
const database_error_1 = require("../utils/database-error");
|
|
54
|
+
/**
|
|
55
|
+
* Cassandra database adapter
|
|
56
|
+
* Provides Cassandra-specific implementations for all database operations
|
|
57
|
+
*/
|
|
58
|
+
class CassandraAdapter extends base_adapter_1.BaseAdapter {
|
|
59
|
+
constructor() {
|
|
60
|
+
super(...arguments);
|
|
61
|
+
this.databaseType = enums_1.DatabaseType.CASSANDRA;
|
|
62
|
+
this.cassandraClient = null;
|
|
63
|
+
this.keyspace = '';
|
|
64
|
+
}
|
|
65
|
+
// ==================== CONNECTION METHODS ====================
|
|
66
|
+
async connect(options) {
|
|
67
|
+
try {
|
|
68
|
+
// Dynamic import of cassandra-driver
|
|
69
|
+
const cassandra = await Promise.resolve().then(() => __importStar(require('cassandra-driver')));
|
|
70
|
+
this.connectionUrl = options.connectionUrl;
|
|
71
|
+
// Parse connection URL: cassandra://host1,host2:port/keyspace
|
|
72
|
+
const url = new URL(options.connectionUrl);
|
|
73
|
+
const hosts = url.hostname.split(',');
|
|
74
|
+
const port = parseInt(url.port) || 9042;
|
|
75
|
+
this.keyspace = url.pathname.slice(1) || 'system';
|
|
76
|
+
const clientOptions = {
|
|
77
|
+
contactPoints: hosts,
|
|
78
|
+
localDataCenter: 'datacenter1', // Default, can be overridden
|
|
79
|
+
keyspace: this.keyspace,
|
|
80
|
+
protocolOptions: { port },
|
|
81
|
+
};
|
|
82
|
+
// Authentication
|
|
83
|
+
if (url.username && url.password) {
|
|
84
|
+
clientOptions.credentials = {
|
|
85
|
+
username: url.username,
|
|
86
|
+
password: url.password,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Parse query parameters for additional options
|
|
90
|
+
const params = new URLSearchParams(url.search);
|
|
91
|
+
if (params.get('datacenter')) {
|
|
92
|
+
clientOptions.localDataCenter = params.get('datacenter');
|
|
93
|
+
}
|
|
94
|
+
this.cassandraClient = new cassandra.Client(clientOptions);
|
|
95
|
+
await this.cassandraClient.connect();
|
|
96
|
+
// Get cluster information
|
|
97
|
+
const metadata = this.cassandraClient.metadata;
|
|
98
|
+
const version = await this.getClusterVersion();
|
|
99
|
+
this.client = this.cassandraClient;
|
|
100
|
+
this.connected = true;
|
|
101
|
+
return {
|
|
102
|
+
connected: true,
|
|
103
|
+
version: `Cassandra ${version}`,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
throw database_error_1.DatabaseError.connectionError(`Failed to connect to Cassandra: ${error.message}`, error);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async testConnection(options) {
|
|
111
|
+
var _a;
|
|
112
|
+
try {
|
|
113
|
+
const cassandra = await Promise.resolve().then(() => __importStar(require('cassandra-driver')));
|
|
114
|
+
const url = new URL(options.connectionUrl);
|
|
115
|
+
const hosts = url.hostname.split(',');
|
|
116
|
+
const port = parseInt(url.port) || 9042;
|
|
117
|
+
const keyspace = url.pathname.slice(1) || 'system';
|
|
118
|
+
const client = new cassandra.Client({
|
|
119
|
+
contactPoints: hosts,
|
|
120
|
+
localDataCenter: 'datacenter1',
|
|
121
|
+
keyspace,
|
|
122
|
+
protocolOptions: { port },
|
|
123
|
+
});
|
|
124
|
+
await client.connect();
|
|
125
|
+
const result = await client.execute('SELECT release_version FROM system.local');
|
|
126
|
+
const version = ((_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.release_version) || 'unknown';
|
|
127
|
+
await client.shutdown();
|
|
128
|
+
return {
|
|
129
|
+
connected: true,
|
|
130
|
+
version: `Cassandra ${version}`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
connected: false,
|
|
136
|
+
error: error.message,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async disconnect() {
|
|
141
|
+
if (this.cassandraClient) {
|
|
142
|
+
await this.cassandraClient.shutdown();
|
|
143
|
+
this.cassandraClient = null;
|
|
144
|
+
this.client = null;
|
|
145
|
+
this.connected = false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ==================== QUERY METHODS ====================
|
|
149
|
+
async query(query) {
|
|
150
|
+
this.ensureConnected();
|
|
151
|
+
try {
|
|
152
|
+
const result = await this.cassandraClient.execute(query.sql, query.params, {
|
|
153
|
+
prepare: true,
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
data: result.rows,
|
|
157
|
+
count: result.rows.length,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async raw(options) {
|
|
165
|
+
this.ensureConnected();
|
|
166
|
+
try {
|
|
167
|
+
const result = await this.cassandraClient.execute(options.query, options.params, { prepare: true });
|
|
168
|
+
return {
|
|
169
|
+
data: result.rows,
|
|
170
|
+
count: result.rows.length,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// ==================== WRITE METHODS ====================
|
|
178
|
+
async insert(options) {
|
|
179
|
+
var _a;
|
|
180
|
+
this.ensureConnected();
|
|
181
|
+
try {
|
|
182
|
+
const data = Array.isArray(options.data) ? options.data : [options.data];
|
|
183
|
+
if (data.length === 0) {
|
|
184
|
+
return { data: [], count: 0, insertedIds: [] };
|
|
185
|
+
}
|
|
186
|
+
const insertedIds = [];
|
|
187
|
+
// Use batch for multiple inserts
|
|
188
|
+
if (data.length > 1) {
|
|
189
|
+
const queries = data.map(record => {
|
|
190
|
+
const columns = Object.keys(record);
|
|
191
|
+
const values = Object.values(record);
|
|
192
|
+
const placeholders = columns.map(() => '?').join(', ');
|
|
193
|
+
return {
|
|
194
|
+
query: `INSERT INTO ${this.escapeIdentifier(options.table)} (${columns.join(', ')}) VALUES (${placeholders})`,
|
|
195
|
+
params: values,
|
|
196
|
+
};
|
|
197
|
+
});
|
|
198
|
+
await this.cassandraClient.batch(queries, { prepare: true });
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const record = data[0];
|
|
202
|
+
const columns = Object.keys(record);
|
|
203
|
+
const values = Object.values(record);
|
|
204
|
+
const placeholders = columns.map(() => '?').join(', ');
|
|
205
|
+
let sql = `INSERT INTO ${this.escapeIdentifier(options.table)} (${columns.join(', ')}) VALUES (${placeholders})`;
|
|
206
|
+
// Handle IF NOT EXISTS for conflict handling
|
|
207
|
+
if (((_a = options.onConflict) === null || _a === void 0 ? void 0 : _a.action) === 'ignore') {
|
|
208
|
+
sql += ' IF NOT EXISTS';
|
|
209
|
+
}
|
|
210
|
+
await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
211
|
+
}
|
|
212
|
+
// Cassandra doesn't return inserted IDs
|
|
213
|
+
data.forEach(record => {
|
|
214
|
+
insertedIds.push(record.id || record._id || null);
|
|
215
|
+
});
|
|
216
|
+
return {
|
|
217
|
+
data: options.returning ? data : [],
|
|
218
|
+
count: data.length,
|
|
219
|
+
insertedIds,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async update(options) {
|
|
227
|
+
this.ensureConnected();
|
|
228
|
+
try {
|
|
229
|
+
const setClauses = [];
|
|
230
|
+
const values = [];
|
|
231
|
+
// Build SET clause
|
|
232
|
+
for (const [key, value] of Object.entries(options.data)) {
|
|
233
|
+
if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
|
|
234
|
+
// Handle update operators
|
|
235
|
+
if ('$INC' in value) {
|
|
236
|
+
// Cassandra supports counter increment
|
|
237
|
+
setClauses.push(`${key} = ${key} + ?`);
|
|
238
|
+
values.push(value.$INC);
|
|
239
|
+
}
|
|
240
|
+
else if ('$DEC' in value) {
|
|
241
|
+
// Cassandra supports counter decrement
|
|
242
|
+
setClauses.push(`${key} = ${key} - ?`);
|
|
243
|
+
values.push(value.$DEC);
|
|
244
|
+
}
|
|
245
|
+
else if ('$SET' in value) {
|
|
246
|
+
setClauses.push(`${key} = ?`);
|
|
247
|
+
values.push(value.$SET);
|
|
248
|
+
}
|
|
249
|
+
else if ('$UNSET' in value && value.$UNSET) {
|
|
250
|
+
// Cassandra uses DELETE for removing columns, or set to null
|
|
251
|
+
setClauses.push(`${key} = null`);
|
|
252
|
+
}
|
|
253
|
+
else if ('$PUSH' in value) {
|
|
254
|
+
// Cassandra list append
|
|
255
|
+
setClauses.push(`${key} = ${key} + ?`);
|
|
256
|
+
values.push([value.$PUSH]);
|
|
257
|
+
}
|
|
258
|
+
else if ('$PULL' in value) {
|
|
259
|
+
// Cassandra list remove
|
|
260
|
+
setClauses.push(`${key} = ${key} - ?`);
|
|
261
|
+
values.push([value.$PULL]);
|
|
262
|
+
}
|
|
263
|
+
else if ('$ADDTOSET' in value) {
|
|
264
|
+
// Cassandra set add
|
|
265
|
+
setClauses.push(`${key} = ${key} + ?`);
|
|
266
|
+
values.push(new Set([value.$ADDTOSET]));
|
|
267
|
+
}
|
|
268
|
+
else if ('$MUL' in value) {
|
|
269
|
+
// Cassandra doesn't support multiply natively - log warning
|
|
270
|
+
console.warn(`Cassandra does not support $MUL operator natively for column ${key}`);
|
|
271
|
+
setClauses.push(`${key} = ?`);
|
|
272
|
+
values.push(value.$MUL); // Just set the multiplier value as fallback
|
|
273
|
+
}
|
|
274
|
+
else if ('$MIN' in value || '$MAX' in value) {
|
|
275
|
+
// Cassandra doesn't support min/max natively - log warning
|
|
276
|
+
console.warn(`Cassandra does not support $MIN/$MAX operator natively for column ${key}`);
|
|
277
|
+
setClauses.push(`${key} = ?`);
|
|
278
|
+
values.push(value.$MIN || value.$MAX); // Just set the value as fallback
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
setClauses.push(`${key} = ?`);
|
|
283
|
+
values.push(value);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
let sql = `UPDATE ${this.escapeIdentifier(options.table)} SET ${setClauses.join(', ')}`;
|
|
287
|
+
// Build WHERE clause (required in Cassandra)
|
|
288
|
+
if (options.where) {
|
|
289
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
290
|
+
sql += ` WHERE ${whereClause}`;
|
|
291
|
+
values.push(...whereParams);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
throw new database_error_1.DatabaseError('Cassandra UPDATE requires a WHERE clause with primary key', enums_1.DatabaseErrorType.QUERY_ERROR);
|
|
295
|
+
}
|
|
296
|
+
await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
297
|
+
return {
|
|
298
|
+
data: [],
|
|
299
|
+
count: 1, // Cassandra doesn't return affected rows
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async delete(options) {
|
|
307
|
+
this.ensureConnected();
|
|
308
|
+
try {
|
|
309
|
+
let sql = `DELETE FROM ${this.escapeIdentifier(options.table)}`;
|
|
310
|
+
const values = [];
|
|
311
|
+
// Build WHERE clause (required in Cassandra)
|
|
312
|
+
if (options.where) {
|
|
313
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
314
|
+
sql += ` WHERE ${whereClause}`;
|
|
315
|
+
values.push(...whereParams);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
throw new database_error_1.DatabaseError('Cassandra DELETE requires a WHERE clause with primary key', enums_1.DatabaseErrorType.QUERY_ERROR);
|
|
319
|
+
}
|
|
320
|
+
await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
321
|
+
return {
|
|
322
|
+
count: 1, // Cassandra doesn't return affected rows
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
async upsert(options) {
|
|
330
|
+
this.ensureConnected();
|
|
331
|
+
try {
|
|
332
|
+
// Cassandra INSERT is an upsert by default
|
|
333
|
+
const result = await this.insert(Object.assign(Object.assign({}, options), { returning: true }));
|
|
334
|
+
return {
|
|
335
|
+
data: result.data,
|
|
336
|
+
count: result.count,
|
|
337
|
+
operation: 'inserted', // Cassandra doesn't distinguish
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// ==================== AGGREGATION METHODS ====================
|
|
345
|
+
async count(options) {
|
|
346
|
+
this.ensureConnected();
|
|
347
|
+
try {
|
|
348
|
+
let sql = `SELECT COUNT(*) as count FROM ${this.escapeIdentifier(options.table)}`;
|
|
349
|
+
const values = [];
|
|
350
|
+
if (options.where) {
|
|
351
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
352
|
+
sql += ` WHERE ${whereClause}`;
|
|
353
|
+
values.push(...whereParams);
|
|
354
|
+
}
|
|
355
|
+
// Note: Cassandra's COUNT can be slow on large tables
|
|
356
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
357
|
+
return Number(result.rows[0].count) || 0;
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
async sum(options) {
|
|
364
|
+
this.ensureConnected();
|
|
365
|
+
try {
|
|
366
|
+
// Cassandra doesn't have SUM, need to fetch and compute
|
|
367
|
+
let sql = `SELECT ${this.escapeIdentifier(options.column)} FROM ${this.escapeIdentifier(options.table)}`;
|
|
368
|
+
const values = [];
|
|
369
|
+
if (options.where) {
|
|
370
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
371
|
+
sql += ` WHERE ${whereClause}`;
|
|
372
|
+
values.push(...whereParams);
|
|
373
|
+
}
|
|
374
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
375
|
+
return result.rows.reduce((sum, row) => sum + (Number(row[options.column]) || 0), 0);
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
async avg(options) {
|
|
382
|
+
this.ensureConnected();
|
|
383
|
+
try {
|
|
384
|
+
// Cassandra doesn't have AVG, need to fetch and compute
|
|
385
|
+
let sql = `SELECT ${this.escapeIdentifier(options.column)} FROM ${this.escapeIdentifier(options.table)}`;
|
|
386
|
+
const values = [];
|
|
387
|
+
if (options.where) {
|
|
388
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
389
|
+
sql += ` WHERE ${whereClause}`;
|
|
390
|
+
values.push(...whereParams);
|
|
391
|
+
}
|
|
392
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
393
|
+
const rows = result.rows;
|
|
394
|
+
if (rows.length === 0)
|
|
395
|
+
return 0;
|
|
396
|
+
const sum = rows.reduce((acc, row) => acc + (Number(row[options.column]) || 0), 0);
|
|
397
|
+
return sum / rows.length;
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
async min(options) {
|
|
404
|
+
var _a;
|
|
405
|
+
this.ensureConnected();
|
|
406
|
+
try {
|
|
407
|
+
// Use MIN function (CQL supports this)
|
|
408
|
+
let sql = `SELECT MIN(${this.escapeIdentifier(options.column)}) as min FROM ${this.escapeIdentifier(options.table)}`;
|
|
409
|
+
const values = [];
|
|
410
|
+
if (options.where) {
|
|
411
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
412
|
+
sql += ` WHERE ${whereClause}`;
|
|
413
|
+
values.push(...whereParams);
|
|
414
|
+
}
|
|
415
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
416
|
+
return (_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.min;
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
async max(options) {
|
|
423
|
+
var _a;
|
|
424
|
+
this.ensureConnected();
|
|
425
|
+
try {
|
|
426
|
+
// Use MAX function (CQL supports this)
|
|
427
|
+
let sql = `SELECT MAX(${this.escapeIdentifier(options.column)}) as max FROM ${this.escapeIdentifier(options.table)}`;
|
|
428
|
+
const values = [];
|
|
429
|
+
if (options.where) {
|
|
430
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
431
|
+
sql += ` WHERE ${whereClause}`;
|
|
432
|
+
values.push(...whereParams);
|
|
433
|
+
}
|
|
434
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
435
|
+
return (_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.max;
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
async aggregate(builtAggregation) {
|
|
442
|
+
this.ensureConnected();
|
|
443
|
+
try {
|
|
444
|
+
// Cassandra has limited aggregation support
|
|
445
|
+
// We'll execute and compute in memory
|
|
446
|
+
const options = builtAggregation.options;
|
|
447
|
+
let sql = `SELECT * FROM ${this.escapeIdentifier(options.table)}`;
|
|
448
|
+
const values = [];
|
|
449
|
+
if (options.where) {
|
|
450
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
451
|
+
sql += ` WHERE ${whereClause}`;
|
|
452
|
+
values.push(...whereParams);
|
|
453
|
+
}
|
|
454
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
455
|
+
const rows = result.rows;
|
|
456
|
+
const aggregateResult = {};
|
|
457
|
+
const operations = options.operations || {};
|
|
458
|
+
for (const [alias, op] of Object.entries(operations)) {
|
|
459
|
+
const operation = op;
|
|
460
|
+
if (operation.$COUNT) {
|
|
461
|
+
aggregateResult[alias] = rows.length;
|
|
462
|
+
}
|
|
463
|
+
else if (operation.$SUM) {
|
|
464
|
+
aggregateResult[alias] = rows.reduce((sum, row) => sum + (Number(row[operation.$SUM]) || 0), 0);
|
|
465
|
+
}
|
|
466
|
+
else if (operation.$AVG) {
|
|
467
|
+
const values = rows.map((row) => Number(row[operation.$AVG]) || 0);
|
|
468
|
+
aggregateResult[alias] = values.length > 0 ? values.reduce((a, b) => a + b, 0) / values.length : 0;
|
|
469
|
+
}
|
|
470
|
+
else if (operation.$MIN) {
|
|
471
|
+
const values = rows.map((row) => row[operation.$MIN]).filter((v) => v != null);
|
|
472
|
+
aggregateResult[alias] = values.length > 0 ? Math.min(...values) : null;
|
|
473
|
+
}
|
|
474
|
+
else if (operation.$MAX) {
|
|
475
|
+
const values = rows.map((row) => row[operation.$MAX]).filter((v) => v != null);
|
|
476
|
+
aggregateResult[alias] = values.length > 0 ? Math.max(...values) : null;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return aggregateResult;
|
|
480
|
+
}
|
|
481
|
+
catch (error) {
|
|
482
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
async groupBy(builtGroupBy) {
|
|
486
|
+
this.ensureConnected();
|
|
487
|
+
try {
|
|
488
|
+
// Cassandra doesn't support GROUP BY in the same way as SQL
|
|
489
|
+
// We need to fetch and group in memory
|
|
490
|
+
const options = builtGroupBy.options;
|
|
491
|
+
let sql = `SELECT * FROM ${this.escapeIdentifier(options.table)}`;
|
|
492
|
+
const values = [];
|
|
493
|
+
if (options.where) {
|
|
494
|
+
const { whereClause, whereParams } = this.buildWhereClause(options.where);
|
|
495
|
+
sql += ` WHERE ${whereClause}`;
|
|
496
|
+
values.push(...whereParams);
|
|
497
|
+
}
|
|
498
|
+
const result = await this.cassandraClient.execute(sql, values, { prepare: true });
|
|
499
|
+
const rows = result.rows;
|
|
500
|
+
// Group in memory
|
|
501
|
+
const groups = new Map();
|
|
502
|
+
const groupByColumns = options.groupBy || [];
|
|
503
|
+
for (const row of rows) {
|
|
504
|
+
const groupKey = groupByColumns.map((col) => String(row[col])).join('|');
|
|
505
|
+
if (!groups.has(groupKey)) {
|
|
506
|
+
groups.set(groupKey, []);
|
|
507
|
+
}
|
|
508
|
+
groups.get(groupKey).push(row);
|
|
509
|
+
}
|
|
510
|
+
// Compute aggregations
|
|
511
|
+
const results = [];
|
|
512
|
+
const operations = options.operations || {};
|
|
513
|
+
for (const [groupKey, groupRows] of groups) {
|
|
514
|
+
const group = {};
|
|
515
|
+
const keyParts = groupKey.split('|');
|
|
516
|
+
groupByColumns.forEach((col, i) => {
|
|
517
|
+
group[col] = keyParts[i];
|
|
518
|
+
});
|
|
519
|
+
const aggregates = {};
|
|
520
|
+
for (const [alias, op] of Object.entries(operations)) {
|
|
521
|
+
const operation = op;
|
|
522
|
+
if (operation.$COUNT) {
|
|
523
|
+
aggregates[alias] = groupRows.length;
|
|
524
|
+
}
|
|
525
|
+
else if (operation.$SUM) {
|
|
526
|
+
aggregates[alias] = groupRows.reduce((sum, row) => sum + (Number(row[operation.$SUM]) || 0), 0);
|
|
527
|
+
}
|
|
528
|
+
else if (operation.$AVG) {
|
|
529
|
+
const values = groupRows.map((row) => Number(row[operation.$AVG]) || 0);
|
|
530
|
+
aggregates[alias] = values.length > 0 ? values.reduce((a, b) => a + b, 0) / values.length : 0;
|
|
531
|
+
}
|
|
532
|
+
else if (operation.$MIN) {
|
|
533
|
+
const values = groupRows.map((row) => row[operation.$MIN]).filter((v) => v != null);
|
|
534
|
+
aggregates[alias] = values.length > 0 ? Math.min(...values) : null;
|
|
535
|
+
}
|
|
536
|
+
else if (operation.$MAX) {
|
|
537
|
+
const values = groupRows.map((row) => row[operation.$MAX]).filter((v) => v != null);
|
|
538
|
+
aggregates[alias] = values.length > 0 ? Math.max(...values) : null;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
results.push({ group, aggregates: aggregates });
|
|
542
|
+
}
|
|
543
|
+
return results;
|
|
544
|
+
}
|
|
545
|
+
catch (error) {
|
|
546
|
+
throw database_error_1.DatabaseError.fromDatabaseError(error, 'cassandra');
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
// ==================== TRANSACTION METHODS ====================
|
|
550
|
+
//
|
|
551
|
+
// ⚠️ IMPORTANT: Cassandra Transaction Limitations
|
|
552
|
+
//
|
|
553
|
+
// Cassandra does NOT support traditional ACID transactions across multiple statements.
|
|
554
|
+
// What Cassandra offers instead:
|
|
555
|
+
//
|
|
556
|
+
// 1. Lightweight Transactions (LWT): Single-statement atomicity with IF conditions
|
|
557
|
+
// Example: INSERT INTO users (id, email) VALUES (?, ?) IF NOT EXISTS
|
|
558
|
+
//
|
|
559
|
+
// 2. Batched Writes: Atomic writes to a single partition (LOGGED BATCH)
|
|
560
|
+
// Note: Batches across partitions are NOT atomic
|
|
561
|
+
//
|
|
562
|
+
// 3. Per-Statement Atomicity: Each CQL statement is atomic on its own
|
|
563
|
+
//
|
|
564
|
+
// The methods below provide a transaction-like interface for API compatibility,
|
|
565
|
+
// but they DO NOT provide multi-statement ACID guarantees. Operations are
|
|
566
|
+
// collected but not executed atomically as a group.
|
|
567
|
+
//
|
|
568
|
+
// For true transactional semantics, consider:
|
|
569
|
+
// - Using a different database for transactional workloads
|
|
570
|
+
// - Designing your data model for single-partition operations
|
|
571
|
+
// - Implementing application-level compensation patterns (Saga pattern)
|
|
572
|
+
//
|
|
573
|
+
async beginTransaction(isolationLevel, readOnly, timeout) {
|
|
574
|
+
// WARNING: This creates a transaction context for API compatibility only.
|
|
575
|
+
// Cassandra does not support multi-statement transactions.
|
|
576
|
+
// Operations collected here will NOT be executed atomically.
|
|
577
|
+
console.warn('[Cassandra] beginTransaction called, but Cassandra does not support ' +
|
|
578
|
+
'multi-statement ACID transactions. Operations will be executed individually. ' +
|
|
579
|
+
'Consider using Lightweight Transactions (LWT) with IF conditions for single-statement atomicity.');
|
|
580
|
+
const id = `cass_lwt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
581
|
+
return {
|
|
582
|
+
id,
|
|
583
|
+
databaseType: 'cassandra',
|
|
584
|
+
isolationLevel: enums_1.IsolationLevel.SERIALIZABLE, // LWT provides serializable-like semantics for single statements
|
|
585
|
+
readOnly: readOnly || false,
|
|
586
|
+
timeout,
|
|
587
|
+
startedAt: new Date(),
|
|
588
|
+
client: {
|
|
589
|
+
operations: [],
|
|
590
|
+
},
|
|
591
|
+
savepoints: new Map(),
|
|
592
|
+
status: 'active',
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
async commitTransaction(context) {
|
|
596
|
+
// WARNING: This does not provide atomic commit across multiple operations.
|
|
597
|
+
// Each operation was (or should be) executed individually.
|
|
598
|
+
// This method only updates the context status for API compatibility.
|
|
599
|
+
console.warn('[Cassandra] commitTransaction called, but Cassandra does not support ' +
|
|
600
|
+
'atomic commits across multiple statements. Status updated for API compatibility only.');
|
|
601
|
+
context.status = 'committed';
|
|
602
|
+
}
|
|
603
|
+
async rollbackTransaction(context) {
|
|
604
|
+
// WARNING: Cassandra cannot rollback already-executed operations.
|
|
605
|
+
// This only clears pending operations that haven't been executed yet.
|
|
606
|
+
console.warn('[Cassandra] rollbackTransaction called, but Cassandra cannot rollback ' +
|
|
607
|
+
'already-executed operations. Only pending operations are cleared.');
|
|
608
|
+
context.client.operations = [];
|
|
609
|
+
context.status = 'rolled_back';
|
|
610
|
+
}
|
|
611
|
+
async createSavepoint(context, name) {
|
|
612
|
+
throw new database_error_1.DatabaseError('Cassandra does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
|
|
613
|
+
}
|
|
614
|
+
async releaseSavepoint(context, savepoint) {
|
|
615
|
+
throw new database_error_1.DatabaseError('Cassandra does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
|
|
616
|
+
}
|
|
617
|
+
async rollbackToSavepoint(context, savepoint) {
|
|
618
|
+
throw new database_error_1.DatabaseError('Cassandra does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
|
|
619
|
+
}
|
|
620
|
+
supportsSavepoints() {
|
|
621
|
+
return false;
|
|
622
|
+
}
|
|
623
|
+
// ==================== SCHEMA METHODS ====================
|
|
624
|
+
async createTable(definition, options) {
|
|
625
|
+
this.ensureConnected();
|
|
626
|
+
try {
|
|
627
|
+
const columnDefs = definition.columns.map(col => this.buildColumnDefinition(col)).join(', ');
|
|
628
|
+
// Find primary key
|
|
629
|
+
const pkColumns = definition.columns.filter(c => c.primaryKey);
|
|
630
|
+
if (pkColumns.length === 0) {
|
|
631
|
+
throw new Error('Cassandra tables require at least one primary key column');
|
|
632
|
+
}
|
|
633
|
+
const primaryKeyDef = `PRIMARY KEY (${pkColumns.map(c => c.name).join(', ')})`;
|
|
634
|
+
let sql = `CREATE TABLE`;
|
|
635
|
+
if (options === null || options === void 0 ? void 0 : options.ifNotExists)
|
|
636
|
+
sql += ' IF NOT EXISTS';
|
|
637
|
+
sql += ` ${this.escapeIdentifier(definition.name)} (${columnDefs}, ${primaryKeyDef})`;
|
|
638
|
+
await this.cassandraClient.execute(sql);
|
|
639
|
+
// Create indexes
|
|
640
|
+
if (definition.indexes) {
|
|
641
|
+
for (const index of definition.indexes) {
|
|
642
|
+
await this.createIndex(index);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
catch (error) {
|
|
647
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to create table: ${error.message}`, error);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
async alterTable(tableName, operations) {
|
|
651
|
+
this.ensureConnected();
|
|
652
|
+
try {
|
|
653
|
+
for (const op of operations) {
|
|
654
|
+
let sql = `ALTER TABLE ${this.escapeIdentifier(tableName)}`;
|
|
655
|
+
switch (op.type) {
|
|
656
|
+
case 'ADD':
|
|
657
|
+
if (op.column) {
|
|
658
|
+
sql += ` ADD ${op.column.name} ${this.getColumnTypeString(op.column.type, op.column)}`;
|
|
659
|
+
}
|
|
660
|
+
break;
|
|
661
|
+
case 'DROP':
|
|
662
|
+
if (op.columnName) {
|
|
663
|
+
sql += ` DROP ${op.columnName}`;
|
|
664
|
+
}
|
|
665
|
+
break;
|
|
666
|
+
case 'RENAME':
|
|
667
|
+
if (op.oldName && op.newName) {
|
|
668
|
+
sql += ` RENAME ${op.oldName} TO ${op.newName}`;
|
|
669
|
+
}
|
|
670
|
+
break;
|
|
671
|
+
case 'MODIFY':
|
|
672
|
+
throw new database_error_1.DatabaseError('Cassandra does not support modifying column types. Drop and recreate the column instead.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
|
|
673
|
+
}
|
|
674
|
+
await this.cassandraClient.execute(sql);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
catch (error) {
|
|
678
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to alter table: ${error.message}`, error);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
async dropTable(tableName, ifExists, cascade) {
|
|
682
|
+
this.ensureConnected();
|
|
683
|
+
try {
|
|
684
|
+
let sql = 'DROP TABLE';
|
|
685
|
+
if (ifExists)
|
|
686
|
+
sql += ' IF EXISTS';
|
|
687
|
+
sql += ` ${this.escapeIdentifier(tableName)}`;
|
|
688
|
+
await this.cassandraClient.execute(sql);
|
|
689
|
+
}
|
|
690
|
+
catch (error) {
|
|
691
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to drop table: ${error.message}`, error);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
async listTables() {
|
|
695
|
+
this.ensureConnected();
|
|
696
|
+
try {
|
|
697
|
+
const result = await this.cassandraClient.execute(`SELECT table_name FROM system_schema.tables WHERE keyspace_name = ?`, [this.keyspace]);
|
|
698
|
+
return result.rows.map((r) => r.table_name);
|
|
699
|
+
}
|
|
700
|
+
catch (error) {
|
|
701
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to list tables: ${error.message}`, error);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
async tableExists(tableName) {
|
|
705
|
+
this.ensureConnected();
|
|
706
|
+
try {
|
|
707
|
+
const result = await this.cassandraClient.execute(`SELECT table_name FROM system_schema.tables WHERE keyspace_name = ? AND table_name = ?`, [this.keyspace, tableName]);
|
|
708
|
+
return result.rows.length > 0;
|
|
709
|
+
}
|
|
710
|
+
catch (error) {
|
|
711
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to check table existence: ${error.message}`, error);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
async getTableSchema(tableName) {
|
|
715
|
+
this.ensureConnected();
|
|
716
|
+
try {
|
|
717
|
+
// Get columns
|
|
718
|
+
const columnsResult = await this.cassandraClient.execute(`SELECT column_name, type, kind FROM system_schema.columns WHERE keyspace_name = ? AND table_name = ?`, [this.keyspace, tableName]);
|
|
719
|
+
const columns = columnsResult.rows.map((row) => ({
|
|
720
|
+
name: row.column_name,
|
|
721
|
+
type: row.type,
|
|
722
|
+
nullable: true,
|
|
723
|
+
isPrimaryKey: row.kind === 'partition_key' || row.kind === 'clustering',
|
|
724
|
+
isUnique: false,
|
|
725
|
+
isAutoIncrement: false,
|
|
726
|
+
}));
|
|
727
|
+
// Get indexes
|
|
728
|
+
const indexes = await this.listIndexes(tableName);
|
|
729
|
+
// Get primary key
|
|
730
|
+
const primaryKey = columns
|
|
731
|
+
.filter(c => c.isPrimaryKey)
|
|
732
|
+
.map(c => c.name);
|
|
733
|
+
return {
|
|
734
|
+
name: tableName,
|
|
735
|
+
schema: this.keyspace,
|
|
736
|
+
columns,
|
|
737
|
+
indexes,
|
|
738
|
+
constraints: [],
|
|
739
|
+
primaryKey,
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
catch (error) {
|
|
743
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to get table schema: ${error.message}`, error);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
async createIndex(index, ifNotExists, concurrent) {
|
|
747
|
+
this.ensureConnected();
|
|
748
|
+
try {
|
|
749
|
+
// Cassandra supports secondary indexes on single columns
|
|
750
|
+
if (index.columns.length !== 1) {
|
|
751
|
+
throw new database_error_1.DatabaseError('Cassandra only supports single-column secondary indexes', enums_1.DatabaseErrorType.NOT_SUPPORTED);
|
|
752
|
+
}
|
|
753
|
+
let sql = 'CREATE INDEX';
|
|
754
|
+
if (ifNotExists)
|
|
755
|
+
sql += ' IF NOT EXISTS';
|
|
756
|
+
sql += ` ${index.name} ON ${this.escapeIdentifier(index.table)} (${index.columns[0].name})`;
|
|
757
|
+
await this.cassandraClient.execute(sql);
|
|
758
|
+
}
|
|
759
|
+
catch (error) {
|
|
760
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to create index: ${error.message}`, error);
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
async dropIndex(tableName, indexName, ifExists, concurrent, cascade) {
|
|
764
|
+
this.ensureConnected();
|
|
765
|
+
try {
|
|
766
|
+
let sql = 'DROP INDEX';
|
|
767
|
+
if (ifExists)
|
|
768
|
+
sql += ' IF EXISTS';
|
|
769
|
+
sql += ` ${indexName}`;
|
|
770
|
+
await this.cassandraClient.execute(sql);
|
|
771
|
+
}
|
|
772
|
+
catch (error) {
|
|
773
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to drop index: ${error.message}`, error);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
async listIndexes(tableName, includeSystem) {
|
|
777
|
+
this.ensureConnected();
|
|
778
|
+
try {
|
|
779
|
+
const result = await this.cassandraClient.execute(`SELECT index_name, options FROM system_schema.indexes WHERE keyspace_name = ? AND table_name = ?`, [this.keyspace, tableName]);
|
|
780
|
+
return result.rows.map((row) => {
|
|
781
|
+
var _a;
|
|
782
|
+
return ({
|
|
783
|
+
name: row.index_name,
|
|
784
|
+
table: tableName,
|
|
785
|
+
columns: [((_a = row.options) === null || _a === void 0 ? void 0 : _a.target) || ''],
|
|
786
|
+
unique: false,
|
|
787
|
+
primaryKey: false,
|
|
788
|
+
type: 'SECONDARY',
|
|
789
|
+
});
|
|
790
|
+
});
|
|
791
|
+
}
|
|
792
|
+
catch (error) {
|
|
793
|
+
throw database_error_1.DatabaseError.schemaError(`Failed to list indexes: ${error.message}`, error);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
async getIndexStatistics(tableName, indexName) {
|
|
797
|
+
// Cassandra doesn't provide detailed index statistics via CQL
|
|
798
|
+
return [];
|
|
799
|
+
}
|
|
800
|
+
// ==================== UTILITY METHODS ====================
|
|
801
|
+
escapeIdentifier(identifier) {
|
|
802
|
+
// Cassandra uses double quotes for identifiers with special chars
|
|
803
|
+
if (/[^a-zA-Z0-9_]/.test(identifier)) {
|
|
804
|
+
return `"${identifier.replace(/"/g, '""')}"`;
|
|
805
|
+
}
|
|
806
|
+
return identifier;
|
|
807
|
+
}
|
|
808
|
+
escapeValue(value) {
|
|
809
|
+
if (value === null || value === undefined) {
|
|
810
|
+
return 'NULL';
|
|
811
|
+
}
|
|
812
|
+
if (typeof value === 'number') {
|
|
813
|
+
return String(value);
|
|
814
|
+
}
|
|
815
|
+
if (typeof value === 'boolean') {
|
|
816
|
+
return value ? 'true' : 'false';
|
|
817
|
+
}
|
|
818
|
+
if (value instanceof Date) {
|
|
819
|
+
return `'${value.toISOString()}'`;
|
|
820
|
+
}
|
|
821
|
+
if (typeof value === 'object') {
|
|
822
|
+
return `'${JSON.stringify(value).replace(/'/g, "''")}'`;
|
|
823
|
+
}
|
|
824
|
+
return `'${String(value).replace(/'/g, "''")}'`;
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Check if value is an update operator object
|
|
828
|
+
*/
|
|
829
|
+
isUpdateOperator(value) {
|
|
830
|
+
if (!value || typeof value !== 'object')
|
|
831
|
+
return false;
|
|
832
|
+
const operators = ['$INC', '$DEC', '$MUL', '$MIN', '$MAX', '$SET', '$UNSET', '$PUSH', '$PULL', '$ADDTOSET'];
|
|
833
|
+
return operators.some(op => op in value);
|
|
834
|
+
}
|
|
835
|
+
getParameterPlaceholder(index) {
|
|
836
|
+
return '?';
|
|
837
|
+
}
|
|
838
|
+
getColumnTypeString(columnType, options) {
|
|
839
|
+
const typeMap = {
|
|
840
|
+
[enums_1.ColumnType.INTEGER]: 'int',
|
|
841
|
+
[enums_1.ColumnType.BIGINT]: 'bigint',
|
|
842
|
+
[enums_1.ColumnType.SMALLINT]: 'smallint',
|
|
843
|
+
[enums_1.ColumnType.TINYINT]: 'tinyint',
|
|
844
|
+
[enums_1.ColumnType.FLOAT]: 'float',
|
|
845
|
+
[enums_1.ColumnType.DOUBLE]: 'double',
|
|
846
|
+
[enums_1.ColumnType.DECIMAL]: 'decimal',
|
|
847
|
+
[enums_1.ColumnType.STRING]: 'text',
|
|
848
|
+
[enums_1.ColumnType.TEXT]: 'text',
|
|
849
|
+
[enums_1.ColumnType.VARCHAR]: 'varchar',
|
|
850
|
+
[enums_1.ColumnType.BOOLEAN]: 'boolean',
|
|
851
|
+
[enums_1.ColumnType.DATE]: 'date',
|
|
852
|
+
[enums_1.ColumnType.TIME]: 'time',
|
|
853
|
+
[enums_1.ColumnType.DATETIME]: 'timestamp',
|
|
854
|
+
[enums_1.ColumnType.TIMESTAMP]: 'timestamp',
|
|
855
|
+
[enums_1.ColumnType.UUID]: 'uuid',
|
|
856
|
+
[enums_1.ColumnType.TIMEUUID]: 'timeuuid',
|
|
857
|
+
[enums_1.ColumnType.BINARY]: 'blob',
|
|
858
|
+
[enums_1.ColumnType.BLOB]: 'blob',
|
|
859
|
+
[enums_1.ColumnType.COUNTER]: 'counter',
|
|
860
|
+
[enums_1.ColumnType.VARINT]: 'varint',
|
|
861
|
+
[enums_1.ColumnType.INET]: 'inet',
|
|
862
|
+
};
|
|
863
|
+
return typeMap[columnType] || columnType.toLowerCase();
|
|
864
|
+
}
|
|
865
|
+
getSupportedFeatures() {
|
|
866
|
+
return [
|
|
867
|
+
base_adapter_1.DatabaseFeature.TTL,
|
|
868
|
+
base_adapter_1.DatabaseFeature.SECONDARY_INDEXES,
|
|
869
|
+
base_adapter_1.DatabaseFeature.BATCH_OPERATIONS,
|
|
870
|
+
base_adapter_1.DatabaseFeature.ATOMIC_COUNTERS,
|
|
871
|
+
base_adapter_1.DatabaseFeature.UUID,
|
|
872
|
+
];
|
|
873
|
+
}
|
|
874
|
+
parseError(error) {
|
|
875
|
+
var _a, _b, _c, _d;
|
|
876
|
+
const code = error.code;
|
|
877
|
+
let type = enums_1.DatabaseErrorType.UNKNOWN_ERROR;
|
|
878
|
+
// Map Cassandra error codes
|
|
879
|
+
if (error.name === 'NoHostAvailableError') {
|
|
880
|
+
type = enums_1.DatabaseErrorType.CONNECTION_ERROR;
|
|
881
|
+
}
|
|
882
|
+
else if (error.name === 'AuthenticationError') {
|
|
883
|
+
type = enums_1.DatabaseErrorType.AUTHENTICATION_ERROR;
|
|
884
|
+
}
|
|
885
|
+
else if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Keyspace')) && ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('does not exist'))) {
|
|
886
|
+
type = enums_1.DatabaseErrorType.NOT_FOUND;
|
|
887
|
+
}
|
|
888
|
+
else if ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('already exists')) {
|
|
889
|
+
type = enums_1.DatabaseErrorType.UNIQUE_VIOLATION;
|
|
890
|
+
}
|
|
891
|
+
else if ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('syntax error')) {
|
|
892
|
+
type = enums_1.DatabaseErrorType.QUERY_ERROR;
|
|
893
|
+
}
|
|
894
|
+
return {
|
|
895
|
+
type,
|
|
896
|
+
message: error.message || 'Unknown database error',
|
|
897
|
+
code,
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
// ==================== PRIVATE HELPER METHODS ====================
|
|
901
|
+
ensureConnected() {
|
|
902
|
+
if (!this.connected || !this.cassandraClient) {
|
|
903
|
+
throw new database_error_1.DatabaseError('Not connected to Cassandra', enums_1.DatabaseErrorType.CONNECTION_ERROR);
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
async getClusterVersion() {
|
|
907
|
+
var _a;
|
|
908
|
+
try {
|
|
909
|
+
const result = await this.cassandraClient.execute('SELECT release_version FROM system.local');
|
|
910
|
+
return ((_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.release_version) || 'unknown';
|
|
911
|
+
}
|
|
912
|
+
catch (_b) {
|
|
913
|
+
return 'unknown';
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
buildWhereClause(where) {
|
|
917
|
+
const clauses = [];
|
|
918
|
+
const params = [];
|
|
919
|
+
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);
|
|
924
|
+
}
|
|
925
|
+
else if (key === '$OR') {
|
|
926
|
+
// Note: Cassandra has limited OR support - only within the same partition key
|
|
927
|
+
// This will generate the OR clause but may fail at runtime if not on partition key
|
|
928
|
+
const orClauses = [];
|
|
929
|
+
for (const [orKey, orValue] of Object.entries(value)) {
|
|
930
|
+
const orResult = this.buildWhereClause({ [orKey]: orValue });
|
|
931
|
+
orClauses.push(orResult.whereClause);
|
|
932
|
+
params.push(...orResult.whereParams);
|
|
933
|
+
}
|
|
934
|
+
clauses.push(`(${orClauses.join(' OR ')})`);
|
|
935
|
+
}
|
|
936
|
+
else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
|
|
937
|
+
for (const [op, opValue] of Object.entries(value)) {
|
|
938
|
+
const escapedKey = this.escapeIdentifier(key);
|
|
939
|
+
switch (op) {
|
|
940
|
+
case '$EQ':
|
|
941
|
+
clauses.push(`${escapedKey} = ?`);
|
|
942
|
+
params.push(opValue);
|
|
943
|
+
break;
|
|
944
|
+
case '$NE':
|
|
945
|
+
case '$NOT':
|
|
946
|
+
clauses.push(`${escapedKey} != ?`);
|
|
947
|
+
params.push(opValue);
|
|
948
|
+
break;
|
|
949
|
+
case '$GT':
|
|
950
|
+
clauses.push(`${escapedKey} > ?`);
|
|
951
|
+
params.push(opValue);
|
|
952
|
+
break;
|
|
953
|
+
case '$GTE':
|
|
954
|
+
clauses.push(`${escapedKey} >= ?`);
|
|
955
|
+
params.push(opValue);
|
|
956
|
+
break;
|
|
957
|
+
case '$LT':
|
|
958
|
+
clauses.push(`${escapedKey} < ?`);
|
|
959
|
+
params.push(opValue);
|
|
960
|
+
break;
|
|
961
|
+
case '$LTE':
|
|
962
|
+
clauses.push(`${escapedKey} <= ?`);
|
|
963
|
+
params.push(opValue);
|
|
964
|
+
break;
|
|
965
|
+
case '$IN':
|
|
966
|
+
clauses.push(`${escapedKey} IN ?`);
|
|
967
|
+
params.push(opValue);
|
|
968
|
+
break;
|
|
969
|
+
case '$NOT_IN':
|
|
970
|
+
// Cassandra doesn't support NOT IN or multiple != conditions in WHERE clause
|
|
971
|
+
// Throw an explicit error to prevent silent failures
|
|
972
|
+
throw new database_error_1.DatabaseError(`$NOT_IN operator is not supported in Cassandra. ` +
|
|
973
|
+
`Cassandra does not allow multiple inequality conditions on the same column. ` +
|
|
974
|
+
`Consider filtering results client-side or restructuring your query.`, enums_1.DatabaseErrorType.QUERY_ERROR);
|
|
975
|
+
case '$LIKE':
|
|
976
|
+
// Cassandra uses LIKE with SASI indexes or CONTAINS for collections
|
|
977
|
+
clauses.push(`${escapedKey} LIKE ?`);
|
|
978
|
+
params.push(opValue);
|
|
979
|
+
break;
|
|
980
|
+
case '$IS_NULL':
|
|
981
|
+
// Cassandra doesn't have IS NULL syntax, use = null
|
|
982
|
+
if (opValue) {
|
|
983
|
+
clauses.push(`${escapedKey} = null`);
|
|
984
|
+
}
|
|
985
|
+
break;
|
|
986
|
+
case '$IS_NOT_NULL':
|
|
987
|
+
// Cassandra doesn't have IS NOT NULL, use != null
|
|
988
|
+
if (opValue) {
|
|
989
|
+
clauses.push(`${escapedKey} != null`);
|
|
990
|
+
}
|
|
991
|
+
break;
|
|
992
|
+
case '$CONTAINS':
|
|
993
|
+
clauses.push(`${escapedKey} CONTAINS ?`);
|
|
994
|
+
params.push(opValue);
|
|
995
|
+
break;
|
|
996
|
+
case '$CONTAINS_KEY':
|
|
997
|
+
// For map types in Cassandra
|
|
998
|
+
clauses.push(`${escapedKey} CONTAINS KEY ?`);
|
|
999
|
+
params.push(opValue);
|
|
1000
|
+
break;
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
else {
|
|
1005
|
+
clauses.push(`${this.escapeIdentifier(key)} = ?`);
|
|
1006
|
+
params.push(value);
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
return {
|
|
1010
|
+
whereClause: clauses.join(' AND '),
|
|
1011
|
+
whereParams: params,
|
|
1012
|
+
};
|
|
1013
|
+
}
|
|
1014
|
+
buildColumnDefinition(column) {
|
|
1015
|
+
return `${column.name} ${this.getColumnTypeString(column.type, column)}`;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
exports.CassandraAdapter = CassandraAdapter;
|
|
1019
|
+
//# sourceMappingURL=cassandra.adapter.js.map
|