@@ -79,6 +79,13 @@ CREATE SCHEMA realtime;
79
79
CREATE SCHEMA storage ;
80
80
81
81
82
+ --
83
+ -- Name: vault; Type: SCHEMA; Schema: -; Owner: -
84
+ --
85
+
86
+ CREATE SCHEMA vault ;
87
+
88
+
82
89
--
83
90
-- Name: pg_graphql; Type: EXTENSION; Schema: -; Owner: -
84
91
--
@@ -135,6 +142,20 @@ CREATE EXTENSION IF NOT EXISTS pgjwt WITH SCHEMA extensions;
135
142
COMMENT ON EXTENSION pgjwt IS ' JSON Web Token API for Postgresql' ;
136
143
137
144
145
+ --
146
+ -- Name: supabase_vault; Type: EXTENSION; Schema: -; Owner: -
147
+ --
148
+
149
+ CREATE EXTENSION IF NOT EXISTS supabase_vault WITH SCHEMA vault;
150
+
151
+
152
+ --
153
+ -- Name: EXTENSION supabase_vault; Type: COMMENT; Schema: -; Owner: -
154
+ --
155
+
156
+ COMMENT ON EXTENSION supabase_vault IS ' Supabase Vault Extension' ;
157
+
158
+
138
159
--
139
160
-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -
140
161
--
552
573
$$;
553
574
554
575
576
+ --
577
+ -- Name: secrets_encrypt_secret_secret(); Type: FUNCTION; Schema: vault; Owner: -
578
+ --
579
+
580
+ CREATE FUNCTION vault .secrets_encrypt_secret_secret() RETURNS trigger
581
+ LANGUAGE plpgsql
582
+ AS $$
583
+ BEGIN
584
+ new .secret = CASE WHEN new .secret IS NULL THEN NULL ELSE
585
+ CASE WHEN new .key_id IS NULL THEN NULL ELSE pg_catalog .encode (
586
+ pgsodium .crypto_aead_det_encrypt (
587
+ pg_catalog .convert_to (new .secret , ' utf8' ),
588
+ pg_catalog .convert_to ((new .id ::text || new .description ::text || new .created_at ::text || new .updated_at ::text )::text , ' utf8' ),
589
+ new .key_id ::uuid,
590
+ new .nonce
591
+ ),
592
+ ' base64' ) END END;
593
+ RETURN new;
594
+ END;
595
+ $$;
596
+
597
+
555
598
SET default_tablespace = ' ' ;
556
599
557
600
SET default_table_access_method = heap;
@@ -738,6 +781,30 @@ CREATE TABLE storage.objects (
738
781
);
739
782
740
783
784
+ --
785
+ -- Name: decrypted_secrets; Type: VIEW; Schema: vault; Owner: -
786
+ --
787
+
788
+ CREATE VIEW vault .decrypted_secrets AS
789
+ SELECT secrets .id ,
790
+ secrets .name ,
791
+ secrets .description ,
792
+ secrets .secret ,
793
+ CASE
794
+ WHEN (secrets .secret IS NULL ) THEN NULL ::text
795
+ ELSE
796
+ CASE
797
+ WHEN (secrets .key_id IS NULL ) THEN NULL ::text
798
+ ELSE convert_from(pgsodium .crypto_aead_det_decrypt (decode(secrets .secret , ' base64' ::text ), convert_to(((((secrets .id )::text || secrets .description ) || (secrets .created_at )::text ) || (secrets .updated_at )::text ), ' utf8' ::name), secrets .key_id , secrets .nonce ), ' utf8' ::name)
799
+ END
800
+ END AS decrypted_secret,
801
+ secrets .key_id ,
802
+ secrets .nonce ,
803
+ secrets .created_at ,
804
+ secrets .updated_at
805
+ FROM vault .secrets ;
806
+
807
+
741
808
--
742
809
-- Name: refresh_tokens id; Type: DEFAULT; Schema: auth; Owner: -
743
810
--
0 commit comments