|
1 | 1 | import { Injectable } from '@nestjs/common'; |
2 | 2 | import { Gateway } from './gateway.interface'; |
| 3 | +import { CouchbaseService } from '../couchbase/couchbase.service'; |
| 4 | +import { ViewQuery } from 'couchbase'; |
3 | 5 |
|
4 | 6 | @Injectable() |
5 | 7 | export class GatewayService { |
6 | | - private gateways: Gateway[] = []; |
| 8 | + constructor(private readonly couchbaseService: CouchbaseService) { } |
7 | 9 |
|
8 | 10 | add(gateway: Gateway) { |
9 | | - this.gateways.push(gateway); |
| 11 | + return new Promise((resolve, reject) => { |
| 12 | + this.couchbaseService.getBucket().insert(`gateway_${gateway.name}`, {...gateway, type: 'gateway'}, (err, data) => { |
| 13 | + if (err) return reject(null); |
| 14 | + resolve(data); |
| 15 | + }); |
| 16 | + }); |
10 | 17 | } |
11 | 18 |
|
12 | 19 | delete(name: string) { |
13 | | - const gatewayToDelete = this.gateways.find(fr => fr.name === name); |
14 | | - if (!gatewayToDelete) return false; |
15 | | - const newgateways = this.gateways.filter(fr => fr.name === name); |
16 | | - this.gateways = [...newgateways]; |
17 | | - return true; |
| 20 | + return new Promise((resolve, reject) => { |
| 21 | + this.couchbaseService.getBucket().remove(`gateway_${name}`, (err, data) => { |
| 22 | + if (err) return reject(null); |
| 23 | + resolve(data); |
| 24 | + }); |
| 25 | + }); |
18 | 26 | } |
19 | 27 |
|
20 | 28 | update(gateway: Gateway) { |
21 | | - const gatewayToUpdate = this.gateways.find(gw => gw.name === gateway.name); |
22 | | - if (!gatewayToUpdate) return false; |
23 | | - const newGateways = this.gateways.filter(gw => gw.name !== gatewayToUpdate.name); |
24 | | - this.gateways = [...newGateways, gateway]; |
| 29 | + return new Promise((resolve, reject) => { |
| 30 | + this.couchbaseService.getBucket().upsert(`gateway_${gateway.name}`, {...gateway, type: 'gateway'}, (err, data) => { |
| 31 | + if (err) return reject(null); |
| 32 | + resolve(data); |
| 33 | + }); |
| 34 | + }); |
25 | 35 | } |
26 | 36 |
|
27 | 37 | get() { |
28 | | - return this.gateways; |
| 38 | + return new Promise((resolve, reject) => { |
| 39 | + const query = ViewQuery |
| 40 | + .from('gateway', 'getAll') |
| 41 | + .stale(ViewQuery.Update.BEFORE); |
| 42 | + this.couchbaseService.getBucket().query(query, (err, data) => { |
| 43 | + console.log("err", err); |
| 44 | + console.log("data", data) |
| 45 | + if (err) return reject(null); |
| 46 | + const gateways = data.map((g) => g.value); |
| 47 | + resolve(gateways); |
| 48 | + }); |
| 49 | + }); |
29 | 50 | } |
30 | 51 | } |
0 commit comments