Skip to content

Commit

Permalink
types
Browse files Browse the repository at this point in the history
  • Loading branch information
sinamics committed Aug 5, 2023
1 parent 10b5367 commit 04ce9c1
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 54 deletions.
4 changes: 2 additions & 2 deletions src/pages/central/[id].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,8 @@ const CentralNetworkById = () => {
description: `Are you sure you want to delete this network? This cannot be undone and all members will be deleted from this network`,
yesAction: () => {
deleteNetwork(
{ nwid: network.id },
{ onSuccess: () => void router("/network") }
{ nwid: network.id, central: true },
{ onSuccess: () => void router("/central") }
);
},
})
Expand Down
2 changes: 1 addition & 1 deletion src/pages/central/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const CentralNetworks: NextPageWithLayout = () => {

const { mutate: createNetwork } = api.network.createNetwork.useMutation();
const addNewNetwork = () => {
createNetwork(null, { onSuccess: () => void refetch() });
createNetwork({ central: true }, { onSuccess: () => void refetch() });
};

const title = `${globalSiteTitle} - ${t("title")}`;
Expand Down
3 changes: 2 additions & 1 deletion src/pages/network/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ const Networks: NextPageWithLayout = () => {
central: false,
});
const { mutate: createNetwork } = api.network.createNetwork.useMutation();

const addNewNetwork = () => {
createNetwork(null, { onSuccess: () => void refetch() });
createNetwork({ central: false }, { onSuccess: () => void refetch() });
};

if (isLoading) {
Expand Down
2 changes: 1 addition & 1 deletion src/server/api/routers/memberRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ export const networkMemberRouter = createTRPCRouter({
const updateParams = input.central
? { config: { ...payload } }
: { ...payload };
console.log(input);

// if central is true, send the request to the central API and return the response
const updatedMember = await ztController
.member_update({
Expand Down
95 changes: 54 additions & 41 deletions src/server/api/routers/networkRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -246,13 +246,18 @@ export const networkRouter = createTRPCRouter({
.input(
z.object({
nwid: z.string().nonempty(),
central: z.boolean().default(false),
})
)
.mutation(async ({ ctx, input }) => {
try {
// Delete ZT network
await ztController.network_delete(input.nwid);
const createCentralNw = await ztController.network_delete(
input.nwid,
input.central
);

if (input.central) return createCentralNw;
// Delete networkMembers
await ctx.prisma.networkMembers.deleteMany({
where: {
Expand Down Expand Up @@ -557,52 +562,60 @@ export const networkRouter = createTRPCRouter({
}
}
}),
createNetwork: protectedProcedure.mutation(async ({ ctx }) => {
try {
// Generate ipv4 address, cidr, start & end
const ipAssignmentPools = IPv4gen(null);
createNetwork: protectedProcedure
.input(
z.object({
central: z.boolean().optional().default(false),
})
)
.mutation(async ({ ctx, input }) => {
try {
// Generate ipv4 address, cidr, start & end
const ipAssignmentPools = IPv4gen(null);

// Generate adjective and noun word
const networkName: string = uniqueNamesGenerator(customConfig);
// Generate adjective and noun word
const networkName: string = uniqueNamesGenerator(customConfig);

// Create ZT network
const newNw = await ztController.network_create(
networkName,
ipAssignmentPools,
false
);
// Create ZT network
const newNw = await ztController.network_create(
networkName,
ipAssignmentPools,
input.central
);

// Store the created network in the database
const updatedUser = await ctx.prisma.user.update({
where: {
id: ctx.session.user.id,
},
data: {
network: {
create: {
name: newNw.name,
nwid: newNw.nwid,
ipAssignments: newNw.routes[0].target,
if (input.central) return newNw;

// Store the created network in the database
const updatedUser = await ctx.prisma.user.update({
where: {
id: ctx.session.user.id,
},
data: {
network: {
create: {
name: newNw.name,
nwid: newNw.nwid,
ipAssignments: newNw.routes[0].target,
},
},
},
},
select: {
network: true,
},
});
return updatedUser;
} catch (err: unknown) {
if (err instanceof Error) {
// Log the error and throw a custom error message
// eslint-disable-next-line no-console
console.error(err);
throwError("Could not create network! Please try again");
} else {
// Throw a generic error for unknown error types
throwError("An unknown error occurred");
select: {
network: true,
},
});
return updatedUser;
} catch (err: unknown) {
if (err instanceof Error) {
// Log the error and throw a custom error message
// eslint-disable-next-line no-console
console.error(err);
throwError("Could not create network! Please try again");
} else {
// Throw a generic error for unknown error types
throwError("An unknown error occurred");
}
}
}
}),
}),
setFlowRule: protectedProcedure
.input(
z.object({
Expand Down
14 changes: 6 additions & 8 deletions src/utils/ztApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,13 @@ import {
// type ZTControllerMemberDetails,
type MemberDeleteInput,
type MemberDeleteResponse,
type ZTControllerMemberUpdate,
type ZTControllerGetPeer,
} from "~/types/ztController";

import { type CentralControllerStatus } from "~/types/central/controllerStatus";
import {
FlattenCentralMembers,
type FlattenCentralMembers,
type CentralMembers,
FlattenCentralMembers,
CentralMembers,
} from "~/types/central/members";
import {
type CentralNetwork,
Expand Down Expand Up @@ -218,7 +215,7 @@ export const get_controller_networks = async function (
export const get_controller_status = async function (isCentral: boolean) {
const addr = isCentral
? `${CENTRAL_ZT_ADDR}/status`
: `${LOCAL_ZT_ADDR}/controller/status`;
: `${LOCAL_ZT_ADDR}/status`;

// get headers based on local or central api
const headers = await getOptions(isCentral);
Expand Down Expand Up @@ -248,8 +245,9 @@ export const network_create = async (
const headers = await getOptions(isCentral);

// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const payload = {
const payload: Partial<CentralNetwork> = {
name,
private: true,
...ipAssignment,
};

Expand All @@ -258,14 +256,14 @@ export const network_create = async (
const data = await postData<CentralNetwork>(
`${CENTRAL_ZT_ADDR}/network`,
headers,
{}
{ config: { ...payload }, description: "created with ztnet" }
);

return flattenNetwork(data);
} else {
const controllerStatus = (await get_controller_status(
isCentral
)) as ZTControllerNodeStatus;

return await postData<ZTControllerCreateNetwork>(
`${LOCAL_ZT_ADDR}/controller/network/${controllerStatus.address}______`,
headers,
Expand Down

0 comments on commit 04ce9c1

Please sign in to comment.