feat: implement create functionality for WapServers across server, sysadmin, and CLI layers
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
CreateWapServerParams,
|
||||
FindWapServerParams,
|
||||
IWapServer,
|
||||
IWapServerAdapter,
|
||||
@@ -28,6 +29,10 @@ export class WapServerAdapterMongoose implements IWapServerAdapter {
|
||||
this.serverList = model<IWapServerDocument>("WapServer", this.schema);
|
||||
}
|
||||
|
||||
public async create(data: CreateWapServerParams): Promise<IWapServer> {
|
||||
return await this.serverList.create(data);
|
||||
}
|
||||
|
||||
public async find(data: FindWapServerParams): Promise<IWapServer[]> {
|
||||
return this.serverList.find(data).exec();
|
||||
}
|
||||
|
||||
@@ -114,6 +114,16 @@ export type UpdateWapServerParams = {
|
||||
active?: boolean;
|
||||
};
|
||||
|
||||
export type CreateWapServerParams = {
|
||||
name: string;
|
||||
ipv4: string;
|
||||
port: number;
|
||||
maxBots: number;
|
||||
ipv6?: string;
|
||||
description?: string;
|
||||
active?: boolean;
|
||||
};
|
||||
|
||||
export type PaginateWapServerParams = FindWapServerParams & {
|
||||
page: number;
|
||||
limit: number;
|
||||
@@ -206,6 +216,10 @@ export type SysAdminGetWapServerParams = PaginateWapServerParams & {
|
||||
payload: IPayload;
|
||||
};
|
||||
|
||||
export type SysAdminCreateWapServerParams = CreateWapServerParams & {
|
||||
payload: IPayload;
|
||||
};
|
||||
|
||||
export type SysAdminUpdateWapServerParams = UpdateWapServerParams & {
|
||||
payload: IPayload;
|
||||
};
|
||||
@@ -227,6 +241,7 @@ export type SysAdminWapServerOrganizationActionRequest = SysAdminWapServerOrgani
|
||||
};
|
||||
|
||||
export interface IWapServerAdapter {
|
||||
create(data: CreateWapServerParams): Promise<IWapServer>;
|
||||
find(data: FindWapServerParams): Promise<IWapServer[]>;
|
||||
findOne(data: FindWapServerParams): Promise<IWapServerDocument | null>;
|
||||
delete(id: string): Promise<void>;
|
||||
@@ -249,6 +264,7 @@ export interface IWapServerManager {
|
||||
getQr(data: BotEventParams): Promise<string>;
|
||||
sendMessage(data: SendBotMessageParams): Promise<void>;
|
||||
sysAdminGetWapServers(data: PaginateWapServerParams): Promise<PaginateWapServerResults>;
|
||||
sysAdminCreateWapServer(data: CreateWapServerParams): Promise<IWapServer>;
|
||||
sysAdminUpdateWapServer(data: UpdateWapServerParams): Promise<IWapServer>;
|
||||
sysAdminAuditWapServer(data: SysAdminWapServerAuditParams): Promise<SysAdminWapServerAuditResult>;
|
||||
sysAdminRecalculateWapServerCount(data: SysAdminWapServerRecalculateCountParams): Promise<SysAdminWapServerRecalculateCountResult>;
|
||||
|
||||
@@ -29,6 +29,7 @@ import {
|
||||
BOT_STATE,
|
||||
SERVER_STATE,
|
||||
BOT_SESSION_STATUS,
|
||||
CreateWapServerParams,
|
||||
VALIDATE_BOT_ENVENT_ERRORS,
|
||||
PaginateWapServerResults,
|
||||
PaginateWapServerParams,
|
||||
@@ -981,6 +982,35 @@ class WapServerManager implements IWapServerManager {
|
||||
return servers;
|
||||
}
|
||||
|
||||
public async sysAdminCreateWapServer(data: CreateWapServerParams): Promise<IWapServer> {
|
||||
if (!data.name || !String(data.name).trim()) {
|
||||
throw new Error("Name is required");
|
||||
}
|
||||
|
||||
if (!data.ipv4 || !String(data.ipv4).trim()) {
|
||||
throw new Error("IPv4 is required");
|
||||
}
|
||||
|
||||
if (!Number.isFinite(data.port) || data.port < 0) {
|
||||
throw new Error("Port must be a finite non-negative number");
|
||||
}
|
||||
|
||||
if (!Number.isFinite(data.maxBots) || data.maxBots < 0) {
|
||||
throw new Error("Max bots must be a finite non-negative number");
|
||||
}
|
||||
|
||||
return await this.servers.create({
|
||||
name: String(data.name).trim(),
|
||||
description: data.description ? String(data.description).trim() : "",
|
||||
ipv4: this.normalizeBotAdminApiUrl(data.ipv4),
|
||||
ipv6: data.ipv6 ? String(data.ipv6).trim() : "",
|
||||
countBots: 0,
|
||||
port: data.port,
|
||||
maxBots: data.maxBots,
|
||||
active: data.active === undefined ? true : Boolean(data.active),
|
||||
} as CreateWapServerParams & { countBots: number });
|
||||
}
|
||||
|
||||
public async sysAdminUpdateWapServer(data: UpdateWapServerParams): Promise<IWapServer> {
|
||||
if (!data.serverId) {
|
||||
throw new Error("Server id is required");
|
||||
|
||||
Reference in New Issue
Block a user