/
transaction.test-d.ts
111 lines (99 loc) · 3.23 KB
/
transaction.test-d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import knexDefault, { Knex } from '../types';
import { clientConfig, Article } from './common';
import { expectType } from 'tsd';
const knexInstance = knexDefault(clientConfig);
const main = async () => {
// # Select:
expectType<Knex.TransactionProvider>(knexInstance.transactionProvider())
expectType<any[]>(await knexInstance.transaction((trx) => {
return trx.insert({ name: 'Old Books' }, 'id').into('articles');
}));
expectType<Pick<Article, "id" | "subject">[]>(await knexInstance.transaction((trx) => {
const articles: Article[] = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
];
return trx
.insert(articles)
.into<Article>('articles')
.returning(['id', 'subject']);
}));
expectType<Pick<Article, "id" | "subject">[]>(await knexInstance.transaction((trx) => {
const articles: Article[] = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
];
return trx
.insert(articles)
.into<Article>('articles')
.returning(['id', trx.raw('subject')]);
}));
expectType<Article[]>(await knexInstance.transaction((trx) => {
return trx
.select('*')
.from<Article>('articles');
}));
expectType<Pick<Article, "id" | "subject">[]> (await knexInstance.transaction((trx) => {
const articles = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
] as const;
return trx
.insert(articles)
.into<Article>('articles')
.returning(['id', 'subject']);
}));
expectType<any[]> (await knexInstance.transaction(async (trx) => {
const articles: Article[] = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
];
return knexInstance
.insert(articles, ['id', 'subject'])
.into<Article>('articles')
.transacting(trx)
.then(trx.commit)
.catch(trx.rollback);
}));
expectType<any[]>(await knexInstance.transaction(async (trx) => {
const articles: ReadonlyArray<Article> = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
];
return knexInstance
.insert(articles, ['id', 'subject'])
.into<Article>('articles')
.transacting(trx)
.then(trx.commit)
.catch(trx.rollback);
}));
expectType<Pick<Article, "id" | "subject">[]> (await knexInstance.transaction(
async (
trx: Knex.Transaction<Article, Pick<Article, 'id' | 'subject'>[]>
) => {
const articles: Article[] = [
{ id: 1, subject: 'Canterbury Tales' },
{ id: 2, subject: 'Moby Dick' },
{ id: 3, subject: 'Hamlet' },
];
return knexInstance
.insert(articles, ['id', 'subject'])
.into<Article>('articles')
.transacting(trx)
.then(trx.commit)
.catch(trx.rollback);
}
));
const transactionConfig: Knex.TransactionConfig = {
isolationLevel: 'serializable',
userParams: {},
doNotRejectOnRollback: true,
connection: {}
}
expectType<Knex.TransactionConfig>(transactionConfig)
}