Skip to content

Commit

Permalink
update db service object
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefan Werfling committed Sep 15, 2023
1 parent 47b4ca7 commit 514c944
Show file tree
Hide file tree
Showing 14 changed files with 201 additions and 116 deletions.
10 changes: 2 additions & 8 deletions backend/src/Routes/Main/Domain/Delete.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {DBHelper, DomainRecordDB, DomainServiceDB} from 'flyingfish_core';
import {DBHelper, DomainRecordDB, DomainServiceDB, NginxStreamServiceDB} from 'flyingfish_core';
import {DomainDelete, DomainDeleteResponse, StatusCodes} from 'flyingfish_schemas';
import {NginxHttp as NginxHttpDB} from '../../../inc/Db/MariaDb/Entity/NginxHttp.js';
import {NginxStream as NginxStreamDB} from '../../../inc/Db/MariaDb/Entity/NginxStream.js';

/**
* Delete
Expand All @@ -14,7 +13,6 @@ export class Delete {
*/
public static async deleteDomain(data: DomainDelete): Promise<DomainDeleteResponse> {
const domainRecordRepository = DBHelper.getRepository(DomainRecordDB);
const streamRepository = DBHelper.getRepository(NginxStreamDB);
const httpRepository = DBHelper.getRepository(NginxHttpDB);

const domain = await DomainServiceDB.getInstance().findOne(data.id);
Expand All @@ -27,11 +25,7 @@ export class Delete {
};
}

const countStreams = await streamRepository.count({
where: {
domain_id: domain.id
}
});
const countStreams = await NginxStreamServiceDB.getInstance().countByDomain(domain.id);

const countHttps = await httpRepository.count({
where: {
Expand Down
10 changes: 2 additions & 8 deletions backend/src/Routes/Main/Listen/Delete.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import {DBHelper} from 'flyingfish_core';
import {DBHelper, NginxStreamServiceDB} from 'flyingfish_core';
import {DefaultReturn, ListenDelete, StatusCodes} from 'flyingfish_schemas';
import {NginxHttp as NginxHttpDB} from '../../../inc/Db/MariaDb/Entity/NginxHttp.js';
import {NginxListen as NginxListenDB} from '../../../inc/Db/MariaDb/Entity/NginxListen.js';
import {NginxStream as NginxStreamDB} from '../../../inc/Db/MariaDb/Entity/NginxStream.js';

/**
* Delete
Expand All @@ -15,7 +14,6 @@ export class Delete {
*/
public static async deleteListen(data: ListenDelete): Promise<DefaultReturn> {
const listenRepository = DBHelper.getRepository(NginxListenDB);
const streamRepository = DBHelper.getRepository(NginxStreamDB);
const httpRepository = DBHelper.getRepository(NginxHttpDB);

const tListen = await listenRepository.findOne({
Expand All @@ -32,11 +30,7 @@ export class Delete {
};
}

const countStream = await streamRepository.count({
where: {
listen_id: tListen.id
}
});
const countStream = await NginxStreamServiceDB.getInstance().countByListen(tListen.id);

const countHttp = await httpRepository.count({
where: {
Expand Down
17 changes: 9 additions & 8 deletions backend/src/Routes/Main/Route/List.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
import {DBHelper, DomainServiceDB, NginxUpstreamServiceDB, SshPortDB, SshUserDB} from 'flyingfish_core';
import {
DBHelper,
DomainServiceDB,
NginxStreamServiceDB,
NginxUpstreamServiceDB,
SshPortDB,
SshUserDB
} from 'flyingfish_core';
import {
Location,
RouteData,
Expand All @@ -16,7 +23,6 @@ import {
NginxHttpVariableContextType
} from '../../../inc/Db/MariaDb/Entity/NginxHttpVariable.js';
import {NginxLocation as NginxLocationDB} from '../../../inc/Db/MariaDb/Entity/NginxLocation.js';
import {NginxStream as NginxStreamDB} from '../../../inc/Db/MariaDb/Entity/NginxStream.js';

/**
* List
Expand All @@ -30,7 +36,6 @@ export class List {
const list: RouteData[] = [];
const sshportList: RouteSshPort[] = [];

const streamRepository = DBHelper.getRepository(NginxStreamDB);
const httpRepository = DBHelper.getRepository(NginxHttpDB);
const httpVariableRepository = DBHelper.getRepository(NginxHttpVariableDB);
const locationRepository = DBHelper.getRepository(NginxLocationDB);
Expand All @@ -45,11 +50,7 @@ export class List {

// stream ------------------------------------------------------------------------------------------

const streams = await streamRepository.find({
where: {
domain_id: adomain.id
}
});
const streams = await NginxStreamServiceDB.getInstance().findAllByDomain(adomain.id);

if (streams) {
for await (const tstream of streams) {
Expand Down
15 changes: 3 additions & 12 deletions backend/src/Routes/Main/Route/Stream/Delete.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {DBHelper, NginxUpstreamServiceDB} from 'flyingfish_core';
import {NginxStreamServiceDB, NginxUpstreamServiceDB} from 'flyingfish_core';
import {DefaultReturn, RouteStreamDelete, StatusCodes} from 'flyingfish_schemas';
import {NginxStream as NginxStreamDB} from '../../../../inc/Db/MariaDb/Entity/NginxStream.js';
import {Save} from './Save.js';

/**
Expand All @@ -20,13 +19,7 @@ export class Delete {
};
}

const streamRepository = DBHelper.getRepository(NginxStreamDB);

const stream = await streamRepository.findOne({
where: {
id: data.id
}
});
const stream = await NginxStreamServiceDB.getInstance().findOne(data.id);

if (stream) {
if (stream.isdefault) {
Expand All @@ -51,9 +44,7 @@ export class Delete {

// delete stream ---------------------------------------------------------------------------------------

const result = await streamRepository.delete({
id: stream.id
});
const result = await NginxStreamServiceDB.getInstance().remove(stream.id);

if (result) {
return {
Expand Down
56 changes: 27 additions & 29 deletions backend/src/Routes/Main/Route/Stream/Save.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
import * as bcrypt from 'bcrypt';
import {DBHelper, NginxUpstreamDB, NginxUpstreamServiceDB, SshPortDB, SshUserDB} from 'flyingfish_core';
import {DefaultReturn, RouteStreamSave, RouteStreamSSH, StatusCodes} from 'flyingfish_schemas';
import {Not} from 'typeorm';
import {NginxLocation as NginxLocationDB} from '../../../../inc/Db/MariaDb/Entity/NginxLocation.js';
import {
NginxStream as NginxStreamDB,
NginxStreamDestinationType,
NginxStreamSshR
} from '../../../../inc/Db/MariaDb/Entity/NginxStream.js';
DBHelper, NginxStreamDB,
NginxStreamServiceDB,
NginxUpstreamDB,
NginxUpstreamServiceDB,
SshPortDB,
SshUserDB
} from 'flyingfish_core';
import {
DefaultReturn,
NginxStreamDestinationType, NginxStreamSshR,
RouteStreamSave,
RouteStreamSSH,
StatusCodes
} from 'flyingfish_schemas';
import {NginxLocation as NginxLocationDB} from '../../../../inc/Db/MariaDb/Entity/NginxLocation.js';

/**
* SaveStream
Expand Down Expand Up @@ -65,20 +72,17 @@ export class Save {
* @protected
*/
public static async removeOldSshPort(sshportId: number): Promise<boolean> {
const streamRepository = DBHelper.getRepository(NginxStreamDB);
const sshportRepository = DBHelper.getRepository(SshPortDB);
const sshuserRepository = DBHelper.getRepository(SshUserDB);
const locationRepository = DBHelper.getRepository(NginxLocationDB);

// first check in used -----------------------------------------------------------------------------------------

const usedCountStreamROut = await streamRepository.count({
where: {
destination_type: NginxStreamDestinationType.ssh_r,
ssh_r_type: NginxStreamSshR.out,
sshport_id: sshportId
}
});
const usedCountStreamROut = await NginxStreamServiceDB.getInstance().countStreamOut(
NginxStreamDestinationType.ssh_r,
NginxStreamSshR.out,
sshportId
);

const outUsedCountLoc = await locationRepository.count({
where: {
Expand Down Expand Up @@ -222,13 +226,11 @@ export class Save {

// check is stream listen and domain already exist ---------------------------------------------------------

const streamRepository = DBHelper.getRepository(NginxStreamDB);

const caStream = await streamRepository.countBy({
listen_id: data.stream.listen_id,
domain_id: data.domainid,
id: Not(data.stream.id)
});
const caStream = await NginxStreamServiceDB.getInstance().countStreamBy(
data.stream.listen_id,
data.domainid,
data.stream.id
);

if (caStream > 0) {
return {
Expand All @@ -242,11 +244,7 @@ export class Save {
let aStream: NginxStreamDB|null = null;

if (data.stream.id !== 0) {
const tStream = await streamRepository.findOne({
where: {
id: data.stream.id
}
});
const tStream = await NginxStreamServiceDB.getInstance().findOne(data.stream.id);

if (tStream) {
if (tStream.isdefault) {
Expand Down Expand Up @@ -350,7 +348,7 @@ export class Save {
}
}

aStream = await DBHelper.getDataSource().manager.save(aStream);
aStream = await NginxStreamServiceDB.getInstance().save(aStream);

if (aStream.destination_listen_id > 0) {
// clear old upstreams
Expand Down
20 changes: 15 additions & 5 deletions backend/src/inc/Db/MariaDb/DBSetup.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
import * as bcrypt from 'bcrypt';
import {DBHelper, DomainDB, DomainServiceDB, Logger, NginxUpstreamDB, UserDB, UserServiceDB, NginxUpstreamServiceDB} from 'flyingfish_core';
import {
DBHelper,
DomainDB,
DomainServiceDB,
Logger,
NginxUpstreamDB,
UserDB,
UserServiceDB,
NginxUpstreamServiceDB,
NginxStreamDB, NginxStreamServiceDB
} from 'flyingfish_core';
import {NginxStreamDestinationType} from 'flyingfish_schemas';
import {ListenCategory, ListenProtocol, ListenTypes, NginxListen as NginxListenDB} from './Entity/NginxListen.js';
import {NginxStream as NginxStreamDB, NginxStreamDestinationType} from './Entity/NginxStream.js';

/**
* DBSetup
Expand Down Expand Up @@ -129,7 +139,7 @@ export class DBSetup {
sTo5333.index = 9999;
sTo5333.destination_type = NginxStreamDestinationType.upstream;

sTo5333 = await DBHelper.getDataSource().manager.save(sTo5333);
sTo5333 = await NginxStreamServiceDB.getInstance().save(sTo5333);

const sTo5333Up = new NginxUpstreamDB();
sTo5333Up.stream_id = sTo5333.id;
Expand All @@ -147,7 +157,7 @@ export class DBSetup {
sTo10443.destination_type = NginxStreamDestinationType.listen;
sTo10443.destination_listen_id = l10443.id;

await DBHelper.getDataSource().manager.save(sTo10443);
await NginxStreamServiceDB.getInstance().save(sTo10443);

const sTo10080 = new NginxStreamDB();
sTo10080.domain_id = defaultDomain.id;
Expand All @@ -158,7 +168,7 @@ export class DBSetup {
sTo10080.destination_type = NginxStreamDestinationType.listen;
sTo10080.destination_listen_id = l10080.id;

await DBHelper.getDataSource().manager.save(sTo10080);
await NginxStreamServiceDB.getInstance().save(sTo10080);
}

}
15 changes: 3 additions & 12 deletions backend/src/inc/Service/NginxService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ import {
DBHelper,
DomainServiceDB,
FileHelper,
Logger,
Logger, NginxStreamDB, NginxStreamServiceDB,
NginxUpstreamDB,
NginxUpstreamServiceDB,
SshPortDB
} from 'flyingfish_core';
import {NginxStreamDestinationType, NginxStreamSshR} from 'flyingfish_schemas';
import fs from 'fs/promises';
import path from 'path';
import {SchemaErrors} from 'vts';
Expand All @@ -25,11 +26,6 @@ import {
NginxListen as NginxListenDB
} from '../Db/MariaDb/Entity/NginxListen.js';
import {NginxLocation as NginxLocationDB, NginxLocationDestinationTypes} from '../Db/MariaDb/Entity/NginxLocation.js';
import {
NginxStream as NginxStreamDB,
NginxStreamDestinationType,
NginxStreamSshR
} from '../Db/MariaDb/Entity/NginxStream.js';
import {Context} from '../Nginx/Config/Context.js';
import {If} from '../Nginx/Config/If.js';
import {Listen, ListenProtocol} from '../Nginx/Config/Listen.js';
Expand Down Expand Up @@ -317,7 +313,6 @@ export class NginxService {
// read db -----------------------------------------------------------------------------------------------------

const listenRepository = DBHelper.getRepository(NginxListenDB);
const streamRepository = DBHelper.getRepository(NginxStreamDB);
const httpRepository = DBHelper.getRepository(NginxHttpDB);
const httpVariableRepository = DBHelper.getRepository(NginxHttpVariableDB);
const locationRepository = DBHelper.getRepository(NginxLocationDB);
Expand All @@ -333,11 +328,7 @@ export class NginxService {
// read streams by db --------------------------------------------------------------------------------------

if (alisten.listen_type === ListenTypes.stream) {
const tstreams = await streamRepository.find({
where: {
listen_id: alisten.id
}
});
const tstreams = await NginxStreamServiceDB.getInstance().findAllByListen(alisten.id);

for await (const astream of tstreams) {
const adomain = await DomainServiceDB.getInstance().findOne(astream.domain_id);
Expand Down
2 changes: 0 additions & 2 deletions backend/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ import {DBSetup} from './inc/Db/MariaDb/DBSetup.js';
import {NginxHttp as NginxHttpDB} from './inc/Db/MariaDb/Entity/NginxHttp.js';
import {NginxListen as NginxListenDB} from './inc/Db/MariaDb/Entity/NginxListen.js';
import {NginxLocation as NginxLocationDB} from './inc/Db/MariaDb/Entity/NginxLocation.js';
import {NginxStream as NginxStreamDB} from './inc/Db/MariaDb/Entity/NginxStream.js';
import {NginxServer} from './inc/Nginx/NginxServer.js';
import {HttpServer} from './inc/Server/HttpServer.js';
import {DynDnsService} from './inc/Service/DynDnsService.js';
Expand Down Expand Up @@ -115,7 +114,6 @@ import exitHook from 'async-exit-hook';
const entities: MixedList<Function | string | EntitySchema> = await DBEntitiesLoader.loadEntities() as [];

entities.push(NginxListenDB);
entities.push(NginxStreamDB);
entities.push(NginxHttpDB);
entities.push(NginxHttpVariableDB);
entities.push(NginxLocationDB);
Expand Down
2 changes: 2 additions & 0 deletions core/src/inc/Db/MariaDb/DBEntitiesLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {DynDnsServerUser} from './Entity/DynDnsServerUser.js';
import {GatewayIdentifier} from './Entity/GatewayIdentifier.js';
import {IpBlacklist} from './Entity/IpBlacklist.js';
import {NatPort} from './Entity/NatPort.js';
import {NginxStream} from './Entity/NginxStream.js';
import {NginxUpstream} from './Entity/NginxUpstream.js';
import {Settings} from './Entity/Settings.js';
import {SshPort} from './Entity/SshPort.js';
Expand Down Expand Up @@ -41,6 +42,7 @@ export class DBEntitiesLoader {
GatewayIdentifier,
IpBlacklist,
NatPort,
NginxStream,
NginxUpstream,
Settings,
SshPort,
Expand Down
Loading

0 comments on commit 514c944

Please sign in to comment.