shield_oidc/
storage.rs

1use async_trait::async_trait;
2
3use shield::{Storage, StorageError, User};
4
5use crate::{
6    connection::{CreateOidcConnection, OidcConnection, UpdateOidcConnection},
7    provider::OidcProvider,
8};
9
10#[async_trait]
11pub trait OidcStorage<U: User>: Storage<U> + Sync {
12    async fn oidc_providers(&self) -> Result<Vec<OidcProvider>, StorageError>;
13
14    async fn oidc_provider_by_id_or_slug(
15        &self,
16        provider_id: &str,
17    ) -> Result<Option<OidcProvider>, StorageError>;
18
19    async fn oidc_connection_by_id(
20        &self,
21        connection_id: &str,
22    ) -> Result<Option<OidcConnection>, StorageError>;
23
24    async fn oidc_connection_by_identifier(
25        &self,
26        provider_id: &str,
27        identifier: &str,
28    ) -> Result<Option<OidcConnection>, StorageError>;
29
30    async fn create_oidc_connection(
31        &self,
32        connection: CreateOidcConnection,
33    ) -> Result<OidcConnection, StorageError>;
34
35    async fn update_oidc_connection(
36        &self,
37        connection: UpdateOidcConnection,
38    ) -> Result<OidcConnection, StorageError>;
39
40    async fn delete_oidc_connection(&self, connection_id: &str) -> Result<(), StorageError>;
41}