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