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