# KeycloakPostgresExtension Methods

- Package: [CommunityToolkit.Aspire.Hosting.Keycloak.Extensions](/reference/api/csharp/communitytoolkit.aspire.hosting.keycloak.extensions.md)
- Type: [KeycloakPostgresExtension](/reference/api/csharp/communitytoolkit.aspire.hosting.keycloak.extensions/keycloakpostgresextension.md)
- Kind: `Methods`
- Members: `1`

Provides extension methods for integrating Keycloak resources with PostgreSQL.

## WithPostgres(IResourceBuilder<KeycloakResource>, IResourceBuilder<PostgresDatabaseResource>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, bool)

- Name: `WithPostgres(IResourceBuilder<KeycloakResource>, IResourceBuilder<PostgresDatabaseResource>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, bool)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KeycloakResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/KeycloakPostgresExtension.cs#L68-L75)

```csharp
public static class KeycloakPostgresExtension
{
    public static IResourceBuilder<KeycloakResource> WithPostgres(
        this IResourceBuilder<KeycloakResource> builder,
        IResourceBuilder<PostgresDatabaseResource> database,
        IResourceBuilder<ParameterResource>? username = null,
        IResourceBuilder<ParameterResource>? password = null,
        bool xaEnabled = false)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KeycloakResource>`)
  The resource builder for configuring a Keycloak resource.
- `database` (`IResourceBuilder<PostgresDatabaseResource>`)
  The resource builder for the Postgres database that Keycloak will connect to.
- `username` (`IResourceBuilder<ParameterResource>`) `optional`
  (Optional) The resource builder for the parameter defining the database username. If not provided, the parent database resource's username parameter will be used.
- `password` (`IResourceBuilder<ParameterResource>`) `optional`
  (Optional) The resource builder for the parameter defining the database password. If not provided, the parent database resource's password parameter will be used.
- `xaEnabled` (`bool`) `optional`
  A boolean flag indicating whether XA transactions are enabled. Defaults to false.

## Returns

`IResourceBuilder<KeycloakResource>` -- An updated resource builder with Postgres integration configured for the Keycloak resource.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
