68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
import {createLogger,transports, format} from 'winston';
|
|
import { createClient } from 'redis';
|
|
import { Repository, Schema, SchemaDefinition } from 'redis-om';
|
|
const baseListingSchemaDef : SchemaDefinition = {
|
|
id: { type: 'string' },
|
|
userId: { type: 'string' },
|
|
listingsCategory: { type: 'string' },
|
|
title: { type: 'string' },
|
|
description: { type: 'string' },
|
|
country: { type: 'string' },
|
|
state:{ type: 'string' },
|
|
city:{ type: 'string' },
|
|
zipCode: { type: 'number' },
|
|
type: { type: 'string' },
|
|
price: { type: 'number' },
|
|
favoritesForUser:{ type: 'string[]' },
|
|
hideImage:{ type: 'boolean' },
|
|
draft:{ type: 'boolean' },
|
|
created:{ type: 'date' },
|
|
updated:{ type: 'date' }
|
|
}
|
|
const businessListingSchemaDef : SchemaDefinition = {
|
|
...baseListingSchemaDef,
|
|
salesRevenue: { type: 'number' },
|
|
cashFlow: { type: 'number' },
|
|
employees: { type: 'number' },
|
|
established: { type: 'number' },
|
|
internalListingNumber: { type: 'number' },
|
|
realEstateIncluded:{ type: 'boolean' },
|
|
leasedLocation:{ type: 'boolean' },
|
|
franchiseResale:{ type: 'boolean' },
|
|
supportAndTraining: { type: 'string' },
|
|
reasonForSale: { type: 'string' },
|
|
brokerLicencing: { type: 'string' },
|
|
internals: { type: 'string' },
|
|
}
|
|
const businessListingSchema = new Schema('business',businessListingSchemaDef, {
|
|
dataStructure: 'JSON'
|
|
})
|
|
const logger = createLogger({
|
|
transports: [
|
|
new transports.Console(),
|
|
],
|
|
format: format.combine(
|
|
format.colorize(),
|
|
format.timestamp(),
|
|
format.printf(({ timestamp, level, message, service }) => {
|
|
return `[${timestamp}] ${service} ${level}: ${message}`;
|
|
})
|
|
),
|
|
});
|
|
const redis = await createClient()
|
|
.on('error', err => console.log('Redis Client Error', err))
|
|
.connect();
|
|
const businessListingRepository = new Repository(businessListingSchema, redis);
|
|
|
|
(async () => {
|
|
logger.info(`start findBusinessListings:`);
|
|
const result = await redis.ft.search('business:index','*',{LIMIT:{from:0,size:200}});
|
|
//result.documents.forEach(d=>console.log(d));
|
|
logger.info(`end findBusinessListings:`);
|
|
|
|
logger.info(`start businessListingRepository:`);
|
|
await businessListingRepository.search().return.all()
|
|
logger.info(`end businessListingRepository:`);
|
|
|
|
redis.disconnect();
|
|
})(); |