@ductape/sdk 0.0.4-v59 → 0.0.4-v60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/agents.service.d.ts +8 -2
- package/dist/agents/agents.service.js +5 -0
- package/dist/agents/agents.service.js.map +1 -1
- package/dist/agents/types/agents.types.d.ts +2 -0
- package/dist/agents/types/agents.types.js.map +1 -1
- package/dist/agents/vector-store-adapter.js +5 -5
- package/dist/agents/vector-store-adapter.js.map +1 -1
- package/dist/api/services/appApi.service.d.ts +3 -3
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +1 -1
- package/dist/api/services/productsApi.service.js +20 -13
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/secretsApi.service.d.ts +12 -0
- package/dist/api/services/secretsApi.service.js +30 -2
- package/dist/api/services/secretsApi.service.js.map +1 -1
- package/dist/api/services/workspaceApi.service.d.ts +8 -0
- package/dist/api/services/workspaceApi.service.js +20 -0
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +2 -0
- package/dist/api/urls.js +10 -15
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/auth.utils.d.ts +1 -3
- package/dist/api/utils/auth.utils.js.map +1 -1
- package/dist/apps/utils/oauth-manager.js +27 -3
- package/dist/apps/utils/oauth-manager.js.map +1 -1
- package/dist/brokers/brokers.service.d.ts +8 -0
- package/dist/brokers/brokers.service.js +50 -4
- package/dist/brokers/brokers.service.js.map +1 -1
- package/dist/brokers/types/index.d.ts +26 -0
- package/dist/brokers/utils/providers/kafka.service.d.ts +7 -0
- package/dist/brokers/utils/providers/kafka.service.js +102 -23
- package/dist/brokers/utils/providers/kafka.service.js.map +1 -1
- package/dist/brokers/utils/providers/rabbitmq.service.d.ts +2 -1
- package/dist/brokers/utils/providers/rabbitmq.service.js +99 -15
- package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -1
- package/dist/database/adapters/cassandra.adapter.d.ts +1 -0
- package/dist/database/adapters/cassandra.adapter.js +100 -44
- package/dist/database/adapters/cassandra.adapter.js.map +1 -1
- package/dist/database/adapters/dynamodb.adapter.d.ts +1 -0
- package/dist/database/adapters/dynamodb.adapter.js +89 -20
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
- package/dist/database/adapters/mongodb.adapter.d.ts +1 -0
- package/dist/database/adapters/mongodb.adapter.js +123 -45
- package/dist/database/adapters/mongodb.adapter.js.map +1 -1
- package/dist/database/adapters/mysql.adapter.d.ts +1 -0
- package/dist/database/adapters/mysql.adapter.js +125 -48
- package/dist/database/adapters/mysql.adapter.js.map +1 -1
- package/dist/database/adapters/postgresql.adapter.d.ts +5 -0
- package/dist/database/adapters/postgresql.adapter.js +151 -50
- package/dist/database/adapters/postgresql.adapter.js.map +1 -1
- package/dist/database/databases.service.d.ts +15 -1
- package/dist/database/databases.service.js +143 -2
- package/dist/database/databases.service.js.map +1 -1
- package/dist/database/operators/aggregation-builder.d.ts +11 -8
- package/dist/database/operators/aggregation-builder.js +184 -89
- package/dist/database/operators/aggregation-builder.js.map +1 -1
- package/dist/database/operators/query-builder.d.ts +23 -19
- package/dist/database/operators/query-builder.js +77 -45
- package/dist/database/operators/query-builder.js.map +1 -1
- package/dist/database/types/aggregation.interface.d.ts +21 -15
- package/dist/database/types/query.interface.d.ts +27 -21
- package/dist/database/types/write.interface.d.ts +20 -12
- package/dist/graph/adapters/arangodb.adapter.js +61 -22
- package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
- package/dist/graph/adapters/memgraph.adapter.js +22 -16
- package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
- package/dist/graph/adapters/neo4j.adapter.js +51 -21
- package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
- package/dist/graph/adapters/neptune.adapter.js +32 -16
- package/dist/graph/adapters/neptune.adapter.js.map +1 -1
- package/dist/graph/graphs.service.d.ts +24 -2
- package/dist/graph/graphs.service.js +238 -28
- package/dist/graph/graphs.service.js.map +1 -1
- package/dist/graph/types/connection.interface.d.ts +8 -0
- package/dist/graph/types/query.interface.d.ts +21 -14
- package/dist/index.d.ts +367 -20
- package/dist/index.js +510 -48
- package/dist/index.js.map +1 -1
- package/dist/inputs/inputs.service.d.ts +1 -1
- package/dist/notifications/notifications.service.d.ts +7 -2
- package/dist/notifications/notifications.service.js +2 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +5 -1
- package/dist/processor/services/processor.service.js +35 -2
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/products/services/products.service.d.ts +76 -2
- package/dist/products/services/products.service.js +984 -27
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productAgent.validator.js +52 -4
- package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +1 -7
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productVector.validator.js +4 -4
- package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +4 -1
- package/dist/resilience/fallback.service.js +8 -10
- package/dist/resilience/fallback.service.js.map +1 -1
- package/dist/resilience/healthcheck.service.d.ts +6 -1
- package/dist/resilience/healthcheck.service.js +9 -0
- package/dist/resilience/healthcheck.service.js.map +1 -1
- package/dist/resilience/quota.service.d.ts +4 -1
- package/dist/resilience/quota.service.js +2 -0
- package/dist/resilience/quota.service.js.map +1 -1
- package/dist/resilience/resilience.service.d.ts +4 -1
- package/dist/resilience/resilience.service.js.map +1 -1
- package/dist/secrets/secrets.service.d.ts +11 -1
- package/dist/secrets/secrets.service.js +109 -10
- package/dist/secrets/secrets.service.js.map +1 -1
- package/dist/storage/storage.service.d.ts +4 -1
- package/dist/storage/storage.service.js +6 -1
- package/dist/storage/storage.service.js.map +1 -1
- package/dist/test/index.js +1 -3
- package/dist/test/index.js.map +1 -1
- package/dist/test/test.broker.kafka.d.ts +1 -0
- package/dist/test/test.broker.kafka.js +172 -0
- package/dist/test/test.broker.kafka.js.map +1 -0
- package/dist/test/test.broker.nats.d.ts +1 -0
- package/dist/test/test.broker.nats.js +193 -0
- package/dist/test/test.broker.nats.js.map +1 -0
- package/dist/test/test.broker.pubsub.d.ts +1 -0
- package/dist/test/test.broker.pubsub.js +171 -0
- package/dist/test/test.broker.pubsub.js.map +1 -0
- package/dist/test/test.broker.rabbitmq.d.ts +1 -0
- package/dist/test/test.broker.rabbitmq.js +164 -0
- package/dist/test/test.broker.rabbitmq.js.map +1 -0
- package/dist/test/test.broker.redis.d.ts +1 -0
- package/dist/test/test.broker.redis.js +168 -0
- package/dist/test/test.broker.redis.js.map +1 -0
- package/dist/test/test.broker.sqs.d.ts +1 -0
- package/dist/test/test.broker.sqs.js +158 -0
- package/dist/test/test.broker.sqs.js.map +1 -0
- package/dist/test/test.caches.d.ts +1 -0
- package/dist/test/test.caches.js +231 -0
- package/dist/test/test.caches.js.map +1 -0
- package/dist/test/test.database.dynamo.d.ts +1 -0
- package/dist/test/test.database.dynamo.js +265 -0
- package/dist/test/test.database.dynamo.js.map +1 -0
- package/dist/test/test.database.js +2 -2
- package/dist/test/test.database.js.map +1 -1
- package/dist/test/test.database.mongo.d.ts +1 -0
- package/dist/test/test.database.mongo.js +371 -0
- package/dist/test/test.database.mongo.js.map +1 -0
- package/dist/test/test.database.mysql.d.ts +1 -0
- package/dist/test/test.database.mysql.js +415 -0
- package/dist/test/test.database.mysql.js.map +1 -0
- package/dist/test/test.database.postgres.d.ts +1 -0
- package/dist/test/test.database.postgres.js +412 -0
- package/dist/test/test.database.postgres.js.map +1 -0
- package/dist/test/test.email.brevo.d.ts +1 -0
- package/dist/test/test.email.brevo.js +326 -0
- package/dist/test/test.email.brevo.js.map +1 -0
- package/dist/test/test.email.mailgun.d.ts +1 -0
- package/dist/test/test.email.mailgun.js +352 -0
- package/dist/test/test.email.mailgun.js.map +1 -0
- package/dist/test/test.email.postmark.d.ts +1 -0
- package/dist/test/test.email.postmark.js +316 -0
- package/dist/test/test.email.postmark.js.map +1 -0
- package/dist/test/test.email.sendgrid.d.ts +1 -0
- package/dist/test/test.email.sendgrid.js +365 -0
- package/dist/test/test.email.sendgrid.js.map +1 -0
- package/dist/test/test.email.smtp.d.ts +1 -0
- package/dist/test/test.email.smtp.js +323 -0
- package/dist/test/test.email.smtp.js.map +1 -0
- package/dist/test/test.graph.arangodb.d.ts +1 -0
- package/dist/test/test.graph.arangodb.js +358 -0
- package/dist/test/test.graph.arangodb.js.map +1 -0
- package/dist/test/test.graph.memgraph.d.ts +1 -0
- package/dist/test/test.graph.memgraph.js +320 -0
- package/dist/test/test.graph.memgraph.js.map +1 -0
- package/dist/test/test.graph.neo4j.d.ts +1 -0
- package/dist/test/test.graph.neo4j.js +218 -0
- package/dist/test/test.graph.neo4j.js.map +1 -0
- package/dist/test/test.graph.neptune.d.ts +1 -0
- package/dist/test/test.graph.neptune.js +331 -0
- package/dist/test/test.graph.neptune.js.map +1 -0
- package/dist/test/test.notifications.d.ts +1 -0
- package/dist/test/test.notifications.js +198 -0
- package/dist/test/test.notifications.js.map +1 -0
- package/dist/test/test.push.expo.d.ts +1 -0
- package/dist/test/test.push.expo.js +442 -0
- package/dist/test/test.push.expo.js.map +1 -0
- package/dist/test/test.push.firebase.d.ts +1 -0
- package/dist/test/test.push.firebase.js +409 -0
- package/dist/test/test.push.firebase.js.map +1 -0
- package/dist/test/test.session.d.ts +1 -0
- package/dist/test/test.session.js +299 -0
- package/dist/test/test.session.js.map +1 -0
- package/dist/test/test.sms.nexmo.d.ts +1 -0
- package/dist/test/test.sms.nexmo.js +278 -0
- package/dist/test/test.sms.nexmo.js.map +1 -0
- package/dist/test/test.sms.twilio.d.ts +1 -0
- package/dist/test/test.sms.twilio.js +275 -0
- package/dist/test/test.sms.twilio.js.map +1 -0
- package/dist/test/test.storage.js +169 -299
- package/dist/test/test.storage.js.map +1 -1
- package/dist/test/test.vector.pinecone.d.ts +1 -0
- package/dist/test/test.vector.pinecone.js +238 -0
- package/dist/test/test.vector.pinecone.js.map +1 -0
- package/dist/test/test.vector.qdrant.d.ts +1 -0
- package/dist/test/test.vector.qdrant.js +307 -0
- package/dist/test/test.vector.qdrant.js.map +1 -0
- package/dist/test/test.vector.weaviate.d.ts +1 -0
- package/dist/test/test.vector.weaviate.js +325 -0
- package/dist/test/test.vector.weaviate.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +6 -2
- package/dist/types/enums.d.ts +2 -0
- package/dist/types/enums.js +2 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/index.types.d.ts +2 -4
- package/dist/types/index.types.js +0 -1
- package/dist/types/index.types.js.map +1 -1
- package/dist/types/processor.types.d.ts +18 -0
- package/dist/types/productsBuilder.types.d.ts +19 -15
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/types/requests.types.d.ts +2 -0
- package/dist/utils/index.js +23 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/vector/adapters/base.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.js +1 -1
- package/dist/vector/adapters/memory.adapter.js.map +1 -1
- package/dist/vector/adapters/pinecone.adapter.d.ts +1 -1
- package/dist/vector/adapters/pinecone.adapter.js +1 -1
- package/dist/vector/adapters/pinecone.adapter.js.map +1 -1
- package/dist/vector/adapters/qdrant.adapter.d.ts +1 -1
- package/dist/vector/adapters/qdrant.adapter.js +1 -1
- package/dist/vector/adapters/qdrant.adapter.js.map +1 -1
- package/dist/vector/adapters/weaviate.adapter.d.ts +1 -1
- package/dist/vector/adapters/weaviate.adapter.js +1 -1
- package/dist/vector/adapters/weaviate.adapter.js.map +1 -1
- package/dist/vector/index.d.ts +2 -2
- package/dist/vector/index.js +2 -2
- package/dist/vector/utils/vector-error.js +0 -1
- package/dist/vector/utils/vector-error.js.map +1 -1
- package/dist/vector/vector-database.service.d.ts +9 -6
- package/dist/vector/vector-database.service.js +7 -6
- package/dist/vector/vector-database.service.js.map +1 -1
- package/dist/vector/vector.service.d.ts +3 -3
- package/dist/vector/vector.service.js +12 -9
- package/dist/vector/vector.service.js.map +1 -1
- package/dist/workflows/workflow-executor.d.ts +4 -1
- package/dist/workflows/workflow-executor.js +10 -2
- package/dist/workflows/workflow-executor.js.map +1 -1
- package/dist/workflows/workflows.service.d.ts +8 -2
- package/dist/workflows/workflows.service.js +66 -41
- package/dist/workflows/workflows.service.js.map +1 -1
- package/package.json +29 -4
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const database_1 = require("../database");
|
|
7
|
+
const index_1 = __importDefault(require("./index"));
|
|
8
|
+
/**
|
|
9
|
+
* PostgreSQL Database Tests
|
|
10
|
+
*
|
|
11
|
+
* Comprehensive tests for PostgreSQL database operations:
|
|
12
|
+
* - Connection management
|
|
13
|
+
* - Schema operations (create, alter, drop tables)
|
|
14
|
+
* - CRUD operations (insert, query, update, delete)
|
|
15
|
+
* - Aggregations (count, sum, avg, min, max)
|
|
16
|
+
* - Transactions
|
|
17
|
+
* - Pre-save operations (trim, hash, encrypt, normalize)
|
|
18
|
+
* - Raw queries
|
|
19
|
+
* - Migrations
|
|
20
|
+
*/
|
|
21
|
+
const { databases } = index_1.default;
|
|
22
|
+
databases.create({
|
|
23
|
+
product: 'ductape:rematch',
|
|
24
|
+
name: 'PostgresDB',
|
|
25
|
+
tag: 'postgres-db',
|
|
26
|
+
type: database_1.DatabaseType.POSTGRESQL,
|
|
27
|
+
envs: [{
|
|
28
|
+
slug: 'prd',
|
|
29
|
+
connection_url: 'postgres://avnadmin:AVNS_EslAIqyyBg9876k5_NQ@pg-399355e6-ductapetech-postgres.e.aivencloud.com:24999/rematch-prd?sslmode=require'
|
|
30
|
+
}, {
|
|
31
|
+
slug: 'dev',
|
|
32
|
+
connection_url: 'postgres://avnadmin:AVNS_EslAIqyyBg9876k5_NQ@pg-399355e6-ductapetech-postgres.e.aivencloud.com:24999/rematch-dev?sslmode=require'
|
|
33
|
+
}]
|
|
34
|
+
}).then(() => {
|
|
35
|
+
console.log('PostgreSQL database created');
|
|
36
|
+
});
|
|
37
|
+
// Start timing
|
|
38
|
+
const startTime = performance.now();
|
|
39
|
+
console.log(`[${new Date().toISOString()}] Starting PostgreSQL database operations...`);
|
|
40
|
+
/*databases
|
|
41
|
+
.connect({
|
|
42
|
+
env: 'prd',
|
|
43
|
+
product: 'ductape:rematch',
|
|
44
|
+
database: 'postgres-db', // Your PostgreSQL database tag
|
|
45
|
+
})
|
|
46
|
+
.then(async (connection) => {
|
|
47
|
+
const connectTime = performance.now();
|
|
48
|
+
console.log(`[TIMING] Connect: ${(connectTime - startTime).toFixed(2)}ms`);
|
|
49
|
+
console.log('PostgreSQL connection established:', connection);
|
|
50
|
+
|
|
51
|
+
// ==================== SCHEMA OPERATIONS ====================
|
|
52
|
+
|
|
53
|
+
console.log('\n--- Schema Operations ---');
|
|
54
|
+
|
|
55
|
+
// List existing tables
|
|
56
|
+
const listStart = performance.now();
|
|
57
|
+
const tables = await databases.schema.list();
|
|
58
|
+
console.log(`[TIMING] Schema list: ${(performance.now() - listStart).toFixed(2)}ms`);
|
|
59
|
+
console.log('Existing tables:', tables);
|
|
60
|
+
|
|
61
|
+
// Drop test table if exists
|
|
62
|
+
if (tables.includes('test_users')) {
|
|
63
|
+
console.log('Dropping existing "test_users" table...');
|
|
64
|
+
await databases.schema.drop('test_users');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Create table with PostgreSQL-specific types
|
|
68
|
+
console.log('Creating table "test_users"...');
|
|
69
|
+
const createStart = performance.now();
|
|
70
|
+
await databases.schema.create('test_users', {
|
|
71
|
+
id: { type: 'serial', primaryKey: true },
|
|
72
|
+
uuid: { type: 'uuid', default: 'gen_random_uuid()' },
|
|
73
|
+
name: { type: 'varchar(255)', nullable: false },
|
|
74
|
+
email: { type: 'varchar(255)', unique: true, nullable: false },
|
|
75
|
+
password: { type: 'varchar(255)' },
|
|
76
|
+
age: { type: 'integer' },
|
|
77
|
+
balance: { type: 'decimal(10,2)', default: '0.00' },
|
|
78
|
+
metadata: { type: 'jsonb' },
|
|
79
|
+
tags: { type: 'text[]' },
|
|
80
|
+
active: { type: 'boolean', default: true },
|
|
81
|
+
created_at: { type: 'timestamp', default: 'now()' },
|
|
82
|
+
updated_at: { type: 'timestamp', default: 'now()' },
|
|
83
|
+
});
|
|
84
|
+
console.log(`[TIMING] Schema create: ${(performance.now() - createStart).toFixed(2)}ms`);
|
|
85
|
+
|
|
86
|
+
// Get table schema
|
|
87
|
+
const schemaStart = performance.now();
|
|
88
|
+
const tableSchema = await databases.schema.describe('test_users');
|
|
89
|
+
console.log(`[TIMING] Schema describe: ${(performance.now() - schemaStart).toFixed(2)}ms`);
|
|
90
|
+
console.log('Table schema:', JSON.stringify(tableSchema, null, 2));
|
|
91
|
+
|
|
92
|
+
// Create index
|
|
93
|
+
console.log('Creating index on email...');
|
|
94
|
+
const indexStart = performance.now();
|
|
95
|
+
await databases.schema.createIndex('test_users', {
|
|
96
|
+
name: 'idx_test_users_email',
|
|
97
|
+
columns: ['email'],
|
|
98
|
+
unique: true,
|
|
99
|
+
});
|
|
100
|
+
console.log(`[TIMING] Create index: ${(performance.now() - indexStart).toFixed(2)}ms`);
|
|
101
|
+
|
|
102
|
+
// ==================== INSERT OPERATIONS ====================
|
|
103
|
+
|
|
104
|
+
console.log('\n--- Insert Operations ---');
|
|
105
|
+
|
|
106
|
+
// Generate unique test data
|
|
107
|
+
const timestamp = Date.now();
|
|
108
|
+
const testEmail = `test.user.${timestamp}@example.com`;
|
|
109
|
+
|
|
110
|
+
// Insert with pre-save operations
|
|
111
|
+
console.log('Inserting user with pre-save operations...');
|
|
112
|
+
const insertStart = performance.now();
|
|
113
|
+
const insertResult = await databases.insert({
|
|
114
|
+
table: 'test_users',
|
|
115
|
+
data: {
|
|
116
|
+
name: ' John Doe ',
|
|
117
|
+
email: testEmail.toUpperCase(),
|
|
118
|
+
password: 'password123',
|
|
119
|
+
age: 30,
|
|
120
|
+
balance: 1000.50,
|
|
121
|
+
metadata: { role: 'admin', preferences: { theme: 'dark' } },
|
|
122
|
+
tags: ['developer', 'nodejs'],
|
|
123
|
+
},
|
|
124
|
+
returning: true,
|
|
125
|
+
preSave: [
|
|
126
|
+
PreSave.trim('name'),
|
|
127
|
+
PreSave.normalizeEmail('email'),
|
|
128
|
+
PreSave.hash('password', { algorithm: 'sha256' }),
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
console.log(`[TIMING] Insert: ${(performance.now() - insertStart).toFixed(2)}ms`);
|
|
132
|
+
console.log('Inserted user:', JSON.stringify(insertResult, null, 2));
|
|
133
|
+
|
|
134
|
+
// Bulk insert
|
|
135
|
+
console.log('Bulk inserting users...');
|
|
136
|
+
const bulkStart = performance.now();
|
|
137
|
+
const bulkResult = await databases.insert({
|
|
138
|
+
table: 'test_users',
|
|
139
|
+
data: [
|
|
140
|
+
{ name: 'Jane Smith', email: `jane.${timestamp}@example.com`, age: 25, balance: 500.00 },
|
|
141
|
+
{ name: 'Bob Wilson', email: `bob.${timestamp}@example.com`, age: 35, balance: 1500.75 },
|
|
142
|
+
{ name: 'Alice Brown', email: `alice.${timestamp}@example.com`, age: 28, balance: 750.25 },
|
|
143
|
+
],
|
|
144
|
+
returning: true,
|
|
145
|
+
});
|
|
146
|
+
console.log(`[TIMING] Bulk insert: ${(performance.now() - bulkStart).toFixed(2)}ms`);
|
|
147
|
+
console.log(`Inserted ${bulkResult.count} users`);
|
|
148
|
+
|
|
149
|
+
// Upsert (ON CONFLICT)
|
|
150
|
+
console.log('Testing upsert (ON CONFLICT)...');
|
|
151
|
+
const upsertStart = performance.now();
|
|
152
|
+
const upsertResult = await databases.insert({
|
|
153
|
+
table: 'test_users',
|
|
154
|
+
data: { name: 'John Doe Updated', email: testEmail, age: 31 },
|
|
155
|
+
onConflict: {
|
|
156
|
+
columns: ['email'],
|
|
157
|
+
action: 'update',
|
|
158
|
+
update: ['name', 'age'],
|
|
159
|
+
},
|
|
160
|
+
returning: true,
|
|
161
|
+
});
|
|
162
|
+
console.log(`[TIMING] Upsert: ${(performance.now() - upsertStart).toFixed(2)}ms`);
|
|
163
|
+
console.log('Upsert result:', JSON.stringify(upsertResult, null, 2));
|
|
164
|
+
|
|
165
|
+
// ==================== QUERY OPERATIONS ====================
|
|
166
|
+
|
|
167
|
+
console.log('\n--- Query Operations ---');
|
|
168
|
+
|
|
169
|
+
// Simple query
|
|
170
|
+
console.log('Querying all users...');
|
|
171
|
+
const queryStart = performance.now();
|
|
172
|
+
const allUsers = await databases.query({
|
|
173
|
+
table: 'test_users',
|
|
174
|
+
orderBy: [{ column: 'created_at', order: 'DESC' }],
|
|
175
|
+
});
|
|
176
|
+
console.log(`[TIMING] Query all: ${(performance.now() - queryStart).toFixed(2)}ms`);
|
|
177
|
+
console.log(`Found ${allUsers.data.length} users`);
|
|
178
|
+
|
|
179
|
+
// Query with where clause
|
|
180
|
+
console.log('Querying users with age > 27...');
|
|
181
|
+
const whereStart = performance.now();
|
|
182
|
+
const filteredUsers = await databases.query({
|
|
183
|
+
table: 'test_users',
|
|
184
|
+
where: { age: Operators.gt(27) },
|
|
185
|
+
select: ['id', 'name', 'email', 'age'],
|
|
186
|
+
});
|
|
187
|
+
console.log(`[TIMING] Query with where: ${(performance.now() - whereStart).toFixed(2)}ms`);
|
|
188
|
+
console.log('Filtered users:', JSON.stringify(filteredUsers.data, null, 2));
|
|
189
|
+
|
|
190
|
+
// Query with complex operators
|
|
191
|
+
console.log('Complex query with multiple conditions...');
|
|
192
|
+
const complexStart = performance.now();
|
|
193
|
+
const complexQuery = await databases.query({
|
|
194
|
+
table: 'test_users',
|
|
195
|
+
where: {
|
|
196
|
+
$and: [
|
|
197
|
+
{ age: Operators.gte(25) },
|
|
198
|
+
{ balance: Operators.lt(1000) },
|
|
199
|
+
{ active: true },
|
|
200
|
+
],
|
|
201
|
+
},
|
|
202
|
+
orderBy: [{ column: 'balance', order: 'DESC' }],
|
|
203
|
+
limit: 10,
|
|
204
|
+
});
|
|
205
|
+
console.log(`[TIMING] Complex query: ${(performance.now() - complexStart).toFixed(2)}ms`);
|
|
206
|
+
console.log('Complex query results:', complexQuery.data.length);
|
|
207
|
+
|
|
208
|
+
// Query with LIKE
|
|
209
|
+
console.log('Query with LIKE operator...');
|
|
210
|
+
const likeStart = performance.now();
|
|
211
|
+
const likeQuery = await databases.query({
|
|
212
|
+
table: 'test_users',
|
|
213
|
+
where: { email: Operators.like('%example.com') },
|
|
214
|
+
});
|
|
215
|
+
console.log(`[TIMING] LIKE query: ${(performance.now() - likeStart).toFixed(2)}ms`);
|
|
216
|
+
console.log('LIKE query results:', likeQuery.data.length);
|
|
217
|
+
|
|
218
|
+
// Query with IN
|
|
219
|
+
console.log('Query with IN operator...');
|
|
220
|
+
const inStart = performance.now();
|
|
221
|
+
const inQuery = await databases.query({
|
|
222
|
+
table: 'test_users',
|
|
223
|
+
where: { age: Operators.in([25, 30, 35]) },
|
|
224
|
+
});
|
|
225
|
+
console.log(`[TIMING] IN query: ${(performance.now() - inStart).toFixed(2)}ms`);
|
|
226
|
+
console.log('IN query results:', inQuery.data.length);
|
|
227
|
+
|
|
228
|
+
// ==================== UPDATE OPERATIONS ====================
|
|
229
|
+
|
|
230
|
+
console.log('\n--- Update Operations ---');
|
|
231
|
+
|
|
232
|
+
// Simple update
|
|
233
|
+
console.log('Updating user balance...');
|
|
234
|
+
const updateStart = performance.now();
|
|
235
|
+
const updateResult = await databases.update({
|
|
236
|
+
table: 'test_users',
|
|
237
|
+
data: { balance: 2000.00, updated_at: new Date() },
|
|
238
|
+
where: { email: testEmail },
|
|
239
|
+
returning: true,
|
|
240
|
+
});
|
|
241
|
+
console.log(`[TIMING] Update: ${(performance.now() - updateStart).toFixed(2)}ms`);
|
|
242
|
+
console.log('Update result:', JSON.stringify(updateResult, null, 2));
|
|
243
|
+
|
|
244
|
+
// Increment update
|
|
245
|
+
console.log('Incrementing all balances by 100...');
|
|
246
|
+
const incStart = performance.now();
|
|
247
|
+
const incResult = await databases.update({
|
|
248
|
+
table: 'test_users',
|
|
249
|
+
data: { balance: Operators.increment(100) },
|
|
250
|
+
where: { active: true },
|
|
251
|
+
});
|
|
252
|
+
console.log(`[TIMING] Increment update: ${(performance.now() - incStart).toFixed(2)}ms`);
|
|
253
|
+
console.log(`Updated ${incResult.count} rows`);
|
|
254
|
+
|
|
255
|
+
// ==================== AGGREGATION OPERATIONS ====================
|
|
256
|
+
|
|
257
|
+
console.log('\n--- Aggregation Operations ---');
|
|
258
|
+
|
|
259
|
+
// Count
|
|
260
|
+
const countStart = performance.now();
|
|
261
|
+
const count = await databases.count({ table: 'test_users' });
|
|
262
|
+
console.log(`[TIMING] Count: ${(performance.now() - countStart).toFixed(2)}ms`);
|
|
263
|
+
console.log('Total users:', count);
|
|
264
|
+
|
|
265
|
+
// Count with where
|
|
266
|
+
const countWhereStart = performance.now();
|
|
267
|
+
const activeCount = await databases.count({
|
|
268
|
+
table: 'test_users',
|
|
269
|
+
where: { active: true },
|
|
270
|
+
});
|
|
271
|
+
console.log(`[TIMING] Count with where: ${(performance.now() - countWhereStart).toFixed(2)}ms`);
|
|
272
|
+
console.log('Active users:', activeCount);
|
|
273
|
+
|
|
274
|
+
// Sum
|
|
275
|
+
const sumStart = performance.now();
|
|
276
|
+
const totalBalance = await databases.sum({
|
|
277
|
+
table: 'test_users',
|
|
278
|
+
column: 'balance',
|
|
279
|
+
});
|
|
280
|
+
console.log(`[TIMING] Sum: ${(performance.now() - sumStart).toFixed(2)}ms`);
|
|
281
|
+
console.log('Total balance:', totalBalance);
|
|
282
|
+
|
|
283
|
+
// Average
|
|
284
|
+
const avgStart = performance.now();
|
|
285
|
+
const avgAge = await databases.avg({
|
|
286
|
+
table: 'test_users',
|
|
287
|
+
column: 'age',
|
|
288
|
+
});
|
|
289
|
+
console.log(`[TIMING] Avg: ${(performance.now() - avgStart).toFixed(2)}ms`);
|
|
290
|
+
console.log('Average age:', avgAge);
|
|
291
|
+
|
|
292
|
+
// Min/Max
|
|
293
|
+
const minStart = performance.now();
|
|
294
|
+
const minAge = await databases.min({ table: 'test_users', column: 'age' });
|
|
295
|
+
console.log(`[TIMING] Min: ${(performance.now() - minStart).toFixed(2)}ms`);
|
|
296
|
+
console.log('Minimum age:', minAge);
|
|
297
|
+
|
|
298
|
+
const maxStart = performance.now();
|
|
299
|
+
const maxBalance = await databases.max({ table: 'test_users', column: 'balance' });
|
|
300
|
+
console.log(`[TIMING] Max: ${(performance.now() - maxStart).toFixed(2)}ms`);
|
|
301
|
+
console.log('Maximum balance:', maxBalance);
|
|
302
|
+
|
|
303
|
+
// Group by aggregation
|
|
304
|
+
const groupStart = performance.now();
|
|
305
|
+
const groupResult = await databases.aggregate({
|
|
306
|
+
table: 'test_users',
|
|
307
|
+
operations: [
|
|
308
|
+
{ type: 'count', alias: 'user_count' },
|
|
309
|
+
{ type: 'avg', column: 'balance', alias: 'avg_balance' },
|
|
310
|
+
],
|
|
311
|
+
groupBy: ['active'],
|
|
312
|
+
});
|
|
313
|
+
console.log(`[TIMING] Group by: ${(performance.now() - groupStart).toFixed(2)}ms`);
|
|
314
|
+
console.log('Group by results:', JSON.stringify(groupResult, null, 2));
|
|
315
|
+
|
|
316
|
+
// ==================== RAW QUERIES ====================
|
|
317
|
+
|
|
318
|
+
console.log('\n--- Raw Queries ---');
|
|
319
|
+
|
|
320
|
+
// PostgreSQL-specific raw query
|
|
321
|
+
const rawStart = performance.now();
|
|
322
|
+
const rawResult = await databases.raw({
|
|
323
|
+
query: `
|
|
324
|
+
SELECT
|
|
325
|
+
name,
|
|
326
|
+
email,
|
|
327
|
+
age,
|
|
328
|
+
balance,
|
|
329
|
+
CASE
|
|
330
|
+
WHEN balance > 1000 THEN 'high'
|
|
331
|
+
WHEN balance > 500 THEN 'medium'
|
|
332
|
+
ELSE 'low'
|
|
333
|
+
END as balance_tier
|
|
334
|
+
FROM test_users
|
|
335
|
+
WHERE age > $1
|
|
336
|
+
ORDER BY balance DESC
|
|
337
|
+
`,
|
|
338
|
+
params: [25],
|
|
339
|
+
});
|
|
340
|
+
console.log(`[TIMING] Raw query: ${(performance.now() - rawStart).toFixed(2)}ms`);
|
|
341
|
+
console.log('Raw query results:', JSON.stringify(rawResult.data, null, 2));
|
|
342
|
+
|
|
343
|
+
// ==================== TRANSACTION ====================
|
|
344
|
+
|
|
345
|
+
console.log('\n--- Transaction ---');
|
|
346
|
+
|
|
347
|
+
const txStart = performance.now();
|
|
348
|
+
try {
|
|
349
|
+
const tx = await databases.beginTransaction({ isolationLevel: 'serializable' });
|
|
350
|
+
|
|
351
|
+
// Insert within transaction
|
|
352
|
+
await databases.insert({
|
|
353
|
+
table: 'test_users',
|
|
354
|
+
data: { name: 'TX User', email: `tx.${timestamp}@example.com`, age: 40 },
|
|
355
|
+
transaction: tx,
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
// Update within transaction
|
|
359
|
+
await databases.update({
|
|
360
|
+
table: 'test_users',
|
|
361
|
+
data: { balance: Operators.increment(50) },
|
|
362
|
+
where: { email: `tx.${timestamp}@example.com` },
|
|
363
|
+
transaction: tx,
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
// Commit
|
|
367
|
+
await tx.commit();
|
|
368
|
+
console.log(`[TIMING] Transaction: ${(performance.now() - txStart).toFixed(2)}ms`);
|
|
369
|
+
console.log('Transaction committed successfully');
|
|
370
|
+
} catch (error) {
|
|
371
|
+
console.log('Transaction error:', error);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// ==================== DELETE OPERATIONS ====================
|
|
375
|
+
|
|
376
|
+
console.log('\n--- Delete Operations ---');
|
|
377
|
+
|
|
378
|
+
// Delete specific record
|
|
379
|
+
const deleteStart = performance.now();
|
|
380
|
+
const deleteResult = await databases.delete({
|
|
381
|
+
table: 'test_users',
|
|
382
|
+
where: { email: `tx.${timestamp}@example.com` },
|
|
383
|
+
returning: true,
|
|
384
|
+
});
|
|
385
|
+
console.log(`[TIMING] Delete: ${(performance.now() - deleteStart).toFixed(2)}ms`);
|
|
386
|
+
console.log(`Deleted ${deleteResult.count} rows`);
|
|
387
|
+
|
|
388
|
+
// ==================== CLEANUP ====================
|
|
389
|
+
|
|
390
|
+
console.log('\n--- Cleanup ---');
|
|
391
|
+
const cleanupStart = performance.now();
|
|
392
|
+
|
|
393
|
+
// Drop index
|
|
394
|
+
await databases.schema.dropIndex('test_users', 'idx_test_users_email');
|
|
395
|
+
console.log('Dropped index');
|
|
396
|
+
|
|
397
|
+
// Drop table
|
|
398
|
+
await databases.schema.drop('test_users');
|
|
399
|
+
console.log('Dropped table');
|
|
400
|
+
|
|
401
|
+
console.log(`[TIMING] Cleanup: ${(performance.now() - cleanupStart).toFixed(2)}ms`);
|
|
402
|
+
|
|
403
|
+
// ==================== SUMMARY ====================
|
|
404
|
+
|
|
405
|
+
const totalTime = performance.now() - startTime;
|
|
406
|
+
console.log(`\n[TIMING SUMMARY]`);
|
|
407
|
+
console.log(` Total time: ${totalTime.toFixed(2)}ms`);
|
|
408
|
+
})
|
|
409
|
+
.catch((err) => {
|
|
410
|
+
console.error('Error in PostgreSQL operations:', err);
|
|
411
|
+
});*/
|
|
412
|
+
//# sourceMappingURL=test.database.postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.database.postgres.js","sourceRoot":"","sources":["../../src/test/test.database.postgres.ts"],"names":[],"mappings":";;;;;AAAA,0CAA+D;AAC/D,oDAA8B;AAE9B;;;;;;;;;;;;GAYG;AAEH,MAAM,EAAE,SAAS,EAAE,GAAG,eAAO,CAAC;AAE9B,SAAS,CAAC,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,uBAAY,CAAC,UAAU;IAC7B,IAAI,EAAE,CAAC;YACL,IAAI,EAAE,KAAK;YACX,cAAc,EAAE,kIAAkI;SACnJ,EAAC;YACA,IAAI,EAAE,KAAK;YACX,cAAc,EAAE,kIAAkI;SACnJ,CAAC;CACH,CAAC,CAAC,IAAI,CAAC,GAAE,EAAE;IACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAA;AAEF,eAAe;AACf,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmXO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|