1+ -- =================== Modules ===================
2+
3+ -- name: GetModuleByURN :one
4+ SELECT *
5+ FROM modules
6+ WHERE urn = $1 ;
7+
8+ -- name: ListAllModulesForProject :many
9+ SELECT *
10+ FROM modules
11+ WHERE project = $1 ;
12+
13+ -- name: InsertModule :exec
14+ INSERT INTO modules (urn, project, name, configs)
15+ VALUES ($1 , $2 , $3 , $4 );
16+
17+ -- name: UpdateModule :exec
18+ UPDATE modules
19+ SET configs = $2 ,
20+ updated_at = current_timestamp
21+ WHERE urn = $1 ;
22+
23+ -- name: DeleteModule :exec
24+ DELETE
25+ FROM modules
26+ WHERE urn = $1 ;
27+
28+ -- =================== Resources ===================
29+
30+ -- name: GetResourceByURN :one
31+ SELECT r.* ,
32+ array_agg(rt .tag )::text [] AS tags,
33+ (CASE
34+ WHEN COUNT (rd .dependency_key ) > 0 THEN
35+ json_object_agg(rd .dependency_key , d .urn )
36+ ELSE
37+ ' {}' ::json
38+ END) AS dependencies
39+ FROM resources r
40+ LEFT JOIN resource_tags rt ON r .id = rt .resource_id
41+ LEFT JOIN resource_dependencies rd ON r .id = rd .resource_id
42+ LEFT JOIN resources d ON rd .depends_on = d .id
43+ WHERE r .urn = $1
44+ GROUP BY r .id ;
45+
46+ -- name: GetResourceDependencies :one
47+ SELECT (CASE
48+ WHEN COUNT (rd .dependency_key ) > 0 THEN
49+ json_object_agg(rd .dependency_key , d .urn )
50+ ELSE
51+ ' {}' ::json
52+ END) AS dependencies
53+ FROM resources r
54+ LEFT JOIN resource_dependencies rd ON r .id = rd .resource_id
55+ LEFT JOIN resources d ON rd .depends_on = d .id
56+ WHERE r .urn = $1
57+ GROUP BY r .id ;
58+
59+ -- name: ListResourceURNsByFilter :many
60+ SELECT r.* ,
61+ array_agg(rt .tag )::text [] AS tags
62+ FROM resources r
63+ JOIN resource_tags rt ON r .id = rt .resource_id
64+ WHERE (sqlc .narg (' project' )::text IS NULL OR r .project = sqlc .narg (' project' ))
65+ AND (sqlc .narg (' kind' )::text IS NULL OR r .kind = sqlc .narg (' kind' ))
66+ GROUP BY r .id ;
67+
68+ -- name: DeleteResourceDependenciesByURN :exec
69+ DELETE
70+ FROM resource_dependencies
71+ WHERE resource_id = (SELECT id FROM resources WHERE urn = $1 );
72+
73+ -- name: DeleteResourceTagsByURN :exec
74+ DELETE
75+ FROM resource_tags
76+ WHERE resource_id = (SELECT id FROM resources WHERE urn = $1 );
77+
78+ -- name: DeleteResourceByURN :exec
79+ DELETE
80+ FROM resources
81+ WHERE urn = $1 ;
82+
83+ -- name: InsertResource :one
84+ INSERT INTO resources (" urn" , " kind" , " project" , " name" , " created_at" , " updated_at" , " created_by" , " updated_by" ,
85+ " spec_configs" , " state_status" , " state_output" , " state_module_data" ,
86+ " state_next_sync" , " state_sync_result" )
87+ VALUES ($1 , $2 , $3 , $4 , $5 , $6 , $7 , $8 , $9 , $10 , $11 , $12 , $13 , $14 )
88+ RETURNING id;
89+
90+ -- name: InsertResourceTags :copyfrom
91+ INSERT INTO resource_tags (resource_id, tag)
92+ VALUES ($1 , $2 );
93+
94+ -- name: InsertResourceDependency :exec
95+ INSERT INTO resource_dependencies (resource_id, dependency_key, depends_on)
96+ VALUES ($1 , $2 , (SELECT id FROM resources WHERE urn = $3 ));
97+
98+ -- name: UpdateResource :one
99+ UPDATE resources
100+ SET updated_at = current_timestamp ,
101+ updated_by = $2 ,
102+ spec_configs = $3 ,
103+ state_status = $4 ,
104+ state_output = $5 ,
105+ state_module_data = $6 ,
106+ state_next_sync = $7 ,
107+ state_sync_result = $8
108+ WHERE urn = $1
109+ RETURNING id;
110+
111+ -- =================== Revisions ===================
112+
113+ -- name: ListResourceRevisions :many
114+ SELECT rev.* , array_agg(distinct rt .tag )::text [] AS tags
115+ FROM resources r
116+ JOIN revisions rev ON r .id = rev .resource_id
117+ JOIN revision_tags rt ON rev .id = rt .revision_id
118+ WHERE r .urn = $1
119+ GROUP BY rev .id ;
120+
121+ -- name: InsertRevision :exec
122+ INSERT INTO revisions (" resource_id" , " reason" , " spec_configs" , " created_by" )
123+ VALUES ($1 , $2 , $3 , $4 );
0 commit comments