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