diff --git a/src/query-builder/insert-query-builder.ts b/src/query-builder/insert-query-builder.ts index fc160ed14..f5d62d42d 100644 --- a/src/query-builder/insert-query-builder.ts +++ b/src/query-builder/insert-query-builder.ts @@ -235,12 +235,6 @@ export class InsertQueryBuilder * })) * ``` */ - values(insert: InsertObjectOrList): InsertQueryBuilder - - values( - insert: InsertObjectOrListFactory - ): InsertQueryBuilder - values(insert: InsertExpression): InsertQueryBuilder { const [columns, values] = parseInsertExpression(insert) diff --git a/src/query-builder/update-query-builder.ts b/src/query-builder/update-query-builder.ts index c43fe483e..184df8303 100644 --- a/src/query-builder/update-query-builder.ts +++ b/src/query-builder/update-query-builder.ts @@ -535,10 +535,8 @@ export class UpdateQueryBuilder * where "id" = $5 * ``` */ - set(update: UpdateObject): UpdateQueryBuilder - set( - update: UpdateObjectFactory + update: UpdateObjectExpression ): UpdateQueryBuilder set>( diff --git a/test/typings/test-d/insert.test-d.ts b/test/typings/test-d/insert.test-d.ts index d4804f477..125ed0e93 100644 --- a/test/typings/test-d/insert.test-d.ts +++ b/test/typings/test-d/insert.test-d.ts @@ -61,6 +61,17 @@ async function testInsert(db: Kysely) { expectType(r5) + const r6 = await db + .insertInto('person') + .values((eb) => ({ + first_name: 'fname', + age: 10, + gender: eb.ref('gender'), + })) + .executeTakeFirst() + + expectType(r6) + // Non-existent table expectError(db.insertInto('doesnt_exists')) diff --git a/test/typings/test-d/kysely-any.test-d.ts b/test/typings/test-d/kysely-any.test-d.ts index b1468a722..729d529c3 100644 --- a/test/typings/test-d/kysely-any.test-d.ts +++ b/test/typings/test-d/kysely-any.test-d.ts @@ -1,4 +1,10 @@ -import { DeleteResult, Kysely, UpdateResult } from '..' +import { + DeleteResult, + InsertResult, + Kysely, + UpdateResult, + expressionBuilder, +} from '..' import { expectType } from 'tsd' async function testKyselyAnySelects(db: Kysely) { @@ -50,6 +56,34 @@ async function testKyselyAnySelects(db: Kysely) { >(r5) } +async function testKyselyAnyInserts(db: Kysely) { + const r1 = await db + .insertInto('foo') + .values({ bar: 'baz', spam: 1 }) + .executeTakeFirstOrThrow() + expectType(r1) + + const r2 = await db + .insertInto('foo') + .values({ bar: 'baz', spam: 1 }) + .returning('foo') + .executeTakeFirstOrThrow() + expectType<{ foo: any }>(r2) + + const r3 = await db + .insertInto('foo') + .values({ bar: 'baz', spam: 1 }) + .returning(['foo', 'baz']) + .executeTakeFirstOrThrow() + expectType<{ foo: any; baz: any }>(r3) + + const r4 = await db + .insertInto('foo') + .values((eb) => ({ foo: eb.ref('foo.bar') })) + .executeTakeFirstOrThrow() + expectType(r4) +} + async function testKyselyAnyUpdates(db: Kysely) { const r1 = await db .updateTable('foo') @@ -74,6 +108,15 @@ async function testKyselyAnyUpdates(db: Kysely) { .returning(['a', 'b']) .executeTakeFirstOrThrow() expectType<{ a: any; b: any }>(r3) + + const r4 = await db + .updateTable('foo') + .set((eb) => ({ + foo: eb('foo.bar', '=', 1), + })) + .where('foo.eggs', '=', 1) + .executeTakeFirstOrThrow() + expectType(r4) } async function testKyselyAnyDeletes(db: Kysely) {