mirror of
https://github.com/knex/knex.git
synced 2025-06-26 22:00:25 +00:00
79 lines
1.9 KiB
TypeScript
79 lines
1.9 KiB
TypeScript
import Knex from '../types';
|
|
import { expectError, expectType } from 'tsd';
|
|
import { clientConfig } from './common';
|
|
|
|
const knex = Knex(clientConfig);
|
|
|
|
// Use:
|
|
// import Knex from 'knex'
|
|
// when "esModuleInterop": true
|
|
|
|
const main = async () => {
|
|
// default returning is number[]
|
|
expectType<number[]>(
|
|
await knex.batchInsert('table', [{ a: 2, id: 3 }] as const, 12)
|
|
);
|
|
|
|
// allows any data
|
|
expectType<any[]>(
|
|
await knex
|
|
.batchInsert('table', [{ a: 2, id: 3 }] as any[], 12)
|
|
.returning('abc')
|
|
);
|
|
|
|
// allows any data
|
|
expectType<any[]>(
|
|
await knex
|
|
.batchInsert('table', [{ a: 2, id: 3 }] as any, 12)
|
|
.returning('abc')
|
|
);
|
|
|
|
// returning '*' allowed, return full record
|
|
expectType<Array<{ a: boolean; id: number }>>(
|
|
await knex.batchInsert('table', [{ a: false, id: 3 }], 12).returning('*')
|
|
);
|
|
|
|
// one column for returning
|
|
expectType<Array<{ aa2: string }>>(
|
|
await knex
|
|
.batchInsert('table', [{ aa2: 'string', b: 3 }], 12)
|
|
.returning('aa2')
|
|
);
|
|
|
|
// many columns for returning
|
|
expectType<Array<{ aa2: string; b: boolean }>>(
|
|
await knex
|
|
.batchInsert('table', [{ aa2: 'string', b: false, c: 12 }], 12)
|
|
.returning(['aa2', 'b'])
|
|
);
|
|
|
|
// assert bad column in returning gives error
|
|
expectError(
|
|
knex
|
|
.batchInsert('table', [{ aa2: 'string', b: false, c: 12 }], 12)
|
|
.returning('bad_column')
|
|
);
|
|
|
|
// assert any bad column from returning list gives error
|
|
expectError(
|
|
knex
|
|
.batchInsert('table', [{ aa2: 'string', b: false, c: 12 }], 12)
|
|
.returning(['aa2', 'bad_column'] as const)
|
|
);
|
|
|
|
// validates insert data
|
|
expectError(
|
|
knex.batchInsert<{ aa2: string; c: number }>(
|
|
'table',
|
|
[{ aa2: 'string', b: false, c: 12 }],
|
|
12
|
|
)
|
|
);
|
|
|
|
expectType<number[]>(
|
|
await knex
|
|
.batchInsert('table', [{ a: 2, id: 3 }] as const, 12)
|
|
.transacting(await knex.transaction())
|
|
);
|
|
};
|