Non-Permeable Membrane

    @gojob/nest-cloud-datastore
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.2 • Public • Published

    Nest Cloud Datastore

    Cloud Datastore module for Nestjs

    Getting started

    yarn add @gojob/nest-cloud-datastore
    # or
    npm install @gojob/nest-cloud-datastore

    Implementing

    Importing the module

    If you use the default configuration of GCP client libraries, just import the module CloudDatastoreModule as-is.

    Otherwise, the configuration passed to the constructor of Datastore can be customized in two ways:

    • With the static method forRoot:
    import { CloudDatastoreModule, DatastoreModuleAsyncOptions } from '@gojob/nest-cloud-datastore';
    
    const datastoreModule = CloudDatastoreModule.forRoot({ keyFile: configService.get('GCP_KEY_FILE_DATASTORE') });
    export default datastoreModule;
    • With the static method forRootAsync, for configuration object built dynamically:
    import { CloudDatastoreModule, DatastoreModuleAsyncOptions } from '@gojob/nest-cloud-datastore';
    
    import { ConfigModule } from '../config/config.module';
    import { ConfigService } from '../config/config.service';
    
    const moduleConfig: DatastoreModuleAsyncOptions = {
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => ({ keyFile: configService.get('GCP_KEY_FILE_DATASTORE') }),
    };
    
    const datastoreModule = CloudDatastoreModule.forRootAsync(moduleConfig);
    export default datastoreModule;

    Injecting the service

    Once the module imported, CloudDatastoreService is made available in the injection scope. Have a look at src/cloud-datastore.integration-test.ts to see the methods available.

    Testing

    Thanks to the Docker image google/cloud-sdk including an emulator, testing the integration of your features with Cloud Datastore is pretty straightforward. Download docker-compose.yml from this git repository, then:

    docker-compose up -d # run the emulator
    curl localhost:8081 # ensure the emulator is available
    
    # run your tests, with the following environment variables:
    # DATASTORE_EMULATOR_HOST=localhost:8081
    # DATASTORE_PROJECT_ID=datastore-testing

    A helper class DatastoreEmulator is provided in this package, in order to easily:

    • Remove the data stored by the emulator (reset)
    • Remove the Datastore-specific property of an entity instantiated by the client library (removeDatastoreKeyProp)
    • Create entities (createEntity, createEntities)
    • Fetch all entities stored by the emulator (getAll)

    Examples of tests are available src/cloud-datastore.integration-test.ts.

    Contributing

    yarn install

    Build

    yarn build

    Run tests

    docker-compose up -d # start the Cloud Datastore emulator
    yarn integration
    docker-compose down

    Keywords

    none

    Install

    npm i @gojob/nest-cloud-datastore

    DownloadsWeekly Downloads

    5

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    44.5 kB

    Total Files

    20

    Last publish

    Collaborators

    • martin.lehoux
    • jfumardgojob
    • ericchaps
    • fcarlue
    • alexian-serrano
    • remi-bruguier
    • davidolivier1337
    • miramo
    • typedef