aboutsummaryrefslogtreecommitdiff
path: root/crates/secd/store/pg/sql
diff options
context:
space:
mode:
Diffstat (limited to 'crates/secd/store/pg/sql')
-rw-r--r--crates/secd/store/pg/sql/find_impersonator.sql10
-rw-r--r--crates/secd/store/pg/sql/write_impersonator.sql11
2 files changed, 21 insertions, 0 deletions
diff --git a/crates/secd/store/pg/sql/find_impersonator.sql b/crates/secd/store/pg/sql/find_impersonator.sql
new file mode 100644
index 0000000..e544598
--- /dev/null
+++ b/crates/secd/store/pg/sql/find_impersonator.sql
@@ -0,0 +1,10 @@
+select i2.identity_public_id as impersonator_public_id
+ , i3.identity_public_id as target_public_id
+ , i.created_at
+from secd.impersonator i
+join secd.identity i2 on i.impersonator_id = i2.identity_id
+join secd.identity i3 on i.target_id = i3.identity_id
+join secd.credential c using (credential_id)
+where (($1::uuid is null) or (i2.identity_public_id = $1))
+and (($2::uuid is null) or (i3.identity_public_id = $2))
+and c.revoked_at > $3;
diff --git a/crates/secd/store/pg/sql/write_impersonator.sql b/crates/secd/store/pg/sql/write_impersonator.sql
new file mode 100644
index 0000000..b67b738
--- /dev/null
+++ b/crates/secd/store/pg/sql/write_impersonator.sql
@@ -0,0 +1,11 @@
+insert into secd.impersonator (
+ impersonator_id
+ , target_id
+ , credential_id
+ , created_at
+) values (
+ (select identity_id from secd.identity where identity_public_id = $1)
+ , (select identity_id from secd.identity where identity_public_id = $2)
+ , (select credential_id from secd.credential where credential_public_id = $3)
+ , $4
+);