Skip to content

Commit 3208fe1

Browse files
backwards compatibility.
Co-authored-by: Eric So <56284867+ericsodev@users.noreply.github.com>
1 parent 2e71c7b commit 3208fe1

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

src/operation-node/unique-constraint-node.ts

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { freeze } from '../util/object-utils.js'
1+
import { logOnce } from '../util/log-once.js'
2+
import { freeze, isString } from '../util/object-utils.js'
23
import { ColumnNode } from './column-node.js'
34
import { IdentifierNode } from './identifier-node.js'
45
import { OperationNode } from './operation-node.js'
@@ -18,21 +19,56 @@ export type UniqueConstraintNodeProps = Omit<
1819
>
1920

2021
/**
22+
* TODO: remove this interface once support for `string[]` is removed.
23+
*
2124
* @internal
2225
*/
23-
export const UniqueConstraintNode = freeze({
26+
interface UniqueConstraintNodeFactory {
27+
is(node: OperationNode): node is UniqueConstraintNode
28+
create(
29+
columns: OperationNode[],
30+
constraintName?: string,
31+
nullsNotDistinct?: boolean,
32+
): UniqueConstraintNode
33+
/**
34+
* @deprecated pass `ColumnNode[]` instead of strings.
35+
*/
36+
create(
37+
columns: string[],
38+
constraintName?: string,
39+
nullsNotDistinct?: boolean,
40+
): UniqueConstraintNode
41+
cloneWith(
42+
node: UniqueConstraintNode,
43+
props: UniqueConstraintNodeProps,
44+
): UniqueConstraintNode
45+
}
46+
47+
/**
48+
* @internal
49+
*/
50+
export const UniqueConstraintNode: UniqueConstraintNodeFactory = freeze({
2451
is(node: OperationNode): node is UniqueConstraintNode {
2552
return node.kind === 'UniqueConstraintNode'
2653
},
2754

2855
create(
29-
columns: OperationNode[],
56+
columns: string[] | OperationNode[],
3057
constraintName?: string,
3158
nullsNotDistinct?: boolean,
3259
): UniqueConstraintNode {
60+
// TODO: remove this block when support for `string[]` is removed.
61+
if (isString(columns.at(0))) {
62+
logOnce(
63+
'`UniqueConstraintNode.create(columns: string[], ...)` is deprecated - pass `ColumnNode[]` instead.',
64+
)
65+
66+
columns = (columns as string[]).map(ColumnNode.create)
67+
}
68+
3369
return freeze({
3470
kind: 'UniqueConstraintNode',
35-
columns: freeze(columns),
71+
columns: freeze(columns) as OperationNode[],
3672
name: constraintName ? IdentifierNode.create(constraintName) : undefined,
3773
nullsNotDistinct,
3874
})
@@ -42,9 +78,6 @@ export const UniqueConstraintNode = freeze({
4278
node: UniqueConstraintNode,
4379
props: UniqueConstraintNodeProps,
4480
): UniqueConstraintNode {
45-
return freeze({
46-
...node,
47-
...props,
48-
})
81+
return freeze({ ...node, ...props })
4982
},
5083
})

src/schema/alter-table-builder.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ export class AlterTableBuilder implements ColumnAlteringInterface {
188188
? ColumnNode.create(column)
189189
: parseExpression(column),
190190
),
191-
192191
constraintName,
193192
),
194193
),

0 commit comments

Comments
 (0)