<h1 align="center"></h1>

<div align="center">
  <a href="http://nestjs.com/" target="_blank">
    <img src="https://nestjs.com/img/logo_text.svg" width="150" alt="Nest Logo" />
  </a>
</div>

<h3 align="center">GbNestFirebase -- generated by @nestjsplus/dyn-schematics</h3>

<div align="center">
  <a href="https://nestjs.com" target="_blank">
    <img src="https://img.shields.io/badge/built%20with-NestJs-red.svg" alt="Built with NestJS">
  </a>
  <a href="https://github.com/nestjsplus/dyn-schematics" target="_blank">
    <img src="https://img.shields.io/badge/Built%20with-%40nestjsplus%2Fdyn--schematics-brightgreen" alt="Built with @nestjsplus/dyn-schematics">
  </a>
</div>

This dynamic module was generated with [Nest Dynamic Package Generator Schematics](https://github.com/nestjsplus/dyn-schematics).  You can read more about using the generator [here](https://github.com/nestjsplus/dyn-schematics).

### Installation

To install this generated project:

```bash
npm install @geekbears/gb-nest-firebase
```
### Usage (Dynamic)

```typescript
@Module({
  imports: [
    GbNestFirebaseModule.forRootAsync({
        inject: [ConfigService],
        useFactory(configService: ConfigService) {
            const privateKey = Buffer.from(configService.get<string>('FIREBASE_PRIVATE_KEY'), 'base64').toString(
                'utf-8',
            );
            const credentials: GbNestFirebaseOptions = {
                googleApplicationCredential: {
                    clientEmail: configService.get('FIREBASE_CLIENT_EMAIL'),
                    privateKey,
                    projectId: configService.get('FIREBASE_PROJECT_ID'),
                },
            };
            return credentials;
        },
    }),
  ],
})
export class AppModule {}

// using in service class
export class Service {
  constructor(
    @InjectFirebaseAdmin() private readonly firebase: FirebaseAdmin,
  ) {}
}
```
### Testing

If you selected `yes` for the question `Generate a testing client?`, a small testing module was automatically generated
called GbNestFirebaseClientModule.  You can test that the template was properly generated by running

```bash
npm run start:dev
```

Then connect to [http://localhost:3000](http://localhost:3000).

### Customizing

The files in the project have comments that should help guide you.

You can also refer to [this article](https://dev.to/nestjs/advanced-nestjs-how-to-build-completely-dynamic-nestjs-modules-1370) for details on the concepts behind this module pattern.

You can read more about using the generator [here](https://github.com/nestjsplus/dyn-schematics).

### About @nestjsplus/dyn-schematics

[Nest Dynamic Package Generator Schematics](https://github.com/nestjsplus/dyn-schematics) generates a starter template for building NestJS dynamic packages.  It uses the `@nestjs/cli` core package, and provides customized schematics for generating modular NestJS applications.  See [here](https://github.com/nestjsplus/dyn-schematics) for the full set of available schematics, and documentation.