From 0ede90aeb3ccac92f3917bcaf97c1f894c6b6932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20Hano=C4=9Flu?= Date: Fri, 13 Mar 2026 13:23:30 +0300 Subject: [PATCH] feat: Added index hint and no-index support --- .../connect/src/orm/commands/count.command.ts | 11 +++++++++++ .../connect/src/orm/commands/delete.command.ts | 11 +++++++++++ .../connect/src/orm/commands/update.command.ts | 17 ++++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/connect/src/orm/commands/count.command.ts b/packages/connect/src/orm/commands/count.command.ts index 300c8c34..994e7301 100644 --- a/packages/connect/src/orm/commands/count.command.ts +++ b/packages/connect/src/orm/commands/count.command.ts @@ -28,6 +28,17 @@ export class CountCommand { args.comment.forEach(c => query.comment(c)); else query.comment(args.comment as any); } + if (args.indexHint) { + if (Array.isArray(args.indexHint)) + args.indexHint.forEach(c => query.indexHint(c)); + else query.indexHint(args.indexHint as any); + } + + if (args.noIndexHint) { + if (Array.isArray(args.noIndexHint)) + args.noIndexHint.forEach(c => query.noIndexHint(c)); + else query.noIndexHint(args.noIndexHint as any); + } if (where) query.where(where); // Execute query const resp = await connection.execute(query, { diff --git a/packages/connect/src/orm/commands/delete.command.ts b/packages/connect/src/orm/commands/delete.command.ts index 661948c5..8de658d5 100644 --- a/packages/connect/src/orm/commands/delete.command.ts +++ b/packages/connect/src/orm/commands/delete.command.ts @@ -29,6 +29,17 @@ export class DeleteCommand { args.comment.forEach(c => query.comment(c)); else query.comment(args.comment as any); } + if (args.indexHint) { + if (Array.isArray(args.indexHint)) + args.indexHint.forEach(c => query.indexHint(c)); + else query.indexHint(args.indexHint as any); + } + + if (args.noIndexHint) { + if (Array.isArray(args.noIndexHint)) + args.noIndexHint.forEach(c => query.noIndexHint(c)); + else query.noIndexHint(args.noIndexHint as any); + } if (where) query.where(...where._items); // Execute query const resp = await connection.execute(query, { diff --git a/packages/connect/src/orm/commands/update.command.ts b/packages/connect/src/orm/commands/update.command.ts index 7ab14e8c..86c82a9e 100644 --- a/packages/connect/src/orm/commands/update.command.ts +++ b/packages/connect/src/orm/commands/update.command.ts @@ -55,7 +55,22 @@ export class UpdateCommand { const query = Update(tableName + ' as T', ctx.queryValues).where( ...ctx.queryFilter, ); - if (args.comment) query.comment(args.comment, args.commentDialect); + if (args.comment) { + if (Array.isArray(args.comment)) + args.comment.forEach(c => query.comment(c)); + else query.comment(args.comment as any); + } + if (args.indexHint) { + if (Array.isArray(args.indexHint)) + args.indexHint.forEach(c => query.indexHint(c)); + else query.indexHint(args.indexHint as any); + } + + if (args.noIndexHint) { + if (Array.isArray(args.noIndexHint)) + args.noIndexHint.forEach(c => query.noIndexHint(c)); + else query.noIndexHint(args.noIndexHint as any); + } const qr = await args.connection.execute(query, { params: args.params ? [...args.params, ctx.queryParams] : ctx.queryParams, objectRows: false,