improve site and resource info cards and other small visual tweaks

This commit is contained in:
Milo Schwartz 2024-12-30 23:41:06 -05:00
parent e6263567a9
commit 172e0f07d5
No known key found for this signature in database
31 changed files with 469 additions and 332 deletions

View file

@ -25,7 +25,12 @@ const createSiteSchema = z
.object({
name: z.string().min(1).max(255),
exitNodeId: z.number().int().positive(),
subdomain: z.string().min(1).max(255).optional(),
// subdomain: z
// .string()
// .min(1)
// .max(255)
// .transform((val) => val.toLowerCase())
// .optional(),
pubKey: z.string().optional(),
subnet: z.string(),
newtId: z.string().optional(),

View file

@ -23,13 +23,25 @@ const getSiteSchema = z
})
.strict();
export type GetSiteResponse = {
siteId: number;
name: string;
subdomain: string;
subnet: string;
type: string;
};
async function query(siteId?: number, niceId?: string, orgId?: string) {
if (siteId) {
const [res] = await db
.select()
.from(sites)
.where(eq(sites.siteId, siteId))
.limit(1);
return res;
} else if (niceId && orgId) {
const [res] = await db
.select()
.from(sites)
.where(and(eq(sites.niceId, niceId), eq(sites.orgId, orgId)))
.limit(1);
return res;
}
}
export type GetSiteResponse = NonNullable<Awaited<ReturnType<typeof query>>>;
export async function getSite(
req: Request,
@ -49,42 +61,14 @@ export async function getSite(
const { siteId, niceId, orgId } = parsedParams.data;
let site;
if (siteId) {
site = await db
.select()
.from(sites)
.where(eq(sites.siteId, siteId))
.limit(1);
} else if (niceId && orgId) {
site = await db
.select()
.from(sites)
.where(and(eq(sites.niceId, niceId), eq(sites.orgId, orgId)))
.limit(1);
}
const site = await query(siteId, niceId, orgId);
if (!site) {
return next(createHttpError(HttpCode.NOT_FOUND, "Site not found"));
}
if (site.length === 0) {
return next(
createHttpError(
HttpCode.NOT_FOUND,
`Site with ID ${siteId} not found`
)
);
}
return response(res, {
data: {
siteId: site[0].siteId,
niceId: site[0].niceId,
name: site[0].name,
subnet: site[0].subnet,
type: site[0].type
},
return response<GetSiteResponse>(res, {
data: site,
success: true,
error: false,
message: "Site retrieved successfully",

View file

@ -18,7 +18,12 @@ const updateSiteParamsSchema = z
const updateSiteBodySchema = z
.object({
name: z.string().min(1).max(255).optional(),
subdomain: z.string().min(1).max(255).optional()
// subdomain: z
// .string()
// .min(1)
// .max(255)
// .transform((val) => val.toLowerCase())
// .optional()
// pubKey: z.string().optional(),
// subnet: z.string().optional(),
// exitNode: z.number().int().positive().optional(),