diff --git a/drizzle-orm/src/singlestore-core/columns/bigint.ts b/drizzle-orm/src/singlestore-core/columns/bigint.ts index 1e6b64c49..b0e0c0ea2 100644 --- a/drizzle-orm/src/singlestore-core/columns/bigint.ts +++ b/drizzle-orm/src/singlestore-core/columns/bigint.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreBigInt53BuilderInitial = SingleStoreBigInt53Builder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreBigInt53BuilderInitial = SingleStor export class SingleStoreBigInt53Builder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreBigInt53Builder'; constructor(name: T['name'], unsigned: boolean = false) { @@ -66,6 +71,10 @@ export type SingleStoreBigInt64BuilderInitial = SingleStor export class SingleStoreBigInt64Builder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreBigInt64Builder'; constructor(name: T['name'], unsigned: boolean = false) { diff --git a/drizzle-orm/src/singlestore-core/columns/binary.ts b/drizzle-orm/src/singlestore-core/columns/binary.ts index 153456447..45cdf7743 100644 --- a/drizzle-orm/src/singlestore-core/columns/binary.ts +++ b/drizzle-orm/src/singlestore-core/columns/binary.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreBinaryBuilderInitial = SingleStoreBinaryBuilder<{ name: TName; @@ -21,6 +22,10 @@ export class SingleStoreBinaryBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreBinaryBuilder'; constructor(name: T['name'], length: number | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/boolean.ts b/drizzle-orm/src/singlestore-core/columns/boolean.ts index bf48ff1da..f6df9c3fa 100644 --- a/drizzle-orm/src/singlestore-core/columns/boolean.ts +++ b/drizzle-orm/src/singlestore-core/columns/boolean.ts @@ -1,8 +1,9 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreBooleanBuilderInitial = SingleStoreBooleanBuilder<{ name: TName; @@ -17,6 +18,10 @@ export type SingleStoreBooleanBuilderInitial = SingleStore export class SingleStoreBooleanBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreBooleanBuilder'; constructor(name: T['name']) { diff --git a/drizzle-orm/src/singlestore-core/columns/char.ts b/drizzle-orm/src/singlestore-core/columns/char.ts index 512460f92..8bcb36fa6 100644 --- a/drizzle-orm/src/singlestore-core/columns/char.ts +++ b/drizzle-orm/src/singlestore-core/columns/char.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig, type Writable } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreCharBuilderInitial = SingleStoreCharBuilder<{ @@ -22,6 +23,10 @@ export class SingleStoreCharBuilder > { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreCharBuilder'; constructor(name: T['name'], config: SingleStoreCharConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/common.ts b/drizzle-orm/src/singlestore-core/columns/common.ts index 6ccd64f1e..2c4d6528a 100644 --- a/drizzle-orm/src/singlestore-core/columns/common.ts +++ b/drizzle-orm/src/singlestore-core/columns/common.ts @@ -5,7 +5,6 @@ import type { ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, - HasGenerated, IsAutoincrement, MakeColumnConfig, } from '~/column-builder.ts'; @@ -14,7 +13,6 @@ import type { ColumnBaseConfig } from '~/column.ts'; import { Column } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable, SingleStoreTable } from '~/singlestore-core/table.ts'; -import type { SQL } from '~/sql/sql.ts'; import type { Update } from '~/utils.ts'; import { uniqueKeyName } from '../unique-constraint.ts'; @@ -45,14 +43,15 @@ export abstract class SingleStoreColumnBuilder< return this; } - generatedAlwaysAs(as: SQL | T['data'] | (() => SQL), config?: SingleStoreGeneratedColumnConfig): HasGenerated { + // TODO: Implement generated columns for SingleStore (https://docs.singlestore.com/cloud/create-a-database/using-persistent-computed-columns/) + /* generatedAlwaysAs(as: SQL | T['data'] | (() => SQL), config?: SingleStoreGeneratedColumnConfig): HasGenerated { this.config.generated = { as, type: 'always', mode: config?.mode ?? 'virtual', }; return this as any; - } + } */ /** @internal */ abstract build( diff --git a/drizzle-orm/src/singlestore-core/columns/custom.ts b/drizzle-orm/src/singlestore-core/columns/custom.ts index 964e077d7..3a50bc328 100644 --- a/drizzle-orm/src/singlestore-core/columns/custom.ts +++ b/drizzle-orm/src/singlestore-core/columns/custom.ts @@ -1,4 +1,4 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; @@ -35,6 +35,10 @@ export class SingleStoreCustomColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreCustomColumnBuilder'; constructor( diff --git a/drizzle-orm/src/singlestore-core/columns/date.ts b/drizzle-orm/src/singlestore-core/columns/date.ts index 70da74f3a..1940757aa 100644 --- a/drizzle-orm/src/singlestore-core/columns/date.ts +++ b/drizzle-orm/src/singlestore-core/columns/date.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { type Equal, getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreDateBuilderInitial = SingleStoreDateBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreDateBuilderInitial = SingleStoreDat export class SingleStoreDateBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDateBuilder'; constructor(name: T['name']) { @@ -67,6 +72,10 @@ export type SingleStoreDateStringBuilderInitial = SingleSt export class SingleStoreDateStringBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDateStringBuilder'; constructor(name: T['name']) { diff --git a/drizzle-orm/src/singlestore-core/columns/datetime.ts b/drizzle-orm/src/singlestore-core/columns/datetime.ts index a1aa8eba9..9cc359438 100644 --- a/drizzle-orm/src/singlestore-core/columns/datetime.ts +++ b/drizzle-orm/src/singlestore-core/columns/datetime.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { type Equal, getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreDateTimeBuilderInitial = SingleStoreDateTimeBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreDateTimeBuilderInitial = SingleStor export class SingleStoreDateTimeBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDateTimeBuilder'; constructor(name: T['name'], config: SingleStoreDatetimeConfig | undefined) { @@ -79,6 +84,10 @@ export type SingleStoreDateTimeStringBuilderInitial = Sing export class SingleStoreDateTimeStringBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDateTimeStringBuilder'; constructor(name: T['name'], config: SingleStoreDatetimeConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/decimal.ts b/drizzle-orm/src/singlestore-core/columns/decimal.ts index 980b8a5e9..2f452d1bd 100644 --- a/drizzle-orm/src/singlestore-core/columns/decimal.ts +++ b/drizzle-orm/src/singlestore-core/columns/decimal.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreDecimalBuilderInitial = SingleStoreDecimalBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreDecimalBuilderInitial = SingleStore export class SingleStoreDecimalBuilder< T extends ColumnBuilderBaseConfig<'string', 'SingleStoreDecimal'>, > extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDecimalBuilder'; constructor(name: T['name'], config: SingleStoreDecimalConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/double.ts b/drizzle-orm/src/singlestore-core/columns/double.ts index 103731eab..919f5c893 100644 --- a/drizzle-orm/src/singlestore-core/columns/double.ts +++ b/drizzle-orm/src/singlestore-core/columns/double.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreDoubleBuilderInitial = SingleStoreDoubleBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreDoubleBuilderInitial = SingleStoreD export class SingleStoreDoubleBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: T['data'] | SQL | (() => SQL), config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreDoubleBuilder'; constructor(name: T['name'], config: SingleStoreDoubleConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/enum.ts b/drizzle-orm/src/singlestore-core/columns/enum.ts index 00b61393e..e8d62ede0 100644 --- a/drizzle-orm/src/singlestore-core/columns/enum.ts +++ b/drizzle-orm/src/singlestore-core/columns/enum.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig, type Writable } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; @@ -19,6 +20,10 @@ export type SingleStoreEnumColumnBuilderInitial> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreEnumColumnBuilder'; constructor(name: T['name'], values: T['enumValues']) { diff --git a/drizzle-orm/src/singlestore-core/columns/float.ts b/drizzle-orm/src/singlestore-core/columns/float.ts index 9cfed6131..08931505c 100644 --- a/drizzle-orm/src/singlestore-core/columns/float.ts +++ b/drizzle-orm/src/singlestore-core/columns/float.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreFloatBuilderInitial = SingleStoreFloatBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreFloatBuilderInitial = SingleStoreFl export class SingleStoreFloatBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreFloatBuilder'; constructor(name: T['name'], config: SingleStoreFloatConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/int.ts b/drizzle-orm/src/singlestore-core/columns/int.ts index b6a661f66..994148045 100644 --- a/drizzle-orm/src/singlestore-core/columns/int.ts +++ b/drizzle-orm/src/singlestore-core/columns/int.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreIntBuilderInitial = SingleStoreIntBuilder<{ name: TName; @@ -18,6 +19,10 @@ export type SingleStoreIntBuilderInitial = SingleStoreIntB export class SingleStoreIntBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreIntBuilder'; constructor(name: T['name'], config?: SingleStoreIntConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/json.ts b/drizzle-orm/src/singlestore-core/columns/json.ts index 97ff759d1..db00df33b 100644 --- a/drizzle-orm/src/singlestore-core/columns/json.ts +++ b/drizzle-orm/src/singlestore-core/columns/json.ts @@ -1,8 +1,9 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreJsonBuilderInitial = SingleStoreJsonBuilder<{ name: TName; @@ -17,6 +18,10 @@ export type SingleStoreJsonBuilderInitial = SingleStoreJso export class SingleStoreJsonBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: T['data'] | SQL | (() => SQL), config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreJsonBuilder'; constructor(name: T['name']) { diff --git a/drizzle-orm/src/singlestore-core/columns/mediumint.ts b/drizzle-orm/src/singlestore-core/columns/mediumint.ts index 4a5fa80f9..78aa23984 100644 --- a/drizzle-orm/src/singlestore-core/columns/mediumint.ts +++ b/drizzle-orm/src/singlestore-core/columns/mediumint.ts @@ -1,10 +1,11 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; import type { SingleStoreIntConfig } from './int.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreMediumIntBuilderInitial = SingleStoreMediumIntBuilder<{ name: TName; @@ -19,6 +20,10 @@ export type SingleStoreMediumIntBuilderInitial = SingleSto export class SingleStoreMediumIntBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreMediumIntBuilder'; constructor(name: T['name'], config?: SingleStoreIntConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/real.ts b/drizzle-orm/src/singlestore-core/columns/real.ts index 53d15345c..fb099b483 100644 --- a/drizzle-orm/src/singlestore-core/columns/real.ts +++ b/drizzle-orm/src/singlestore-core/columns/real.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreRealBuilderInitial = SingleStoreRealBuilder<{ name: TName; @@ -21,6 +22,10 @@ export class SingleStoreRealBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreRealBuilder'; constructor(name: T['name'], config: SingleStoreRealConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/serial.ts b/drizzle-orm/src/singlestore-core/columns/serial.ts index df415d47e..1bbf4cbbc 100644 --- a/drizzle-orm/src/singlestore-core/columns/serial.ts +++ b/drizzle-orm/src/singlestore-core/columns/serial.ts @@ -1,7 +1,9 @@ import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, + GeneratedColumnConfig, HasDefault, + HasGenerated, IsAutoincrement, IsPrimaryKey, MakeColumnConfig, @@ -11,6 +13,7 @@ import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreSerialBuilderInitial = IsAutoincrement< IsPrimaryKey< @@ -33,6 +36,10 @@ export type SingleStoreSerialBuilderInitial = IsAutoincrem export class SingleStoreSerialBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreSerialBuilder'; constructor(name: T['name']) { diff --git a/drizzle-orm/src/singlestore-core/columns/smallint.ts b/drizzle-orm/src/singlestore-core/columns/smallint.ts index 3f504b68c..17177bc52 100644 --- a/drizzle-orm/src/singlestore-core/columns/smallint.ts +++ b/drizzle-orm/src/singlestore-core/columns/smallint.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; import type { SingleStoreIntConfig } from './int.ts'; @@ -19,6 +20,10 @@ export type SingleStoreSmallIntBuilderInitial = SingleStor export class SingleStoreSmallIntBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreSmallIntBuilder'; constructor(name: T['name'], config?: SingleStoreIntConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/text.ts b/drizzle-orm/src/singlestore-core/columns/text.ts index 425da550f..ede9f2f94 100644 --- a/drizzle-orm/src/singlestore-core/columns/text.ts +++ b/drizzle-orm/src/singlestore-core/columns/text.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig, type Writable } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; @@ -24,6 +25,10 @@ export class SingleStoreTextBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreTextBuilder'; constructor(name: T['name'], textType: SingleStoreTextColumnType, config: SingleStoreTextConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/time.ts b/drizzle-orm/src/singlestore-core/columns/time.ts index be43041a7..27bcfe342 100644 --- a/drizzle-orm/src/singlestore-core/columns/time.ts +++ b/drizzle-orm/src/singlestore-core/columns/time.ts @@ -1,9 +1,10 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; +import type { SQL } from '~/sql/index.ts'; export type SingleStoreTimeBuilderInitial = SingleStoreTimeBuilder<{ name: TName; @@ -21,6 +22,10 @@ export class SingleStoreTimeBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreTimeBuilder'; constructor( diff --git a/drizzle-orm/src/singlestore-core/columns/timestamp.ts b/drizzle-orm/src/singlestore-core/columns/timestamp.ts index f269dad0f..ddd3dc695 100644 --- a/drizzle-orm/src/singlestore-core/columns/timestamp.ts +++ b/drizzle-orm/src/singlestore-core/columns/timestamp.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/sql.ts'; import { sql } from '~/sql/sql.ts'; import { type Equal, getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreDateBaseColumn, SingleStoreDateColumnBaseBuilder } from './date.common.ts'; @@ -19,6 +20,10 @@ export type SingleStoreTimestampBuilderInitial = SingleSto export class SingleStoreTimestampBuilder> extends SingleStoreDateColumnBaseBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreTimestampBuilder'; constructor(name: T['name'], config: SingleStoreTimestampConfig | undefined) { @@ -76,6 +81,10 @@ export type SingleStoreTimestampStringBuilderInitial = Sin export class SingleStoreTimestampStringBuilder< T extends ColumnBuilderBaseConfig<'string', 'SingleStoreTimestampString'>, > extends SingleStoreDateColumnBaseBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreTimestampStringBuilder'; constructor(name: T['name'], config: SingleStoreTimestampConfig | undefined) { diff --git a/drizzle-orm/src/singlestore-core/columns/tinyint.ts b/drizzle-orm/src/singlestore-core/columns/tinyint.ts index 090619a6d..ff822ea2f 100644 --- a/drizzle-orm/src/singlestore-core/columns/tinyint.ts +++ b/drizzle-orm/src/singlestore-core/columns/tinyint.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumnBuilderWithAutoIncrement, SingleStoreColumnWithAutoIncrement } from './common.ts'; import type { SingleStoreIntConfig } from './int.ts'; @@ -19,6 +20,10 @@ export type SingleStoreTinyIntBuilderInitial = SingleStore export class SingleStoreTinyIntBuilder> extends SingleStoreColumnBuilderWithAutoIncrement { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreTinyIntBuilder'; constructor(name: T['name'], config?: SingleStoreIntConfig) { diff --git a/drizzle-orm/src/singlestore-core/columns/varbinary.ts b/drizzle-orm/src/singlestore-core/columns/varbinary.ts index c55aa8071..81188e15c 100644 --- a/drizzle-orm/src/singlestore-core/columns/varbinary.ts +++ b/drizzle-orm/src/singlestore-core/columns/varbinary.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; @@ -18,6 +19,10 @@ export type SingleStoreVarBinaryBuilderInitial = SingleSto export class SingleStoreVarBinaryBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreVarBinaryBuilder'; /** @internal */ diff --git a/drizzle-orm/src/singlestore-core/columns/varchar.ts b/drizzle-orm/src/singlestore-core/columns/varchar.ts index 2c39491d7..a2282639e 100644 --- a/drizzle-orm/src/singlestore-core/columns/varchar.ts +++ b/drizzle-orm/src/singlestore-core/columns/varchar.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { getColumnNameAndConfig, type Writable } from '~/utils.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; @@ -21,6 +22,10 @@ export type SingleStoreVarCharBuilderInitial> extends SingleStoreColumnBuilder> { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreVarCharBuilder'; /** @internal */ diff --git a/drizzle-orm/src/singlestore-core/columns/year.ts b/drizzle-orm/src/singlestore-core/columns/year.ts index 37f3d55a3..c9ddf24e8 100644 --- a/drizzle-orm/src/singlestore-core/columns/year.ts +++ b/drizzle-orm/src/singlestore-core/columns/year.ts @@ -1,7 +1,8 @@ -import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts'; +import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, GeneratedColumnConfig, HasGenerated, MakeColumnConfig } from '~/column-builder.ts'; import type { ColumnBaseConfig } from '~/column.ts'; import { entityKind } from '~/entity.ts'; import type { AnySingleStoreTable } from '~/singlestore-core/table.ts'; +import type { SQL } from '~/sql/index.ts'; import { SingleStoreColumn, SingleStoreColumnBuilder } from './common.ts'; export type SingleStoreYearBuilderInitial = SingleStoreYearBuilder<{ @@ -17,6 +18,10 @@ export type SingleStoreYearBuilderInitial = SingleStoreYea export class SingleStoreYearBuilder> extends SingleStoreColumnBuilder { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override generatedAlwaysAs(as: SQL | (() => SQL) | T['data'], config?: Partial>): HasGenerated { + throw new Error('Method not implemented.'); + } static override readonly [entityKind]: string = 'SingleStoreYearBuilder'; constructor(name: T['name']) { diff --git a/drizzle-orm/src/singlestore-core/query-builders/attach.ts b/drizzle-orm/src/singlestore-core/query-builders/attach.ts deleted file mode 100644 index ca894ced1..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/attach.ts +++ /dev/null @@ -1,198 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import { DrizzleError } from '~/errors.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; - -export type SingleStoreAttachWithout< - T extends AnySingleStoreAttachBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreAttachBase< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreAttach< - TDatabase extends string = string, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreAttachBase; - -export interface SingleStoreAttachConfig { - milestone?: string | undefined; - time?: Date | undefined; - database: string; - databaseAlias?: string | undefined; - readOnly?: boolean | undefined; -} - -export type SingleStoreAttachPrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreAttachDynamic = SingleStoreAttach< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreAttachBase = SingleStoreAttachBase; - -export interface SingleStoreAttachBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly database: TDatabase; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreAttachBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreAttach'; - - private config: SingleStoreAttachConfig; - - constructor( - private database: TDatabase, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { database }; - } - - as(dabataseAlias: string): SingleStoreAttachWithout { - if (this.config.readOnly) { - throw new DrizzleError({ message: 'Cannot set both databaseAlias and readOnly' }); - } - this.config.databaseAlias = dabataseAlias; - return this as any; - } - - /** - * Adds a `where` clause to the query. - * - * Calling this method will delete only those rows that fulfill a specified condition. - * - * See docs: {@link https://orm.drizzle.team/docs/delete} - * - * @param where the `where` clause. - * - * @example - * You can use conditional operators and `sql function` to filter the rows to be deleted. - * - * ```ts - * // Attach all cars with green color - * db.delete(cars).where(eq(cars.color, 'green')); - * // or - * db.delete(cars).where(sql`${cars.color} = 'green'`) - * ``` - * - * You can logically combine conditional operators with `and()` and `or()` operators: - * - * ```ts - * // Attach all BMW cars with a green color - * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW'))); - * - * // Attach all cars with the green or blue color - * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue'))); - * ``` - */ - // TODO(singlestore): docs - atMilestone(milestone: string): SingleStoreAttachWithout { - if (this.config.time) { - throw new DrizzleError({ message: 'Cannot set both time and milestone' }); - } - this.config.milestone = milestone; - return this as any; - } - - // TODO(singlestore): docs - atTime(time: Date): SingleStoreAttachWithout { - if (this.config.milestone) { - throw new DrizzleError({ message: 'Cannot set both time and milestone' }); - } - this.config.time = time; - return this as any; - } - - // TODO(singlestore): docs - readOnly(): SingleStoreAttachWithout { - if (this.config.databaseAlias) { - throw new DrizzleError({ message: 'Cannot set both databaseAlias and readOnly' }); - } - this.config.readOnly = true; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildAttachQuery(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreAttachPrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreAttachPrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreAttachDynamic { - return this as any; - } -} diff --git a/drizzle-orm/src/singlestore-core/query-builders/branch.ts b/drizzle-orm/src/singlestore-core/query-builders/branch.ts deleted file mode 100644 index 21e2fe0ac..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/branch.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import { DrizzleError } from '~/errors.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; -import type { SingleStoreAttachConfig } from './attach.ts'; - -export type SingleStoreBranchWithout< - T extends AnySingleStoreBranchBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreBranchBase< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreBranch< - TDatabase extends string = string, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreBranchBase; - -export interface SingleStoreBranchConfig extends SingleStoreAttachConfig { - databaseAlias: string; - fromWorkspaceGroup?: string | undefined; -} - -export type SingleStoreBranchPrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreBranchDynamic = SingleStoreBranch< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreBranchBase = SingleStoreBranchBase; - -export interface SingleStoreBranchBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly database: TDatabase; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreBranchBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreBranch'; - - private config: SingleStoreBranchConfig; - - constructor( - private database: TDatabase, - private branchName: string, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { database, databaseAlias: branchName }; - } - - /** - * Adds a `where` clause to the query. - * - * Calling this method will delete only those rows that fulfill a specified condition. - * - * See docs: {@link https://orm.drizzle.team/docs/delete} - * - * @param where the `where` clause. - * - * @example - * You can use conditional operators and `sql function` to filter the rows to be deleted. - * - * ```ts - * // Attach all cars with green color - * db.delete(cars).where(eq(cars.color, 'green')); - * // or - * db.delete(cars).where(sql`${cars.color} = 'green'`) - * ``` - * - * You can logically combine conditional operators with `and()` and `or()` operators: - * - * ```ts - * // Attach all BMW cars with a green color - * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW'))); - * - * // Attach all cars with the green or blue color - * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue'))); - * ``` - */ - // TODO(singlestore): docs - atMilestone(milestone: string): SingleStoreBranchWithout { - if (this.config.time) { - throw new DrizzleError({ message: 'Cannot set both time and milestone' }); - } - this.config.milestone = milestone; - return this as any; - } - - // TODO(singlestore): docs - atTime(time: Date): SingleStoreBranchWithout { - if (this.config.milestone) { - throw new DrizzleError({ message: 'Cannot set both time and milestone' }); - } - this.config.time = time; - return this as any; - } - - // TODO(singlestore): docs - fromWorkspaceGroup(groupID: string): SingleStoreBranchWithout { - this.config.fromWorkspaceGroup = groupID; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildAttachQuery(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreBranchPrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreBranchPrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreBranchDynamic { - return this as any; - } -} diff --git a/drizzle-orm/src/singlestore-core/query-builders/createMilestone.ts b/drizzle-orm/src/singlestore-core/query-builders/createMilestone.ts deleted file mode 100644 index 0444d6bf8..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/createMilestone.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; - -export type SingleStoreCreateMilestoneWithout< - T extends AnySingleStoreCreateMilestoneBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreCreateMilestoneBase< - T['_']['milestone'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreCreateMilestone< - TDatabase extends string = string, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreCreateMilestoneBase; - -export interface SingleStoreCreateMilestoneConfig { - milestone: string; - database?: string | undefined; -} - -export type SingleStoreCreateMilestonePrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreCreateMilestoneDynamic = SingleStoreCreateMilestone< - T['_']['milestone'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreCreateMilestoneBase = SingleStoreCreateMilestoneBase; - -export interface SingleStoreCreateMilestoneBase< - TMilestone extends string, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly milestone: TMilestone; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreCreateMilestoneBase< - TMilestone extends string, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreCreateMilestone'; - - private config: SingleStoreCreateMilestoneConfig; - - constructor( - private milestone: TMilestone, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { milestone }; - } - - // TODO(singlestore): docs - for(database: string): SingleStoreCreateMilestoneWithout { - this.config.database = database; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildCreateMilestoneQuery(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreCreateMilestonePrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreCreateMilestonePrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreCreateMilestoneDynamic { - return this as any; - } -} diff --git a/drizzle-orm/src/singlestore-core/query-builders/detach.ts b/drizzle-orm/src/singlestore-core/query-builders/detach.ts deleted file mode 100644 index 2b74873e2..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/detach.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; - -export type SingleStoreDetachWithout< - T extends AnySingleStoreDetachBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreDetachBase< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreDetach< - TDatabase extends string = string, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreDetachBase; - -export interface SingleStoreDetachConfig { - milestone?: string | undefined; - database: string; - workspace?: string | undefined; -} - -export type SingleStoreDetachPrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreDetachDynamic = SingleStoreDetach< - T['_']['database'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreDetachBase = SingleStoreDetachBase; - -export interface SingleStoreDetachBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly database: TDatabase; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreDetachBase< - TDatabase extends string, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreDetach'; - - private config: SingleStoreDetachConfig; - - constructor( - private database: TDatabase, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { database }; - } - - /** - * Adds a `where` clause to the query. - * - * Calling this method will delete only those rows that fulfill a specified condition. - * - * See docs: {@link https://orm.drizzle.team/docs/delete} - * - * @param where the `where` clause. - * - * @example - * You can use conditional operators and `sql function` to filter the rows to be deleted. - * - * ```ts - * // Detach all cars with green color - * db.delete(cars).where(eq(cars.color, 'green')); - * // or - * db.delete(cars).where(sql`${cars.color} = 'green'`) - * ``` - * - * You can logically combine conditional operators with `and()` and `or()` operators: - * - * ```ts - * // Detach all BMW cars with a green color - * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW'))); - * - * // Detach all cars with the green or blue color - * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue'))); - * ``` - */ - // TODO(singlestore): docs - atMilestone(milestone: string): SingleStoreDetachWithout { - this.config.milestone = milestone; - return this as any; - } - - // TODO(singlestore): docs - fromWorkspace(workspace: string): SingleStoreDetachWithout { - this.config.workspace = workspace; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildDetachQuery(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreDetachPrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreDetachPrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreDetachDynamic { - return this as any; - } -} diff --git a/drizzle-orm/src/singlestore-core/query-builders/dropMilestone.ts b/drizzle-orm/src/singlestore-core/query-builders/dropMilestone.ts deleted file mode 100644 index 66047c991..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/dropMilestone.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; - -export type SingleStoreDropMilestoneWithout< - T extends AnySingleStoreDropMilestoneBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreDropMilestoneBase< - T['_']['milestone'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreDropMilestone< - TDatabase extends string = string, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreDropMilestoneBase; - -export interface SingleStoreDropMilestoneConfig { - milestone: string; - database?: string | undefined; -} - -export type SingleStoreDropMilestonePrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreDropMilestoneDynamic = SingleStoreDropMilestone< - T['_']['milestone'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreDropMilestoneBase = SingleStoreDropMilestoneBase; - -export interface SingleStoreDropMilestoneBase< - TMilestone extends string, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly milestone: TMilestone; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreDropMilestoneBase< - TMilestone extends string, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreDropMilestone'; - - private config: SingleStoreDropMilestoneConfig; - - constructor( - private milestone: TMilestone, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { milestone }; - } - - // TODO(singlestore): docs - for(database: string): SingleStoreDropMilestoneWithout { - this.config.database = database; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildDropMilestoneQuery(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreDropMilestonePrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreDropMilestonePrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreDropMilestoneDynamic { - return this as any; - } -} diff --git a/drizzle-orm/src/singlestore-core/query-builders/optimizeTable.ts b/drizzle-orm/src/singlestore-core/query-builders/optimizeTable.ts deleted file mode 100644 index 3e174c869..000000000 --- a/drizzle-orm/src/singlestore-core/query-builders/optimizeTable.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { entityKind } from '~/entity.ts'; -import type { ColumnBaseConfig, ColumnDataType } from '~/index.ts'; -import { QueryPromise } from '~/query-promise.ts'; -import type { SingleStoreDialect } from '~/singlestore-core/dialect.ts'; -import type { - AnySingleStoreQueryResultHKT, - PreparedQueryHKTBase, - PreparedQueryKind, - SingleStorePreparedQueryConfig, - SingleStoreQueryResultHKT, - SingleStoreQueryResultKind, - SingleStoreSession, -} from '~/singlestore-core/session.ts'; -import type { Query, SQL, SQLWrapper } from '~/sql/sql.ts'; -import type { SingleStoreColumn } from '../columns/common.ts'; -import type { SingleStoreTable } from '../table.ts'; - -export type OptimizeTableArgument = - | 'FULL' - | 'FLUSH' - | 'FIX_ALTER' - | 'INDEX'; - -export type SingleStoreOptimizeTableWithout< - T extends AnySingleStoreOptimizeTableBase, - TDynamic extends boolean, - K extends keyof T & string, -> = TDynamic extends true ? T - : Omit< - SingleStoreOptimizeTableBase< - T['_']['table'], - T['_']['arg'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'], - TDynamic, - T['_']['excludedMethods'] | K - >, - T['_']['excludedMethods'] | K - >; - -export type SingleStoreOptimizeTable< - TTable extends SingleStoreTable = SingleStoreTable, - TArg extends OptimizeTableArgument = OptimizeTableArgument, - TQueryResult extends SingleStoreQueryResultHKT = AnySingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, -> = SingleStoreOptimizeTableBase; - -export interface SingleStoreOptimizeTableConfig { - table: SingleStoreTable; - arg?: OptimizeTableArgument | undefined; - selection?: SingleStoreColumn, object>[] | undefined; -} - -export type SingleStoreOptimizeTablePrepare = PreparedQueryKind< - T['_']['preparedQueryHKT'], - SingleStorePreparedQueryConfig & { - execute: SingleStoreQueryResultKind; - iterator: never; - }, - true ->; - -type SingleStoreOptimizeTableDynamic = SingleStoreOptimizeTable< - T['_']['table'], - T['_']['arg'], - T['_']['queryResult'], - T['_']['preparedQueryHKT'] ->; - -type AnySingleStoreOptimizeTableBase = SingleStoreOptimizeTableBase; - -export interface SingleStoreOptimizeTableBase< - TTable extends SingleStoreTable, - TArg extends OptimizeTableArgument, - TQueryResult extends SingleStoreQueryResultHKT, - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - TExcludedMethods extends string = never, -> extends QueryPromise> { - readonly _: { - readonly table: TTable; - readonly arg: TArg | undefined; - readonly queryResult: TQueryResult; - readonly preparedQueryHKT: TPreparedQueryHKT; - readonly dynamic: TDynamic; - readonly excludedMethods: TExcludedMethods; - }; -} - -export class SingleStoreOptimizeTableBase< - TTable extends SingleStoreTable, - TArg extends OptimizeTableArgument, - TQueryResult extends SingleStoreQueryResultHKT, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TPreparedQueryHKT extends PreparedQueryHKTBase, - TDynamic extends boolean = false, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - TExcludedMethods extends string = never, -> extends QueryPromise> implements SQLWrapper { - static override readonly [entityKind]: string = 'SingleStoreOptimizeTable'; - - private config: SingleStoreOptimizeTableConfig; - - constructor( - private table: TTable, - private arg: TArg | undefined, - private session: SingleStoreSession, - private dialect: SingleStoreDialect, - ) { - super(); - this.config = { table, arg }; - } - - // TODO(singlestore): docs - warmBlobCacheForColumn( - ...selection: SingleStoreColumn, object>[] - ): SingleStoreOptimizeTableWithout { - if (this.config.arg) { - throw new Error('Cannot call warmBlobCacheForColumn with an argument'); - } - this.config.selection = selection; - return this as any; - } - - /** @internal */ - getSQL(): SQL { - return this.dialect.buildOptimizeTable(this.config); - } - - toSQL(): Query { - const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL()); - return rest; - } - - prepare(): SingleStoreOptimizeTablePrepare { - return this.session.prepareQuery( - this.dialect.sqlToQuery(this.getSQL()), - undefined, - ) as SingleStoreOptimizeTablePrepare; - } - - override execute: ReturnType['execute'] = (placeholderValues) => { - return this.prepare().execute(placeholderValues); - }; - - private createIterator = (): ReturnType['iterator'] => { - const self = this; - return async function*(placeholderValues) { - yield* self.prepare().iterator(placeholderValues); - }; - }; - - iterator = this.createIterator(); - - $dynamic(): SingleStoreOptimizeTableDynamic { - return this as any; - } -} diff --git a/drizzle-orm/type-tests/singlestore/count.ts b/drizzle-orm/type-tests/singlestore/count.ts new file mode 100644 index 000000000..50abc8c3a --- /dev/null +++ b/drizzle-orm/type-tests/singlestore/count.ts @@ -0,0 +1,61 @@ +import { Expect } from 'type-tests/utils.ts'; +import { and, gt, ne } from '~/expressions.ts'; +import { int, serial, singlestoreTable, text } from '~/singlestore-core/index.ts'; +import type { Equal } from '~/utils.ts'; +import { db } from './db.ts'; + +const names = singlestoreTable('names', { + id: serial('id').primaryKey(), + name: text('name'), + authorId: int('author_id'), +}); + +const separate = await db.$count(names); + +const separateFilters = await db.$count(names, and(gt(names.id, 1), ne(names.name, 'forbidden'))); + +const embedded = await db + .select({ + id: names.id, + name: names.name, + authorId: names.authorId, + count1: db.$count(names).as('count1'), + }) + .from(names); + +const embeddedFilters = await db + .select({ + id: names.id, + name: names.name, + authorId: names.authorId, + count1: db.$count(names, and(gt(names.id, 1), ne(names.name, 'forbidden'))).as('count1'), + }) + .from(names); + +Expect>; + +Expect>; + +Expect< + Equal< + { + id: number; + name: string | null; + authorId: number | null; + count1: number; + }[], + typeof embedded + > +>; + +Expect< + Equal< + { + id: number; + name: string | null; + authorId: number | null; + count1: number; + }[], + typeof embeddedFilters + > +>; diff --git a/drizzle-orm/type-tests/singlestore/db.ts b/drizzle-orm/type-tests/singlestore/db.ts index f9bc6ff5f..bde149b08 100644 --- a/drizzle-orm/type-tests/singlestore/db.ts +++ b/drizzle-orm/type-tests/singlestore/db.ts @@ -7,6 +7,8 @@ export const db = drizzle(pool); { drizzle(pool); - drizzle(pool, {}); + // @ts-expect-error - missing mode drizzle(pool, { schema: {} }); + drizzle(pool, { schema: {}, mode: 'default' }); + drizzle(pool, { mode: 'default' }); } diff --git a/drizzle-orm/type-tests/singlestore/delete.ts b/drizzle-orm/type-tests/singlestore/delete.ts index 0fce8882e..db58ac2ec 100644 --- a/drizzle-orm/type-tests/singlestore/delete.ts +++ b/drizzle-orm/type-tests/singlestore/delete.ts @@ -59,3 +59,7 @@ Expect>; .where(sql``) .where(sql``); } + +{ + db.delete(users).where(sql``).limit(1).orderBy(sql``); +} diff --git a/drizzle-orm/type-tests/singlestore/generated-columns.ts b/drizzle-orm/type-tests/singlestore/generated-columns.ts deleted file mode 100644 index e5b17a9b1..000000000 --- a/drizzle-orm/type-tests/singlestore/generated-columns.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { type Equal, Expect } from 'type-tests/utils'; -import { type InferInsertModel, type InferSelectModel, sql } from '~/index'; -import { drizzle } from '~/singlestore'; -import { serial, singlestoreTable, text, varchar } from '~/singlestore-core'; -import { db } from './db'; - -const users = singlestoreTable( - 'users', - { - id: serial('id').primaryKey(), - firstName: varchar('first_name', { length: 255 }), - lastName: varchar('last_name', { length: 255 }), - email: text('email').notNull(), - fullName: text('full_name').generatedAlwaysAs(sql`concat_ws(first_name, ' ', last_name)`), - upperName: text('upper_name').generatedAlwaysAs( - sql` case when first_name is null then null else upper(first_name) end `, - ).$type(), // There is no way for drizzle to detect nullability in these cases. This is how the user can work around it - }, -); -{ - type User = typeof users.$inferSelect; - type NewUser = typeof users.$inferInsert; - - Expect< - Equal< - { - id: number; - firstName: string | null; - lastName: string | null; - email: string; - fullName: string | null; - upperName: string | null; - }, - User - > - >(); - - Expect< - Equal< - { - email: string; - id?: number | undefined; - firstName?: string | null | undefined; - lastName?: string | null | undefined; - }, - NewUser - > - >(); -} - -{ - type User = InferSelectModel; - type NewUser = InferInsertModel; - - Expect< - Equal< - { - id: number; - firstName: string | null; - lastName: string | null; - email: string; - fullName: string | null; - upperName: string | null; - }, - User - > - >(); - - Expect< - Equal< - { - email: string; - id?: number | undefined; - firstName?: string | null | undefined; - lastName?: string | null | undefined; - }, - NewUser - > - >(); -} - -{ - const dbUsers = await db.select().from(users); - - Expect< - Equal< - { - id: number; - firstName: string | null; - lastName: string | null; - email: string; - fullName: string | null; - upperName: string | null; - }[], - typeof dbUsers - > - >(); -} - -{ - const db = drizzle({} as any, { schema: { users } }); - - const dbUser = await db.query.users.findFirst(); - - Expect< - Equal< - { - id: number; - firstName: string | null; - lastName: string | null; - email: string; - fullName: string | null; - upperName: string | null; - } | undefined, - typeof dbUser - > - >(); -} - -{ - const db = drizzle({} as any, { schema: { users } }); - - const dbUser = await db.query.users.findMany(); - - Expect< - Equal< - { - id: number; - firstName: string | null; - lastName: string | null; - email: string; - fullName: string | null; - upperName: string | null; - }[], - typeof dbUser - > - >(); -} - -{ - // @ts-expect-error - Can't use the fullName because it's a generated column - await db.insert(users).values({ - firstName: 'test', - lastName: 'test', - email: 'test', - fullName: 'test', - }); -} - -{ - await db.update(users).set({ - firstName: 'test', - lastName: 'test', - email: 'test', - // @ts-expect-error - Can't use the fullName because it's a generated column - fullName: 'test', - }); -} diff --git a/drizzle-orm/type-tests/singlestore/select.ts b/drizzle-orm/type-tests/singlestore/select.ts index 10a7551a7..f7a5094ea 100644 --- a/drizzle-orm/type-tests/singlestore/select.ts +++ b/drizzle-orm/type-tests/singlestore/select.ts @@ -28,7 +28,7 @@ import type { Equal } from 'type-tests/utils.ts'; import { Expect } from 'type-tests/utils.ts'; import { QueryBuilder, type SingleStoreSelect, type SingleStoreSelectQueryBuilder } from '~/singlestore-core/index.ts'; import { db } from './db.ts'; -import { cities, classes, newYorkers, users } from './tables.ts'; +import { cities, classes, users } from './tables.ts'; const city = alias(cities, 'city'); const city1 = alias(cities, 'city1'); @@ -397,7 +397,8 @@ Expect< await db.select().from(users).for('update'); await db.select().from(users).for('share', { skipLocked: true }); await db.select().from(users).for('update', { noWait: true }); -await db +// TODO Implement views for SingleStore (https://docs.singlestore.com/cloud/reference/sql-reference/data-definition-language-ddl/create-view/) +/* await db .select() .from(users) // @ts-expect-error - can't use both skipLocked and noWait @@ -426,7 +427,7 @@ await db typeof result > >; -} +} */ { const query = db.select().from(users).prepare().iterator(); diff --git a/drizzle-orm/type-tests/singlestore/set-operators.ts b/drizzle-orm/type-tests/singlestore/set-operators.ts index aa4f21b9c..1db4bb7f1 100644 --- a/drizzle-orm/type-tests/singlestore/set-operators.ts +++ b/drizzle-orm/type-tests/singlestore/set-operators.ts @@ -1,9 +1,9 @@ import { type Equal, Expect } from 'type-tests/utils.ts'; import { eq } from '~/expressions.ts'; -import { except, intersect, type SingleStoreSetOperator, union, unionAll } from '~/singlestore-core/index.ts'; +import { intersect, type SingleStoreSetOperator, union, unionAll } from '~/singlestore-core/index.ts'; import { sql } from '~/sql/index.ts'; import { db } from './db.ts'; -import { cities, classes, newYorkers, users } from './tables.ts'; +import { cities, classes, users } from './tables.ts'; const unionTest = await db .select({ id: users.id }) @@ -54,6 +54,17 @@ const exceptTest = await db Expect>; +const minusTest = await db + .select({ id: users.id, homeCity: users.homeCity }) + .from(users) + .minus( + db + .select({ id: users.id, homeCity: sql`${users.homeCity}`.mapWith(Number) }) + .from(users), + ); + +Expect>; + const union2Test = await union(db.select().from(cities), db.select().from(cities), db.select().from(cities)); Expect>; @@ -89,7 +100,8 @@ const intersect2Test = await intersect( Expect>; -const except2Test = await except( +// TODO Implement views for SingleStore (https://docs.singlestore.com/cloud/reference/sql-reference/data-definition-language-ddl/create-view/) +/* const except2Test = await except( db.select({ userId: newYorkers.userId, }) @@ -99,7 +111,7 @@ const except2Test = await except( }).from(newYorkers), ); -Expect>; +Expect>; */ const unionfull = await union(db.select().from(users), db.select().from(users)).orderBy(sql``).limit(1).offset(2); @@ -206,7 +218,7 @@ union( // @ts-expect-error db.select({ id: cities.id, name: cities.name }).from(cities), db.select({ id: cities.id }).from(cities), - db.select({ id: newYorkers.userId }).from(newYorkers), + /* db.select({ id: newYorkers.userId }).from(newYorkers), */ db.select({ id: cities.id }).from(cities), ); diff --git a/drizzle-orm/type-tests/singlestore/tables.ts b/drizzle-orm/type-tests/singlestore/tables.ts index da9b4f7cf..5d63cf410 100644 --- a/drizzle-orm/type-tests/singlestore/tables.ts +++ b/drizzle-orm/type-tests/singlestore/tables.ts @@ -1,6 +1,6 @@ import { type Equal, Expect } from 'type-tests/utils.ts'; import type { BuildColumn } from '~/column-builder.ts'; -import { eq, gt } from '~/expressions.ts'; +import { eq } from '~/expressions.ts'; import { bigint, binary, @@ -37,8 +37,7 @@ import { year, } from '~/singlestore-core/index.ts'; import { singlestoreSchema } from '~/singlestore-core/schema.ts'; -import { singlestoreView, type SingleStoreViewWithSelection } from '~/singlestore-core/view.ts'; -import { sql } from '~/sql/sql.ts'; +/* import { singlestoreView, type SingleStoreViewWithSelection } from '~/singlestore-core/view.ts'; */ import type { InferSelectModel } from '~/table.ts'; import type { Simplify } from '~/utils.ts'; import { db } from './db.ts'; @@ -169,13 +168,14 @@ export const classes = singlestoreTable('classes_table', ({ serial, text }) => ( subClass: text('sub_class', { enum: ['B', 'D'] }).notNull(), })); +// TODO Implement views for SingleStore (https://docs.singlestore.com/cloud/reference/sql-reference/data-definition-language-ddl/create-view/) /* export const classes2 = singlestoreTable('classes_table', { id: serial().primaryKey(), class: text({ enum: ['A', 'C'] }).$dbName('class_db'), subClass: text({ enum: ['B', 'D'] }).notNull(), }); */ -export const newYorkers = singlestoreView('new_yorkers') +/* export const newYorkers = singlestoreView('new_yorkers') .algorithm('merge') .sqlSecurity('definer') .as((qb) => { @@ -487,7 +487,7 @@ Expect< typeof newYorkers > >; -} +} */ { const customText = customType<{ data: string }>({ @@ -582,7 +582,7 @@ Expect< Expect>; } -{ // All types with generated columns +/* { // All types with generated columns const test = singlestoreTable('test', { test1: singlestoreEnum('test', ['a', 'b', 'c'] as const).generatedAlwaysAs(sql``), test2: singlestoreEnum('test', ['a', 'b', 'c']).generatedAlwaysAs(sql``), @@ -615,7 +615,7 @@ Expect< Expect>; Expect>; Expect>; -} +} */ { const getUsersTable = (schemaName: TSchema) => { @@ -675,7 +675,8 @@ Expect< >; } -{ +// TODO Implement views for SingleStore (https://docs.singlestore.com/cloud/reference/sql-reference/data-definition-language-ddl/create-view/) +/* { const newYorkers = singlestoreView('new_yorkers') .as((qb) => { const sq = qb @@ -690,7 +691,7 @@ Expect< }); await db.select().from(newYorkers).leftJoin(newYorkers, eq(newYorkers.userId, newYorkers.userId)); -} +} */ { const test = singlestoreTable('test', { diff --git a/drizzle-orm/type-tests/singlestore/update.ts b/drizzle-orm/type-tests/singlestore/update.ts index 3f10ae2e4..4fb5497cf 100644 --- a/drizzle-orm/type-tests/singlestore/update.ts +++ b/drizzle-orm/type-tests/singlestore/update.ts @@ -24,3 +24,7 @@ import { users } from './tables.ts'; // @ts-expect-error method was already called .where(sql``); } + +{ + db.update(users).set({}).where(sql``).limit(1).orderBy(sql``); +} diff --git a/drizzle-orm/type-tests/singlestore/with.ts b/drizzle-orm/type-tests/singlestore/with.ts index 77309e32a..4233fbbf1 100644 --- a/drizzle-orm/type-tests/singlestore/with.ts +++ b/drizzle-orm/type-tests/singlestore/with.ts @@ -11,7 +11,7 @@ const orders = singlestoreTable('orders', { product: text('product').notNull(), amount: int('amount').notNull(), quantity: int('quantity').notNull(), - generated: text('generatedText').generatedAlwaysAs(sql``), + /* generated: text('generatedText').generatedAlwaysAs(sql``), */ }); { @@ -74,7 +74,7 @@ const orders = singlestoreTable('orders', { product: string; amount: number; quantity: number; - generated: string | null; + /* generated: string | null; */ }[], typeof allFromWith> >; }