UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

83 lines (73 loc) 3.21 kB
// tslint:disable:no-console import * as moment from 'moment'; import * as mongoose from 'mongoose'; import * as redis from 'redis'; import { chevre } from '../../../../lib/index'; const project = { id: String(process.env.PROJECT_ID) }; async function main() { const redisClient = redis.createClient<redis.RedisDefaultModules, Record<string, never>, Record<string, never>>({ socket: { port: Number(<string>process.env.REDIS_PORT), host: <string>process.env.REDIS_HOST }, password: <string>process.env.REDIS_KEY }); await redisClient.connect(); await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false }); const transactionNumberRepo = await chevre.repository.TransactionNumber.createInstance({ redisClient, connection: mongoose.connection }); const assetTransactionRepo = await chevre.repository.AssetTransaction.createInstance(mongoose.connection); const { transactionNumber } = await transactionNumberRepo.publishByTimestamp({ startDate: new Date() }); const provider: chevre.factory.reservation.IProvider = { id: '59d20831e53ebc2b4e774466', typeOf: chevre.factory.organizationType.Corporation }; const reserveTransaction = await assetTransactionRepo.start<chevre.factory.assetTransactionType.Reserve>({ project: { id: project.id, typeOf: chevre.factory.organizationType.Project }, typeOf: chevre.factory.assetTransactionType.Reserve, transactionNumber, agent: { ...provider, name: 'sample agent name' }, object: { provider, reservationNumber: transactionNumber, reservationStatus: chevre.factory.reservationStatusType.ReservationPending, disablePendingReservations: true, useHoldStockByTransactionNumber: true, typeOf: chevre.factory.reservationType.ReservationPackage }, expires: moment() .add(1, 'minute') .toDate() }); let cancelResult = await assetTransactionRepo.cancel<chevre.factory.assetTransactionType.Reserve>({ typeOf: reserveTransaction.typeOf, id: reserveTransaction.id }); console.log('cancelResult:', cancelResult); cancelResult = await assetTransactionRepo.cancel<chevre.factory.assetTransactionType.Reserve>({ typeOf: reserveTransaction.typeOf, id: reserveTransaction.id }); console.log('cancelResult:', cancelResult); let transaction = await assetTransactionRepo.findById<chevre.factory.assetTransactionType.Reserve>( { typeOf: chevre.factory.assetTransactionType.Reserve, id: reserveTransaction.id }, ['status', 'transactionNumber', 'project', 'typeOf'] ); console.log('transaction:', transaction); transaction = await assetTransactionRepo.findByTransactionNumber<chevre.factory.assetTransactionType.Reserve>( { typeOf: chevre.factory.assetTransactionType.Reserve, transactionNumber }, ['status'] ); console.log('transaction:', transaction); } main() .then(console.log) .catch(console.error);