Nest Cloud Datastore
Cloud Datastore module for Nestjs
Getting started
yarn add @gojob/nest-cloud-datastore
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
curl localhost:8081
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
yarn integration
docker-compose down