geo coding, user service, listing for business

This commit is contained in:
2024-03-10 20:59:23 +01:00
parent 06f349d1c3
commit 6ad40b6dca
59 changed files with 120466 additions and 687 deletions

View File

@@ -0,0 +1,28 @@
import { Body, Controller, Get, Inject, Param, Post, Put } from '@nestjs/common';
import { UserService } from './user.service.js';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { UserEntity } from 'src/models/server.model.js';
@Controller('user')
export class UserController {
constructor(private userService:UserService,@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger){}
@Get(':id')
findById(@Param('id') id:string): any {
return this.userService.getUserById(id);
}
@Post()
save(@Body() user: any):Promise<UserEntity>{
this.logger.info(`User persisted: `);
return this.userService.saveUser(user);
}
// @Put()
// update(@Body() user: any):Promise<UserEntity>{
// this.logger.info(`update User`);
// return this.userService.saveUser(user);
// }
}

View File

@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { UserController } from './user.controller.js';
import { UserService } from './user.service.js';
import { RedisModule } from '../redis/redis.module.js';
@Module({
imports: [RedisModule],
controllers: [UserController],
providers: [UserService]
})
export class UserModule {
}

View File

@@ -0,0 +1,46 @@
import { Get, Inject, Injectable, Param } from '@nestjs/common';
import { createClient } from 'redis';
import { Entity, Repository, Schema } from 'redis-om';
import { User } from '../models/main.model.js';
import { REDIS_CLIENT } from '../redis/redis.module.js';
import { UserEntity } from '../models/server.model.js';
// export const redis = createClient({ url: 'redis://localhost:6379' })
@Injectable()
export class UserService {
userRepository:Repository;
userSchema = new Schema('user',{
// id: string;
firstname: { type: 'string' },
lastname: { type: 'string' },
email: { type: 'string' },
phoneNumber: { type: 'string' },
companyOverview:{ type: 'string' },
companyWebsite:{ type: 'string' },
companyLocation:{ type: 'string' },
offeredServices:{ type: 'string' },
areasServed:{ type: 'string' },
names:{ type: 'string[]', path:'$.licensedIn.name' },
values:{ type: 'string[]', path:'$.licensedIn.value' }
}, {
dataStructure: 'JSON'
})
constructor(@Inject(REDIS_CLIENT) private readonly client: any){
// const redis = createClient({ url: 'redis://localhost:6379' })
this.userRepository = new Repository(this.userSchema, client)
}
async getUserById( id:string){
return await this.userRepository.fetch(id);
}
async saveUser(user:any):Promise<UserEntity>{
return await this.userRepository.save(user.id,user) as UserEntity
}
// createUser(){
// }
// updateById(id:string){
// }
}