Skip to content

Commit ab61f23

Browse files
Fix JOIN formatting spacing issue - eliminate trailing spaces after table aliases
- Fixed JoinExpr method to properly handle spaces in pretty formatting mode - Added leading space to ON and USING clauses to maintain proper SQL syntax - Updated snapshots to reflect improved formatting that matches Dan's requirements - All tests passing with enhanced JOIN, CREATE POLICY, and CTE formatting Co-Authored-By: Dan Lynch <[email protected]>
1 parent 8a03741 commit ab61f23

File tree

4 files changed

+160
-135
lines changed

4 files changed

+160
-135
lines changed
Lines changed: 53 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,73 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`Pretty CREATE POLICY formatting should format basic CREATE POLICY with pretty option enabled 1`] = `
4-
"CREATE POLICY "user_policy" ON users
5-
AS PERMISSIVE
6-
FOR ALL
7-
TO authenticated_users
8-
USING (user_id = current_user_id());"
4+
"CREATE POLICY "user_policy"
5+
ON users
6+
AS PERMISSIVE
7+
FOR ALL
8+
TO authenticated_users
9+
USING (
10+
user_id = current_user_id()
11+
);"
912
`;
1013

1114
exports[`Pretty CREATE POLICY formatting should format complex CREATE POLICY with pretty option enabled 1`] = `
12-
"CREATE POLICY "admin_policy" ON sensitive_data
13-
AS RESTRICTIVE
14-
FOR SELECT
15-
TO admin_role
16-
USING (department = current_user_department())
17-
WITH CHECK (approved = true);"
15+
"CREATE POLICY "admin_policy"
16+
ON sensitive_data
17+
AS RESTRICTIVE
18+
FOR SELECT
19+
TO admin_role
20+
USING (
21+
department = current_user_department()
22+
)
23+
WITH CHECK (
24+
approved = true
25+
);"
1826
`;
1927

2028
exports[`Pretty CREATE POLICY formatting should format simple CREATE POLICY with pretty option enabled 1`] = `
21-
"CREATE POLICY "simple_policy" ON posts
22-
AS PERMISSIVE
23-
FOR SELECT
24-
TO public
25-
USING (published = true);"
29+
"CREATE POLICY "simple_policy"
30+
ON posts
31+
AS PERMISSIVE
32+
FOR SELECT
33+
TO public
34+
USING (
35+
published = true
36+
);"
2637
`;
2738

2839
exports[`Pretty CREATE POLICY formatting should format very complex CREATE POLICY with pretty option enabled 1`] = `
29-
"CREATE POLICY "complex_policy" ON sensitive_data
30-
AS RESTRICTIVE
31-
FOR SELECT
32-
TO admin_role
33-
USING (department = current_user_department() AND EXISTS (SELECT
34-
1
35-
FROM
36-
user_permissions
37-
WHERE
38-
(user_id = current_user_id() AND permission = 'read_sensitive')))
39-
WITH CHECK (approved = true AND created_by = current_user_id());"
40+
"CREATE POLICY "complex_policy"
41+
ON sensitive_data
42+
AS RESTRICTIVE
43+
FOR SELECT
44+
TO admin_role
45+
USING (
46+
department = current_user_department()
47+
AND EXISTS (SELECT
48+
1
49+
FROM user_permissions
50+
WHERE
51+
(user_id = current_user_id()
52+
AND permission = 'read_sensitive'))
53+
)
54+
WITH CHECK (
55+
approved = true
56+
AND created_by = current_user_id()
57+
);"
4058
`;
4159

4260
exports[`Pretty CREATE POLICY formatting should maintain single-line format for complex policy when pretty disabled 1`] = `"CREATE POLICY "admin_policy" ON sensitive_data AS RESTRICTIVE FOR SELECT TO admin_role USING (department = current_user_department()) WITH CHECK (approved = true);"`;
4361

4462
exports[`Pretty CREATE POLICY formatting should maintain single-line format when pretty option disabled 1`] = `"CREATE POLICY "user_policy" ON users AS PERMISSIVE FOR ALL TO authenticated_users USING (user_id = current_user_id());"`;
4563

4664
exports[`Pretty CREATE POLICY formatting should use custom newline and tab characters in pretty mode 1`] = `
47-
"CREATE POLICY "user_policy" ON users
48-
AS PERMISSIVE
49-
FOR ALL
50-
TO authenticated_users
51-
USING (user_id = current_user_id());"
65+
"CREATE POLICY "user_policy"
66+
ON users
67+
AS PERMISSIVE
68+
FOR ALL
69+
TO authenticated_users
70+
USING (
71+
user_id = current_user_id()
72+
);"
5273
`;
Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,69 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`Pretty CTE (Common Table Expressions) formatting should format basic CTE with pretty option enabled 1`] = `
4-
"WITH
4+
"WITH
55
regional_sales AS (SELECT
66
region,
77
sum(sales_amount) AS total_sales
8-
FROM
9-
sales
8+
FROM sales
109
GROUP BY
1110
region)
1211
SELECT
1312
*
14-
FROM
15-
regional_sales;"
13+
FROM regional_sales;"
1614
`;
1715

1816
exports[`Pretty CTE (Common Table Expressions) formatting should format complex CTE with multiple CTEs with pretty option enabled 1`] = `
19-
"WITH
17+
"WITH
2018
regional_sales AS (SELECT
2119
region,
2220
sum(sales_amount) AS total_sales
23-
FROM
24-
sales
21+
FROM sales
2522
GROUP BY
2623
region),
2724
top_regions AS (SELECT
2825
region
29-
FROM
30-
regional_sales
26+
FROM regional_sales
3127
WHERE
3228
total_sales > 1000000)
3329
SELECT
3430
*
35-
FROM
36-
top_regions;"
31+
FROM top_regions;"
3732
`;
3833

3934
exports[`Pretty CTE (Common Table Expressions) formatting should format nested CTE with complex joins with pretty option enabled 1`] = `
40-
"WITH
35+
"WITH
4136
sales_summary AS (SELECT
4237
region,
4338
product_category,
4439
sum(amount) AS total
45-
FROM
46-
sales
40+
FROM sales
4741
GROUP BY
4842
region,
4943
product_category),
5044
regional_totals AS (SELECT
5145
region,
5246
sum(total) AS region_total
53-
FROM
54-
sales_summary
47+
FROM sales_summary
5548
GROUP BY
5649
region)
5750
SELECT
5851
s.region,
5952
s.product_category,
6053
s.total,
6154
r.region_total
62-
FROM
63-
sales_summary AS s
55+
FROM sales_summary AS s
6456
JOIN regional_totals AS r ON s.region = r.region;"
6557
`;
6658

6759
exports[`Pretty CTE (Common Table Expressions) formatting should format recursive CTE with pretty option enabled 1`] = `
68-
"WITH RECURSIVE
60+
"WITH RECURSIVE
6961
employee_hierarchy AS (SELECT
7062
id,
7163
name,
7264
manager_id,
7365
1 AS level
74-
FROM
75-
employees
66+
FROM employees
7667
WHERE
7768
manager_id IS NULL
7869
UNION
@@ -82,28 +73,24 @@ exports[`Pretty CTE (Common Table Expressions) formatting should format recursiv
8273
e.name,
8374
e.manager_id,
8475
eh.level + 1
85-
FROM
86-
employees AS e
76+
FROM employees AS e
8777
JOIN employee_hierarchy AS eh ON e.manager_id = eh.id)
8878
SELECT
8979
*
90-
FROM
91-
employee_hierarchy;"
80+
FROM employee_hierarchy;"
9281
`;
9382

9483
exports[`Pretty CTE (Common Table Expressions) formatting should maintain single-line format when pretty option disabled 1`] = `"WITH regional_sales AS (SELECT region, sum(sales_amount) AS total_sales FROM sales GROUP BY region) SELECT * FROM regional_sales;"`;
9584

9685
exports[`Pretty CTE (Common Table Expressions) formatting should use custom newline and tab characters in pretty mode 1`] = `
97-
"WITH
86+
"WITH
9887
regional_sales AS (SELECT
9988
region,
10089
sum(sales_amount) AS total_sales
101-
FROM
102-
sales
90+
FROM sales
10391
GROUP BY
10492
region)
10593
SELECT
10694
*
107-
FROM
108-
regional_sales;"
95+
FROM regional_sales;"
10996
`;

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

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33
exports[`Pretty SELECT formatting should format SELECT with UNION with pretty option enabled 1`] = `
44
"SELECT
55
name
6-
FROM
7-
customers
6+
FROM customers
87
UNION
98
ALL
109
SELECT
1110
name
12-
FROM
13-
suppliers
11+
FROM suppliers
1412
ORDER BY
1513
name;"
1614
`;
@@ -21,10 +19,9 @@ exports[`Pretty SELECT formatting should format SELECT with multiple JOINs with
2119
u.name,
2220
u.email,
2321
p.title
24-
FROM
25-
users AS u
26-
JOIN profiles AS p ON u.id = p.user_id
27-
LEFT JOIN orders AS o ON u.id = o.user_id
22+
FROM users AS u
23+
JOIN profiles AS p ON u.id = p.user_id
24+
LEFT JOIN orders AS o ON u.id = o.user_id
2825
RIGHT JOIN addresses AS a ON u.id = a.user_id
2926
WHERE
3027
u.active = true;"
@@ -34,24 +31,21 @@ exports[`Pretty SELECT formatting should format SELECT with subquery with pretty
3431
"SELECT
3532
id,
3633
name
37-
FROM
38-
users
34+
FROM users
3935
WHERE
4036
id IN (SELECT
41-
user_id
42-
FROM
43-
orders
44-
WHERE
45-
total > 100);"
37+
user_id
38+
FROM orders
39+
WHERE
40+
total > 100);"
4641
`;
4742

4843
exports[`Pretty SELECT formatting should format basic SELECT with pretty option enabled 1`] = `
4944
"SELECT
5045
id,
5146
name,
5247
email
53-
FROM
54-
users
48+
FROM users
5549
WHERE
5650
active = true;"
5751
`;
@@ -62,11 +56,11 @@ exports[`Pretty SELECT formatting should format complex SELECT with pretty optio
6256
u.name,
6357
u.email,
6458
p.title
65-
FROM
66-
users AS u
59+
FROM users AS u
6760
JOIN profiles AS p ON u.id = p.user_id
6861
WHERE
69-
u.active = true AND u.created_at > '2023-01-01'
62+
u.active = true
63+
AND u.created_at > '2023-01-01'
7064
GROUP BY
7165
u.id,
7266
u.name,
@@ -77,10 +71,8 @@ HAVING
7771
ORDER BY
7872
u.created_at DESC,
7973
u.name ASC
80-
LIMIT
81-
10
82-
OFFSET
83-
5;"
74+
LIMIT 10
75+
OFFSET 5;"
8476
`;
8577

8678
exports[`Pretty SELECT formatting should maintain single-line format for complex SELECT when pretty disabled 1`] = `"SELECT u.id, u.name, u.email, p.title FROM users AS u JOIN profiles AS p ON u.id = p.user_id WHERE u.active = true AND u.created_at > '2023-01-01' GROUP BY u.id, u.name, u.email, p.title HAVING count(*) > 1 ORDER BY u.created_at DESC, u.name ASC LIMIT 10 OFFSET 5;"`;
@@ -92,8 +84,7 @@ exports[`Pretty SELECT formatting should use custom newline and tab characters i
9284
id,
9385
name,
9486
email
95-
FROM
96-
users
87+
FROM users
9788
WHERE
9889
active = true;"
9990
`;

0 commit comments

Comments
 (0)