fix: update nano db configuration

pull/25/head
shancheas 2024-07-09 17:37:22 +07:00
parent 99261f37cd
commit c87c852509
2 changed files with 42 additions and 21 deletions

View File

@ -1,21 +1,32 @@
import { Injectable } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { DatabaseListen } from '../../constants'; import { DatabaseListen } from '../../constants';
import { EventBus } from '@nestjs/cqrs'; import { EventBus } from '@nestjs/cqrs';
import { ChangeDocEvent } from '../../domain/events/change-doc.event'; import { ChangeDocEvent } from '../../domain/events/change-doc.event';
import { ConfigService } from '@nestjs/config';
import * as Nano from 'nano';
@Injectable() @Injectable()
export class CouchService { export class CouchService {
constructor(private eventBus: EventBus) {} constructor(
private eventBus: EventBus,
private configService: ConfigService,
) {}
get nanoInstance() {
const couchConfiguration = this.configService.get<string>('COUCHDB_CONFIG');
return Nano(couchConfiguration);
}
async onModuleInit() { async onModuleInit() {
const nano = require('nano')('http://root:password@172.10.10.2:5970'); const nano = this.nanoInstance;
for (const database of DatabaseListen) { for (const database of DatabaseListen) {
const db = nano.db.use(database); const db = nano.db.use(database);
db.changesReader.start({ includeDocs: true }).on('change', (change) => { db.changesReader.start({ includeDocs: true }).on('change', (change) => {
this.changeDoc(change, database); this.changeDoc(change, database);
}); });
console.log(`start listen database ${database}`); Logger.log(`start listen database ${database}`, 'CouchService');
} }
} }
@ -31,7 +42,7 @@ export class CouchService {
public async createDoc(data, database) { public async createDoc(data, database) {
try { try {
const nano = require('nano')('http://root:password@172.10.10.2:5970'); const nano = this.nanoInstance;
const db = nano.use(database); const db = nano.use(database);
return await db.insert(data); return await db.insert(data);
} catch (error) {} } catch (error) {}
@ -39,7 +50,7 @@ export class CouchService {
public async deleteDoc(data, database) { public async deleteDoc(data, database) {
try { try {
const nano = require('nano')('http://root:password@172.10.10.2:5970'); const nano = this.nanoInstance;
const db = nano.use(database); const db = nano.use(database);
const result = await db.get(data.id); const result = await db.get(data.id);
await db.destroy(data.id, result._rev); await db.destroy(data.id, result._rev);
@ -48,7 +59,7 @@ export class CouchService {
public async updateDoc(data, database) { public async updateDoc(data, database) {
try { try {
const nano = require('nano')('http://root:password@172.10.10.2:5970'); const nano = this.nanoInstance;
const db = nano.use(database); const db = nano.use(database);
const result = await db.get(data.id); const result = await db.get(data.id);
console.log(result, 'dsa'); console.log(result, 'dsa');

View File

@ -1,19 +1,28 @@
import { Body, Controller, Get, Post } from '@nestjs/common'; import { Body, Controller, Get, Injectable, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger'; import { ApiTags } from '@nestjs/swagger';
import { Unprotected } from 'src/core/guards'; import { Public } from 'src/core/guards';
import * as Nano from 'nano'; import * as Nano from 'nano';
import { CreateUserPrivilegeDto } from 'src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto'; import { CreateUserPrivilegeDto } from 'src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto';
import { ConfigService } from '@nestjs/config';
@ApiTags(`couch`) @ApiTags(`couch`)
@Controller('v1/couch') @Controller('v1/couch')
@Unprotected() @Public()
@Injectable()
export class CouchDataController { export class CouchDataController {
constructor(private configService: ConfigService) {}
get nanoInstance() {
const couchConfiguration = this.configService.get<string>('COUCHDB_CONFIG');
return Nano(couchConfiguration);
}
@Post() @Post()
async createDoc(@Body() entity: CreateUserPrivilegeDto) { async createDoc(@Body() entity: CreateUserPrivilegeDto) {
try { try {
let n = Nano('http://admin:secret@127.0.0.1:5984'); const n = this.nanoInstance;
let db = await n.db.create(entity.name); await n.db.create(entity.name);
} catch (error) { } catch (error) {
console.log(error, 'dsa'); console.log(error, 'dsa');
} }
@ -22,17 +31,17 @@ export class CouchDataController {
@Post('doc') @Post('doc')
async createDocs(@Body() entity: CreateUserPrivilegeDto) { async createDocs(@Body() entity: CreateUserPrivilegeDto) {
try { try {
const nano = require('nano')('http://admin:secret@127.0.0.1:5984'); const nano = this.nanoInstance;
const people = nano.db.use('string'); const people = nano.db.use('string');
console.log(await people.info()); console.log(await people.info(), entity);
const data = { // const data = {
id: '1212', // id: '1212',
name: 'dsadas', // name: 'dsadas',
}; // };
// await people.insert(data) // await people.insert(data)
people.changesReader people.changesReader
.start() .start({})
.on('change', (change) => { .on('change', (change) => {
console.log(change); console.log(change);
}) })
@ -53,9 +62,10 @@ export class CouchDataController {
@Get() @Get()
async getDoc() { async getDoc() {
try { try {
let n = Nano('http://admin:secret@127.0.0.1:5984'); const n = this.nanoInstance;
const people = n.use('string'); const people = n.db.get('user');
return people;
// return people.get(); // return people.get();
} catch (error) { } catch (error) {
console.log(error, 'dsa'); console.log(error, 'dsa');