fix: selectable destinations
This commit is contained in:
parent
1950429e1d
commit
b5b7338e92
@ -6,11 +6,12 @@ import { asyncExecShell, decrypt, errorHandler, executeDockerCmd, listSettings,
|
|||||||
import { checkContainer, dockerInstance, getEngine } from '../../../../lib/docker';
|
import { checkContainer, dockerInstance, getEngine } from '../../../../lib/docker';
|
||||||
|
|
||||||
import type { OnlyId } from '../../../../types';
|
import type { OnlyId } from '../../../../types';
|
||||||
import type { CheckDestination, NewDestination, Proxy, SaveDestinationSettings } from './types';
|
import type { CheckDestination, ListDestinations, NewDestination, Proxy, SaveDestinationSettings } from './types';
|
||||||
|
|
||||||
export async function listDestinations(request: FastifyRequest) {
|
export async function listDestinations(request: FastifyRequest<ListDestinations>) {
|
||||||
try {
|
try {
|
||||||
const teamId = request.user.teamId;
|
const teamId = request.user.teamId;
|
||||||
|
const { onlyVerified = false } = request.query
|
||||||
let destinations = []
|
let destinations = []
|
||||||
if (teamId === '0') {
|
if (teamId === '0') {
|
||||||
destinations = await prisma.destinationDocker.findMany({ include: { teams: true } });
|
destinations = await prisma.destinationDocker.findMany({ include: { teams: true } });
|
||||||
@ -20,6 +21,9 @@ export async function listDestinations(request: FastifyRequest) {
|
|||||||
include: { teams: true }
|
include: { teams: true }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (onlyVerified) {
|
||||||
|
destinations = destinations.filter(destination => destination.engine || (destination.remoteEngine && destination.remoteVerified))
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
destinations
|
destinations
|
||||||
}
|
}
|
||||||
@ -163,7 +167,7 @@ export async function startProxy(request: FastifyRequest<Proxy>) {
|
|||||||
await startTraefikProxy(id);
|
await startTraefikProxy(id);
|
||||||
return {}
|
return {}
|
||||||
} catch ({ status, message }) {
|
} catch ({ status, message }) {
|
||||||
console.log({status, message})
|
console.log({ status, message })
|
||||||
await stopTraefikProxy(id);
|
await stopTraefikProxy(id);
|
||||||
return errorHandler({ status, message })
|
return errorHandler({ status, message })
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,13 @@ import { FastifyPluginAsync } from 'fastify';
|
|||||||
import { assignSSHKey, checkDestination, deleteDestination, getDestination, getDestinationStatus, listDestinations, newDestination, restartProxy, saveDestinationSettings, startProxy, stopProxy, verifyRemoteDockerEngine } from './handlers';
|
import { assignSSHKey, checkDestination, deleteDestination, getDestination, getDestinationStatus, listDestinations, newDestination, restartProxy, saveDestinationSettings, startProxy, stopProxy, verifyRemoteDockerEngine } from './handlers';
|
||||||
|
|
||||||
import type { OnlyId } from '../../../../types';
|
import type { OnlyId } from '../../../../types';
|
||||||
import type { CheckDestination, NewDestination, Proxy, SaveDestinationSettings } from './types';
|
import type { CheckDestination, ListDestinations, NewDestination, Proxy, SaveDestinationSettings } from './types';
|
||||||
|
|
||||||
const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
||||||
fastify.addHook('onRequest', async (request) => {
|
fastify.addHook('onRequest', async (request) => {
|
||||||
return await request.jwtVerify()
|
return await request.jwtVerify()
|
||||||
})
|
})
|
||||||
fastify.get('/', async (request) => await listDestinations(request));
|
fastify.get<ListDestinations>('/', async (request) => await listDestinations(request));
|
||||||
fastify.post<CheckDestination>('/check', async (request) => await checkDestination(request));
|
fastify.post<CheckDestination>('/check', async (request) => await checkDestination(request));
|
||||||
|
|
||||||
fastify.get<OnlyId>('/:id', async (request) => await getDestination(request));
|
fastify.get<OnlyId>('/:id', async (request) => await getDestination(request));
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { OnlyId } from "../../../../types"
|
import { OnlyId } from "../../../../types"
|
||||||
|
|
||||||
|
export interface ListDestinations {
|
||||||
|
Querystring: {
|
||||||
|
onlyVerified: string
|
||||||
|
}
|
||||||
|
}
|
||||||
export interface CheckDestination {
|
export interface CheckDestination {
|
||||||
Body: {
|
Body: {
|
||||||
network: string
|
network: string
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
redirect: `/applications/${params.id}`
|
redirect: `/applications/${params.id}`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const response = await get(`/destinations`);
|
const response = await get(`/destinations?onlyVerified=true`);
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
...response
|
...response
|
||||||
@ -65,7 +65,7 @@
|
|||||||
<div class="flex flex-col justify-center">
|
<div class="flex flex-col justify-center">
|
||||||
{#if !destinations || ownDestinations.length === 0}
|
{#if !destinations || ownDestinations.length === 0}
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<div class="pb-2">{$t('application.configuration.no_configurable_destination')}</div>
|
<div class="pb-2 text-center font-bold">{$t('application.configuration.no_configurable_destination')}</div>
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
||||||
<svg
|
<svg
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
||||||
{#each ownApplications as application}
|
{#each ownApplications as application}
|
||||||
<a href="/applications/{application.id}" class="w-96 p-2 no-underline">
|
<a href="/applications/{application.id}" class="p-2 no-underline">
|
||||||
<div class="box-selection group relative hover:bg-green-600">
|
<div class="box-selection group relative hover:bg-green-600">
|
||||||
{#if application.buildPack}
|
{#if application.buildPack}
|
||||||
{#if application.buildPack.toLowerCase() === 'rust'}
|
{#if application.buildPack.toLowerCase() === 'rust'}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
redirect: `/database/${params.id}`
|
redirect: `/database/${params.id}`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const response = await get(`/destinations`);
|
const response = await get(`/destinations?onlyVerified=true`);
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
...response
|
...response
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
{#if !destinations || destinations.length === 0}
|
{#if !destinations || destinations.length === 0}
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<div class="pb-2">{$t('application.configuration.no_configurable_destination')}</div>
|
<div class="pb-2 text-center font-bold">{$t('application.configuration.no_configurable_destination')}</div>
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
||||||
<svg
|
<svg
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
||||||
{#each ownDatabases as database}
|
{#each ownDatabases as database}
|
||||||
<a href="/databases/{database.id}" class="w-96 p-2 no-underline">
|
<a href="/databases/{database.id}" class="p-2 no-underline">
|
||||||
<div class="box-selection group relative hover:bg-purple-600">
|
<div class="box-selection group relative hover:bg-purple-600">
|
||||||
{#if database.type === 'clickhouse'}
|
{#if database.type === 'clickhouse'}
|
||||||
<Clickhouse isAbsolute />
|
<Clickhouse isAbsolute />
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex space-x-1 p-6 font-bold">
|
<div class="flex space-x-1 p-6 font-bold">
|
||||||
<div class="mr-4 text-2xl tracking-tight">SSH Keys</div>
|
<div class="mr-4 text-2xl tracking-tight">Select a SSH Keys</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col justify-center">
|
<div class="flex flex-col justify-center">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row ">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row ">
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
||||||
{#each ownDestinations as destination}
|
{#each ownDestinations as destination}
|
||||||
<a href="/destinations/{destination.id}" class="w-96 p-2 no-underline">
|
<a href="/destinations/{destination.id}" class="p-2 no-underline">
|
||||||
<div class="box-selection hover:bg-sky-600">
|
<div class="box-selection hover:bg-sky-600">
|
||||||
<div class="truncate text-center text-xl font-bold">{destination.name}</div>
|
<div class="truncate text-center text-xl font-bold">{destination.name}</div>
|
||||||
{#if $appSession.teamId === '0' && otherDestinations.length > 0}
|
{#if $appSession.teamId === '0' && otherDestinations.length > 0}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
redirect: `/services/${params.id}`
|
redirect: `/services/${params.id}`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const response = await get(`/destinations`);
|
const response = await get(`/destinations?onlyVerified=true`);
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
...response
|
...response
|
||||||
@ -54,7 +54,7 @@
|
|||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
{#if !destinations || destinations.length === 0}
|
{#if !destinations || destinations.length === 0}
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<div class="pb-2">{$t('application.configuration.no_configurable_destination')}</div>
|
<div class="pb-2 text-center font-bold">{$t('application.configuration.no_configurable_destination')}</div>
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
<a href="/new/destination" sveltekit:prefetch class="add-icon bg-sky-600 hover:bg-sky-500">
|
||||||
<svg
|
<svg
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
||||||
{#each ownServices as service}
|
{#each ownServices as service}
|
||||||
<a href="/services/{service.id}" class="w-96 p-2 no-underline">
|
<a href="/services/{service.id}" class=" p-2 no-underline">
|
||||||
<div class="box-selection group relative hover:bg-pink-600">
|
<div class="box-selection group relative hover:bg-pink-600">
|
||||||
<Services type={service.type} />
|
<Services type={service.type} />
|
||||||
<div class="truncate text-center text-xl font-bold">
|
<div class="truncate text-center text-xl font-bold">
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
||||||
{#each ownSources as source}
|
{#each ownSources as source}
|
||||||
<a href="/sources/{source.id}" class="w-96 p-2 no-underline">
|
<a href="/sources/{source.id}" class="p-2 no-underline">
|
||||||
<div
|
<div
|
||||||
class="box-selection group relative hover:bg-orange-600"
|
class="box-selection group relative hover:bg-orange-600"
|
||||||
class:border-red-500={source.gitlabApp && !source.gitlabAppId}
|
class:border-red-500={source.gitlabApp && !source.gitlabAppId}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user