Skip to content

Commit 8d6b5a0

Browse files
committed
chore: simplify referenced_columns comparison
1 parent fe832aa commit 8d6b5a0

File tree

2 files changed

+15
-53
lines changed

2 files changed

+15
-53
lines changed

Diff for: src/server/templates/typescript.ts

+14-52
Original file line numberDiff line numberDiff line change
@@ -155,33 +155,14 @@ export type Database = {
155155
relationship.referenced_schema === table.schema &&
156156
relationship.relation === table.name
157157
)
158-
.sort((a, b) => {
159-
// First try to sort by foreign key name.
160-
const foreignKeyCompare = a.foreign_key_name.localeCompare(
161-
b.foreign_key_name
162-
)
163-
if (foreignKeyCompare !== 0) return foreignKeyCompare
164-
165-
// Then try to sort by referenced relation.
166-
const referencedRelationCompare = a.referenced_relation.localeCompare(
167-
b.referenced_relation
168-
)
169-
if (referencedRelationCompare !== 0) return referencedRelationCompare
170-
171-
// Then try to sort by referenced columns, finding the first difference.
172-
for (
173-
let i = 0;
174-
i < Math.min(a.referenced_columns.length, b.referenced_columns.length);
175-
i++
176-
) {
177-
const refColCompare = a.referenced_columns[i].localeCompare(
178-
b.referenced_columns[i]
158+
.sort(
159+
(a, b) =>
160+
a.foreign_key_name.localeCompare(b.foreign_key_name) ||
161+
a.referenced_relation.localeCompare(b.referenced_relation) ||
162+
JSON.stringify(a.referenced_columns).localeCompare(
163+
JSON.stringify(b.referenced_columns)
179164
)
180-
if (refColCompare !== 0) return refColCompare
181-
}
182-
// If all referenced columns are the same, sort by the number of referenced columns.
183-
return a.referenced_columns.length - b.referenced_columns.length
184-
})
165+
)
185166
.map(
186167
(relationship) => `{
187168
foreignKeyName: ${JSON.stringify(relationship.foreign_key_name)}
@@ -254,33 +235,14 @@ export type Database = {
254235
relationship.referenced_schema === view.schema &&
255236
relationship.relation === view.name
256237
)
257-
.sort((a, b) => {
258-
// First try to sort by foreign key name.
259-
const foreignKeyCompare = a.foreign_key_name.localeCompare(
260-
b.foreign_key_name
261-
)
262-
if (foreignKeyCompare !== 0) return foreignKeyCompare
263-
264-
// Then try to sort by referenced relation.
265-
const referencedRelationCompare = a.referenced_relation.localeCompare(
266-
b.referenced_relation
267-
)
268-
if (referencedRelationCompare !== 0) return referencedRelationCompare
269-
270-
// Then try to sort by referenced columns, finding the first difference.
271-
for (
272-
let i = 0;
273-
i < Math.min(a.referenced_columns.length, b.referenced_columns.length);
274-
i++
275-
) {
276-
const refColCompare = a.referenced_columns[i].localeCompare(
277-
b.referenced_columns[i]
238+
.sort(
239+
(a, b) =>
240+
a.foreign_key_name.localeCompare(b.foreign_key_name) ||
241+
a.referenced_relation.localeCompare(b.referenced_relation) ||
242+
JSON.stringify(a.referenced_columns).localeCompare(
243+
JSON.stringify(b.referenced_columns)
278244
)
279-
if (refColCompare !== 0) return refColCompare
280-
}
281-
// If all referenced columns are the same, sort by the number of referenced columns.
282-
return a.referenced_columns.length - b.referenced_columns.length
283-
})
245+
)
284246
.map(
285247
(relationship) => `{
286248
foreignKeyName: ${JSON.stringify(relationship.foreign_key_name)}

Diff for: test/db/00-init.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,4 @@ second_user AS (
158158
where u.id = 2
159159
)
160160
SELECT * from initial_user iu
161-
cross join second_user su;
161+
cross join second_user su;

0 commit comments

Comments
 (0)