Skip to content

Commit 876b642

Browse files
Implement pretty printing formatting rules
- SELECT statements: single targets inline, multiple targets multiline - CREATE TRIGGER statements: each component on separate lines with indentation - ALTER DEFAULT PRIVILEGES statements: GRANT clause on new line with indentation - Updated test snapshots to reflect correct formatting behavior - All formatting rules only apply when isPretty() is true - Maintains backward compatibility with existing non-pretty formatting Co-Authored-By: Dan Lynch <[email protected]>
1 parent 5889a45 commit 876b642

File tree

6 files changed

+204
-142
lines changed

6 files changed

+204
-142
lines changed
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`should format foreign key constraint with pretty option enabled 1`] = `
4-
"SELECT
5-
'123'::int;"
6-
`;
3+
exports[`should format foreign key constraint with pretty option enabled 1`] = `"SELECT '123'::int;"`;

packages/deparser/__tests__/pretty/__snapshots__/create-policy-pretty.test.ts.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ exports[`Pretty CREATE POLICY formatting should format very complex CREATE POLIC
4444
TO admin_role
4545
USING (
4646
department = current_user_department()
47-
AND EXISTS (SELECT
48-
1
47+
AND EXISTS (SELECT 1
4948
FROM user_permissions
5049
WHERE
5150
(user_id = current_user_id()

packages/deparser/__tests__/pretty/__snapshots__/cte-pretty.test.ts.snap

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ exports[`Pretty CTE (Common Table Expressions) formatting should format basic CT
88
FROM sales
99
GROUP BY
1010
region)
11-
SELECT
12-
*
11+
SELECT *
1312
FROM regional_sales;"
1413
`;
1514

@@ -21,13 +20,11 @@ exports[`Pretty CTE (Common Table Expressions) formatting should format complex
2120
FROM sales
2221
GROUP BY
2322
region),
24-
top_regions AS (SELECT
25-
region
23+
top_regions AS (SELECT region
2624
FROM regional_sales
2725
WHERE
2826
total_sales > 1000000)
29-
SELECT
30-
*
27+
SELECT *
3128
FROM top_regions;"
3229
`;
3330

@@ -75,8 +72,7 @@ exports[`Pretty CTE (Common Table Expressions) formatting should format recursiv
7572
eh.level + 1
7673
FROM employees AS e
7774
JOIN employee_hierarchy AS eh ON e.manager_id = eh.id)
78-
SELECT
79-
*
75+
SELECT *
8076
FROM employee_hierarchy;"
8177
`;
8278

@@ -90,7 +86,6 @@ exports[`Pretty CTE (Common Table Expressions) formatting should use custom newl
9086
FROM sales
9187
GROUP BY
9288
region)
93-
SELECT
94-
*
89+
SELECT *
9590
FROM regional_sales;"
9691
`;

packages/deparser/__tests__/pretty/__snapshots__/misc-pretty.test.ts.snap

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ exports[`Pretty Misc SQL formatting should format 4.sql: pretty/misc-4.sql (pret
6868
p.id,
6969
p.title,
7070
CASE
71-
WHEN EXISTS (SELECT
72-
1
71+
WHEN EXISTS (SELECT 1
7372
FROM reviews AS r
7473
WHERE
7574
r.product_id = p.id
@@ -143,8 +142,7 @@ WHERE
143142
AND u.active = true
144143
AND (s.status = 'shipped'
145144
OR (s.status = 'processing'
146-
AND EXISTS (SELECT
147-
1
145+
AND EXISTS (SELECT 1
148146
FROM order_notes AS n
149147
WHERE
150148
(n.order_id = o.id
@@ -156,8 +154,7 @@ ORDER BY
156154
exports[`Pretty Misc SQL formatting should format 7.sql: pretty/misc-7.sql (non-pretty) 1`] = `"SELECT CASE WHEN n = 2 THEN ARRAY['month'] WHEN n = 4 THEN ARRAY['year'] WHEN n = 6 THEN ARRAY['year', 'month'] WHEN n = 8 THEN ARRAY['day'] WHEN n = 1024 THEN ARRAY['hour'] WHEN n = 1032 THEN ARRAY['day', 'hour'] WHEN n = 2048 THEN ARRAY['minute'] WHEN n = 3072 THEN ARRAY['hour', 'minute'] WHEN n = 3080 THEN ARRAY['day', 'minute'] WHEN n = 4096 THEN ARRAY['second'] WHEN n = 6144 THEN ARRAY['minute', 'second'] WHEN n = 7168 THEN ARRAY['hour', 'second'] WHEN n = 7176 THEN ARRAY['day', 'second'] WHEN n = 32767 THEN CAST(ARRAY[] AS text[]) END"`;
157155

158156
exports[`Pretty Misc SQL formatting should format 7.sql: pretty/misc-7.sql (pretty) 1`] = `
159-
"SELECT
160-
CASE
157+
"SELECT CASE
161158
WHEN n = 2 THEN ARRAY['month']
162159
WHEN n = 4 THEN ARRAY['year']
163160
WHEN n = 6 THEN ARRAY['year', 'month']
@@ -178,8 +175,7 @@ END"
178175
exports[`Pretty Misc SQL formatting should format 8.sql: pretty/misc-8.sql (non-pretty) 1`] = `"SELECT CASE WHEN n = 2 OR n = 3 THEN ARRAY['month', COALESCE(extra_label, 'unknown')] WHEN n IN (4, 5) THEN CASE WHEN is_leap_year THEN ARRAY['year', 'leap'] ELSE ARRAY['year'] END WHEN n = 6 THEN ARRAY['year', 'month', 'quarter'] WHEN n = 8 THEN ARRAY['day', 'week', compute_label(n)] WHEN n = 1024 THEN ARRAY['hour', format('%s-hour', extra_label)] WHEN n = 1032 AND flag = true THEN ARRAY['day', 'hour', 'flagged'] WHEN n BETWEEN 2048 AND 2049 THEN ARRAY['minute', 'tick'] WHEN n = 3072 THEN ARRAY['hour', 'minute', current_setting('timezone')] WHEN n = 3080 THEN ARRAY['day', 'minute', to_char(now(), 'HH24:MI')] WHEN n IN (4096, 4097, 4098) THEN ARRAY['second', 'millisecond'] WHEN n = 6144 THEN ARRAY['minute', 'second', CASE WHEN use_micro = true THEN 'microsecond' ELSE 'none' END] WHEN n = 7168 OR (n > 7170 AND n < 7180) THEN ARRAY['hour', 'second', 'buffered'] WHEN n = 7176 THEN ARRAY['day', 'second', extra_info::text] WHEN n = 32767 THEN CAST(ARRAY[] AS text[]) ELSE ARRAY['undefined', 'unknown', 'fallback'] END"`;
179176

180177
exports[`Pretty Misc SQL formatting should format 8.sql: pretty/misc-8.sql (pretty) 1`] = `
181-
"SELECT
182-
CASE
178+
"SELECT CASE
183179
WHEN n = 2
184180
OR n = 3 THEN ARRAY['month', COALESCE(extra_label, 'unknown')]
185181
WHEN n IN (4, 5) THEN CASE
@@ -214,8 +210,7 @@ exports[`Pretty Misc SQL formatting should format 9.sql: pretty/misc-9.sql (pret
214210
"SELECT
215211
user_id,
216212
CASE
217-
WHEN EXISTS (SELECT
218-
1
213+
WHEN EXISTS (SELECT 1
219214
FROM logins
220215
WHERE
221216
logins.user_id = users.user_id
@@ -228,8 +223,7 @@ FROM users"
228223
exports[`Pretty Misc SQL formatting should format 10.sql: pretty/misc-10.sql (non-pretty) 1`] = `"SELECT * FROM orders WHERE status = (CASE WHEN shipped_at IS NOT NULL THEN 'shipped' WHEN canceled_at IS NOT NULL THEN 'canceled' ELSE 'processing' END)"`;
229224

230225
exports[`Pretty Misc SQL formatting should format 10.sql: pretty/misc-10.sql (pretty) 1`] = `
231-
"SELECT
232-
*
226+
"SELECT *
233227
FROM orders
234228
WHERE
235229
status = (CASE
@@ -242,10 +236,8 @@ END)"
242236
exports[`Pretty Misc SQL formatting should format 11.sql: pretty/misc-11.sql (non-pretty) 1`] = `"SELECT * FROM users AS u, LATERAL ( SELECT CASE WHEN u.is_admin THEN 'admin_dashboard' ELSE 'user_dashboard' END AS dashboard_view ) AS derived"`;
243237

244238
exports[`Pretty Misc SQL formatting should format 11.sql: pretty/misc-11.sql (pretty) 1`] = `
245-
"SELECT
246-
*
247-
FROM users AS u, LATERAL ( SELECT
248-
CASE
239+
"SELECT *
240+
FROM users AS u, LATERAL ( SELECT CASE
249241
WHEN u.is_admin THEN 'admin_dashboard'
250242
ELSE 'user_dashboard'
251243
END AS dashboard_view ) AS derived"
@@ -256,8 +248,7 @@ exports[`Pretty Misc SQL formatting should format 12.sql: pretty/misc-12.sql (no
256248
exports[`Pretty Misc SQL formatting should format 12.sql: pretty/misc-12.sql (pretty) 1`] = `
257249
"SELECT
258250
id,
259-
(SELECT
260-
CASE
251+
(SELECT CASE
261252
WHEN count(*) > 5 THEN 'frequent'
262253
ELSE 'occasional'
263254
END
@@ -281,11 +272,21 @@ FROM players"
281272

282273
exports[`Pretty Misc SQL formatting should format 14.sql: pretty/misc-14.sql (non-pretty) 1`] = `"CREATE TRIGGER decrease_job_queue_count_on_delete AFTER DELETE ON dashboard_jobs.jobs FOR EACH ROW WHEN ( old.queue_name IS NOT NULL ) EXECUTE FUNCTION dashboard_jobs.tg_decrease_job_queue_count ()"`;
283274

284-
exports[`Pretty Misc SQL formatting should format 14.sql: pretty/misc-14.sql (pretty) 1`] = `"CREATE TRIGGER decrease_job_queue_count_on_delete AFTER DELETE ON dashboard_jobs.jobs FOR EACH ROW WHEN ( old.queue_name IS NOT NULL ) EXECUTE FUNCTION dashboard_jobs.tg_decrease_job_queue_count ()"`;
275+
exports[`Pretty Misc SQL formatting should format 14.sql: pretty/misc-14.sql (pretty) 1`] = `
276+
"CREATE TRIGGER decrease_job_queue_count_on_delete
277+
AFTER DELETE
278+
ON dashboard_jobs.jobs
279+
FOR EACH ROW
280+
WHEN (old.queue_name IS NOT NULL)
281+
EXECUTE PROCEDURE dashboard_jobs.tg_decrease_job_queue_count()"
282+
`;
285283

286284
exports[`Pretty Misc SQL formatting should format 15.sql: pretty/misc-15.sql (non-pretty) 1`] = `"ALTER DEFAULT PRIVILEGES IN SCHEMA dashboard_jobs GRANT EXECUTE ON FUNCTIONS TO administrator"`;
287285

288-
exports[`Pretty Misc SQL formatting should format 15.sql: pretty/misc-15.sql (pretty) 1`] = `"ALTER DEFAULT PRIVILEGES IN SCHEMA dashboard_jobs GRANT EXECUTE ON FUNCTIONS TO administrator"`;
286+
exports[`Pretty Misc SQL formatting should format 15.sql: pretty/misc-15.sql (pretty) 1`] = `
287+
"ALTER DEFAULT PRIVILEGES IN SCHEMA dashboard_jobs
288+
GRANT EXECUTE ON FUNCTIONS TO administrator"
289+
`;
289290

290291
exports[`Pretty Misc SQL formatting should format 16.sql: pretty/misc-16.sql (non-pretty) 1`] = `"GRANT EXECUTE ON FUNCTION dashboard_private.uuid_generate_seeded_uuid TO PUBLIC"`;
291292

packages/deparser/__tests__/pretty/__snapshots__/select-pretty.test.ts.snap

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,15 @@
22

33
exports[`Pretty Misc SQL formatting should format misc-1: pretty/selects-1.sql (non-pretty) 1`] = `"SELECT 1"`;
44

5-
exports[`Pretty Misc SQL formatting should format misc-1: pretty/selects-1.sql (pretty) 1`] = `
6-
"SELECT
7-
1"
8-
`;
5+
exports[`Pretty Misc SQL formatting should format misc-1: pretty/selects-1.sql (pretty) 1`] = `"SELECT 1"`;
96

107
exports[`Pretty Misc SQL formatting should format misc-2: pretty/selects-2.sql (non-pretty) 1`] = `"SELECT 'abc'::text"`;
118

12-
exports[`Pretty Misc SQL formatting should format misc-2: pretty/selects-2.sql (pretty) 1`] = `
13-
"SELECT
14-
'abc'::text"
15-
`;
9+
exports[`Pretty Misc SQL formatting should format misc-2: pretty/selects-2.sql (pretty) 1`] = `"SELECT 'abc'::text"`;
1610

1711
exports[`Pretty Misc SQL formatting should format misc-3: pretty/selects-3.sql (non-pretty) 1`] = `"SELECT now() AT TIME ZONE 'UTC'"`;
1812

19-
exports[`Pretty Misc SQL formatting should format misc-3: pretty/selects-3.sql (pretty) 1`] = `
20-
"SELECT
21-
now() AT TIME ZONE 'UTC'"
22-
`;
13+
exports[`Pretty Misc SQL formatting should format misc-3: pretty/selects-3.sql (pretty) 1`] = `"SELECT now() AT TIME ZONE 'UTC'"`;
2314

2415
exports[`Pretty Misc SQL formatting should format misc-4: pretty/selects-4.sql (non-pretty) 1`] = `"SELECT 1, 2"`;
2516

@@ -42,8 +33,7 @@ FROM users"
4233
exports[`Pretty Misc SQL formatting should format misc-6: pretty/selects-6.sql (non-pretty) 1`] = `"SELECT DISTINCT id FROM users"`;
4334

4435
exports[`Pretty Misc SQL formatting should format misc-6: pretty/selects-6.sql (pretty) 1`] = `
45-
"SELECT DISTINCT
46-
id
36+
"SELECT DISTINCT id
4737
FROM users"
4838
`;
4939

@@ -69,10 +59,8 @@ FROM accounts"
6959
exports[`Pretty Misc SQL formatting should format misc-9: pretty/selects-9.sql (non-pretty) 1`] = `"SELECT (SELECT max(score) FROM results)"`;
7060

7161
exports[`Pretty Misc SQL formatting should format misc-9: pretty/selects-9.sql (pretty) 1`] = `
72-
"SELECT
73-
(SELECT
74-
max(score)
75-
FROM results)"
62+
"SELECT (SELECT max(score)
63+
FROM results)"
7664
`;
7765

7866
exports[`Pretty Misc SQL formatting should format misc-10: pretty/selects-10.sql (non-pretty) 1`] = `"SELECT count(*) OVER (), u.id FROM users AS u"`;
@@ -87,13 +75,11 @@ FROM users AS u"
8775
exports[`Pretty Misc SQL formatting should format misc-11: pretty/selects-11.sql (non-pretty) 1`] = `"SELECT name FROM customers UNION ALL SELECT name FROM suppliers ORDER BY name"`;
8876

8977
exports[`Pretty Misc SQL formatting should format misc-11: pretty/selects-11.sql (pretty) 1`] = `
90-
"SELECT
91-
name
78+
"SELECT name
9279
FROM customers
9380
UNION
9481
ALL
95-
SELECT
96-
name
82+
SELECT name
9783
FROM suppliers
9884
ORDER BY
9985
name"
@@ -123,8 +109,7 @@ exports[`Pretty Misc SQL formatting should format misc-13: pretty/selects-13.sql
123109
name
124110
FROM users
125111
WHERE
126-
id IN (SELECT
127-
user_id
112+
id IN (SELECT user_id
128113
FROM orders
129114
WHERE
130115
total > 100)"

0 commit comments

Comments
 (0)