delete.d.ts 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { entityKind } from "../../entity.js";
  2. import type { MySqlDialect } from "../dialect.js";
  3. import type { AnyMySqlQueryResultHKT, MySqlPreparedQueryConfig, MySqlQueryResultHKT, MySqlQueryResultKind, MySqlSession, PreparedQueryHKTBase, PreparedQueryKind } from "../session.js";
  4. import type { MySqlTable } from "../table.js";
  5. import { QueryPromise } from "../../query-promise.js";
  6. import type { Placeholder, Query, SQL, SQLWrapper } from "../../sql/sql.js";
  7. import type { Subquery } from "../../subquery.js";
  8. import type { ValueOrArray } from "../../utils.js";
  9. import type { MySqlColumn } from "../columns/common.js";
  10. import type { SelectedFieldsOrdered } from "./select.types.js";
  11. export type MySqlDeleteWithout<T extends AnyMySqlDeleteBase, TDynamic extends boolean, K extends keyof T & string> = TDynamic extends true ? T : Omit<MySqlDeleteBase<T['_']['table'], T['_']['queryResult'], T['_']['preparedQueryHKT'], TDynamic, T['_']['excludedMethods'] | K>, T['_']['excludedMethods'] | K>;
  12. export type MySqlDelete<TTable extends MySqlTable = MySqlTable, TQueryResult extends MySqlQueryResultHKT = AnyMySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase> = MySqlDeleteBase<TTable, TQueryResult, TPreparedQueryHKT, true, never>;
  13. export interface MySqlDeleteConfig {
  14. where?: SQL | undefined;
  15. limit?: number | Placeholder;
  16. orderBy?: (MySqlColumn | SQL | SQL.Aliased)[];
  17. table: MySqlTable;
  18. returning?: SelectedFieldsOrdered;
  19. withList?: Subquery[];
  20. }
  21. export type MySqlDeletePrepare<T extends AnyMySqlDeleteBase> = PreparedQueryKind<T['_']['preparedQueryHKT'], MySqlPreparedQueryConfig & {
  22. execute: MySqlQueryResultKind<T['_']['queryResult'], never>;
  23. iterator: never;
  24. }, true>;
  25. type MySqlDeleteDynamic<T extends AnyMySqlDeleteBase> = MySqlDelete<T['_']['table'], T['_']['queryResult'], T['_']['preparedQueryHKT']>;
  26. type AnyMySqlDeleteBase = MySqlDeleteBase<any, any, any, any, any>;
  27. export interface MySqlDeleteBase<TTable extends MySqlTable, TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> {
  28. readonly _: {
  29. readonly table: TTable;
  30. readonly queryResult: TQueryResult;
  31. readonly preparedQueryHKT: TPreparedQueryHKT;
  32. readonly dynamic: TDynamic;
  33. readonly excludedMethods: TExcludedMethods;
  34. };
  35. }
  36. export declare class MySqlDeleteBase<TTable extends MySqlTable, TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> implements SQLWrapper {
  37. private table;
  38. private session;
  39. private dialect;
  40. static readonly [entityKind]: string;
  41. private config;
  42. constructor(table: TTable, session: MySqlSession, dialect: MySqlDialect, withList?: Subquery[]);
  43. /**
  44. * Adds a `where` clause to the query.
  45. *
  46. * Calling this method will delete only those rows that fulfill a specified condition.
  47. *
  48. * See docs: {@link https://orm.drizzle.team/docs/delete}
  49. *
  50. * @param where the `where` clause.
  51. *
  52. * @example
  53. * You can use conditional operators and `sql function` to filter the rows to be deleted.
  54. *
  55. * ```ts
  56. * // Delete all cars with green color
  57. * db.delete(cars).where(eq(cars.color, 'green'));
  58. * // or
  59. * db.delete(cars).where(sql`${cars.color} = 'green'`)
  60. * ```
  61. *
  62. * You can logically combine conditional operators with `and()` and `or()` operators:
  63. *
  64. * ```ts
  65. * // Delete all BMW cars with a green color
  66. * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));
  67. *
  68. * // Delete all cars with the green or blue color
  69. * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));
  70. * ```
  71. */
  72. where(where: SQL | undefined): MySqlDeleteWithout<this, TDynamic, 'where'>;
  73. orderBy(builder: (deleteTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>): MySqlDeleteWithout<this, TDynamic, 'orderBy'>;
  74. orderBy(...columns: (MySqlColumn | SQL | SQL.Aliased)[]): MySqlDeleteWithout<this, TDynamic, 'orderBy'>;
  75. limit(limit: number | Placeholder): MySqlDeleteWithout<this, TDynamic, 'limit'>;
  76. toSQL(): Query;
  77. prepare(): MySqlDeletePrepare<this>;
  78. execute: ReturnType<this['prepare']>['execute'];
  79. private createIterator;
  80. iterator: ReturnType<this["prepare"]>["iterator"];
  81. $dynamic(): MySqlDeleteDynamic<this>;
  82. }
  83. export {};