delete.d.cts 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { entityKind } from "../../entity.cjs";
  2. import type { GelDialect } from "../dialect.cjs";
  3. import type { GelPreparedQuery, GelQueryResultHKT, GelQueryResultKind, GelSession, PreparedQueryConfig } from "../session.cjs";
  4. import type { GelTable } from "../table.cjs";
  5. import type { SelectResultFields } from "../../query-builders/select.types.cjs";
  6. import { QueryPromise } from "../../query-promise.cjs";
  7. import type { RunnableQuery } from "../../runnable-query.cjs";
  8. import type { Query, SQL, SQLWrapper } from "../../sql/sql.cjs";
  9. import type { Subquery } from "../../subquery.cjs";
  10. import type { SelectedFieldsFlat, SelectedFieldsOrdered } from "./select.types.cjs";
  11. export type GelDeleteWithout<T extends AnyGelDeleteBase, TDynamic extends boolean, K extends keyof T & string> = TDynamic extends true ? T : Omit<GelDeleteBase<T['_']['table'], T['_']['queryResult'], T['_']['returning'], TDynamic, T['_']['excludedMethods'] | K>, T['_']['excludedMethods'] | K>;
  12. export type GelDelete<TTable extends GelTable = GelTable, TQueryResult extends GelQueryResultHKT = GelQueryResultHKT, TReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined> = GelDeleteBase<TTable, TQueryResult, TReturning, true, never>;
  13. export interface GelDeleteConfig {
  14. where?: SQL | undefined;
  15. table: GelTable;
  16. returning?: SelectedFieldsOrdered;
  17. withList?: Subquery[];
  18. }
  19. export type GelDeleteReturningAll<T extends AnyGelDeleteBase, TDynamic extends boolean> = GelDeleteWithout<GelDeleteBase<T['_']['table'], T['_']['queryResult'], T['_']['table']['$inferSelect'], TDynamic, T['_']['excludedMethods']>, TDynamic, 'returning'>;
  20. export type GelDeleteReturning<T extends AnyGelDeleteBase, TDynamic extends boolean, TSelectedFields extends SelectedFieldsFlat> = GelDeleteWithout<GelDeleteBase<T['_']['table'], T['_']['queryResult'], SelectResultFields<TSelectedFields>, TDynamic, T['_']['excludedMethods']>, TDynamic, 'returning'>;
  21. export type GelDeletePrepare<T extends AnyGelDeleteBase> = GelPreparedQuery<PreparedQueryConfig & {
  22. execute: T['_']['returning'] extends undefined ? GelQueryResultKind<T['_']['queryResult'], never> : T['_']['returning'][];
  23. }>;
  24. export type GelDeleteDynamic<T extends AnyGelDeleteBase> = GelDelete<T['_']['table'], T['_']['queryResult'], T['_']['returning']>;
  25. export type AnyGelDeleteBase = GelDeleteBase<any, any, any, any, any>;
  26. export interface GelDeleteBase<TTable extends GelTable, TQueryResult extends GelQueryResultHKT, TReturning extends Record<string, unknown> | undefined = undefined, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends QueryPromise<TReturning extends undefined ? GelQueryResultKind<TQueryResult, never> : TReturning[]>, RunnableQuery<TReturning extends undefined ? GelQueryResultKind<TQueryResult, never> : TReturning[], 'gel'>, SQLWrapper {
  27. readonly _: {
  28. dialect: 'gel';
  29. readonly table: TTable;
  30. readonly queryResult: TQueryResult;
  31. readonly returning: TReturning;
  32. readonly dynamic: TDynamic;
  33. readonly excludedMethods: TExcludedMethods;
  34. readonly result: TReturning extends undefined ? GelQueryResultKind<TQueryResult, never> : TReturning[];
  35. };
  36. }
  37. export declare class GelDeleteBase<TTable extends GelTable, TQueryResult extends GelQueryResultHKT, TReturning extends Record<string, unknown> | undefined = undefined, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends QueryPromise<TReturning extends undefined ? GelQueryResultKind<TQueryResult, never> : TReturning[]> implements RunnableQuery<TReturning extends undefined ? GelQueryResultKind<TQueryResult, never> : TReturning[], 'gel'>, SQLWrapper {
  38. private session;
  39. private dialect;
  40. static readonly [entityKind]: string;
  41. private config;
  42. constructor(table: TTable, session: GelSession, dialect: GelDialect, 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. * await db.delete(cars).where(eq(cars.color, 'green'));
  58. * // or
  59. * await 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. * await 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. * await db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));
  70. * ```
  71. */
  72. where(where: SQL | undefined): GelDeleteWithout<this, TDynamic, 'where'>;
  73. /**
  74. * Adds a `returning` clause to the query.
  75. *
  76. * Calling this method will return the specified fields of the deleted rows. If no fields are specified, all fields will be returned.
  77. *
  78. * See docs: {@link https://orm.drizzle.team/docs/delete#delete-with-return}
  79. *
  80. * @example
  81. * ```ts
  82. * // Delete all cars with the green color and return all fields
  83. * const deletedCars: Car[] = await db.delete(cars)
  84. * .where(eq(cars.color, 'green'))
  85. * .returning();
  86. *
  87. * // Delete all cars with the green color and return only their id and brand fields
  88. * const deletedCarsIdsAndBrands: { id: number, brand: string }[] = await db.delete(cars)
  89. * .where(eq(cars.color, 'green'))
  90. * .returning({ id: cars.id, brand: cars.brand });
  91. * ```
  92. */
  93. returning(): GelDeleteReturningAll<this, TDynamic>;
  94. returning<TSelectedFields extends SelectedFieldsFlat>(fields: TSelectedFields): GelDeleteReturning<this, TDynamic, TSelectedFields>;
  95. toSQL(): Query;
  96. prepare(name: string): GelDeletePrepare<this>;
  97. execute: ReturnType<this['prepare']>['execute'];
  98. $dynamic(): GelDeleteDynamic<this>;
  99. }