@chevre/domain
Version:
Chevre Domain Library for Node.js
83 lines (73 loc) • 3.21 kB
text/typescript
// 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);