You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
varexpected="select row_to_json(d) from (select json_build_object('post_id', posts.post_id, 'title', posts.title, 'content', posts.content, 'created_at', posts.created_at, 'user', json_build_object('user_id', users.user_id, 'user_name', users.name), 'blog', json_build_object('blog_id', blogs.blog_id, 'blog_name', blogs.name, 'organization', json_build_object('organization_id', organizations.organization_id, 'organization_name', organizations.name))) as post from posts inner join users on posts.user_id = users.user_id inner join blogs on posts.blog_id = blogs.blog_id inner join organizations on blogs.organization_id = organizations.organization_id where posts.post_id = :post_id) as d limit 1";
60
+
varexpected="with __json as (select posts.post_id as posts__post_id, posts.title as posts__title, posts.content as posts__content, posts.created_at as posts__created_at, users.user_id as users__user_id, users.name as users__user_name, blogs.blog_id as blogs__blog_id, blogs.name as blogs__blog_name, organizations.organization_id as organizations__organization_id, organizations.name as organizations__organization_name from posts inner join users on posts.user_id = users.user_id inner join blogs on posts.blog_id = blogs.blog_id inner join organizations on blogs.organization_id = organizations.organization_id where posts.post_id = :post_id) select row_to_json(d) from (select json_build_object('post_id', __json.posts__post_id, 'title', __json.posts__title, 'content', __json.posts__content, 'created_at', __json.posts__created_at, 'user', json_build_object('user_id', __json.users__user_id, 'user_name', __json.users__user_name), 'blog', json_build_object('blog_id', __json.blogs__blog_id, 'blog_name', __json.blogs__blog_name, 'organization', json_build_object('organization_id', __json.organizations__organization_id, 'organization_name', __json.organizations__organization_name))) as \"post\" from __json) as d limit 1";
53
61
Assert.Equal(expected,actual);
62
+
63
+
/* JSON Sample
64
+
{
65
+
"post": {
66
+
"post_id": 9,
67
+
"title": "Understanding AI",
68
+
"content": "This is a post about AI.",
69
+
"created_at": "2025-02-18T20:25:21.974106",
70
+
"user": {
71
+
"user_id": 1,
72
+
"user_name": "Alice"
73
+
},
74
+
"blog": {
75
+
"blog_id": 1,
76
+
"blog_name": "AI Insights",
77
+
"organization": {
78
+
"organization_id": 1,
79
+
"organization_name": "Tech Corp"
80
+
}
81
+
}
82
+
}
83
+
}
84
+
*/
54
85
}
86
+
87
+
[Fact]
88
+
publicvoidToJsonQueryFlat()
89
+
{
90
+
varquery=QueryAstParser.Parse(QueryText);
91
+
92
+
query.Where("post_id",action: x =>x.Equal(":post_id"))
93
+
.NormalizeSelectClause()
94
+
.ToPostgresJsonQuery(x =>
95
+
{
96
+
returnx.Serialize("posts",isFlat:true,parent:static x =>
97
+
{
98
+
returnx.Serialize("users",jsonKey:"user")
99
+
.Serialize("blogs",jsonKey:"blog",parent:static x =>
varexpected="with __json as (select posts.post_id as posts__post_id, posts.title as posts__title, posts.content as posts__content, posts.created_at as posts__created_at, users.user_id as users__user_id, users.name as users__user_name, blogs.blog_id as blogs__blog_id, blogs.name as blogs__blog_name, organizations.organization_id as organizations__organization_id, organizations.name as organizations__organization_name from posts inner join users on posts.user_id = users.user_id inner join blogs on posts.blog_id = blogs.blog_id inner join organizations on blogs.organization_id = organizations.organization_id where posts.post_id = :post_id) select row_to_json(d) from (select __json.posts__post_id as \"post_id\", __json.posts__title as \"title\", __json.posts__content as \"content\", __json.posts__created_at as \"created_at\", json_build_object('user_id', __json.users__user_id, 'user_name', __json.users__user_name) as \"user\", json_build_object('blog_id', __json.blogs__blog_id, 'blog_name', __json.blogs__blog_name, 'organization', json_build_object('organization_id', __json.organizations__organization_id, 'organization_name', __json.organizations__organization_name)) as \"blog\" from __json) as d limit 1";
<Description>CarbunqleX is a lightweight library that enhances the reusability and maintainability of RawSQL through advanced AST analysis.</Description>
0 commit comments