Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ import { Separator } from "@ctrlplane/ui/separator";
import {
ColumnOperator,
ComparisonOperator,
FilterType,
ConditionType,
} from "@ctrlplane/validators/conditions";
import { JobFilterType, JobStatus } from "@ctrlplane/validators/jobs";
import { JobConditionType, JobStatus } from "@ctrlplane/validators/jobs";

import { useDeploymentVersionChannelDrawer } from "~/app/[workspaceSlug]/(app)/_components/channel/drawer/useDeploymentVersionChannelDrawer";
import { useDeploymentVersionChannel } from "~/app/[workspaceSlug]/(app)/_hooks/channel/useDeploymentVersionChannel";
Expand All @@ -45,52 +45,52 @@ const WaitingOnActiveCheck: React.FC<EnvironmentNodeProps["data"]> = ({
environmentId,
}) => {
const isSameEnvironment: EnvironmentCondition = {
type: JobFilterType.Environment,
type: JobConditionType.Environment,
operator: ColumnOperator.Equals,
value: environmentId,
};

const isPending: StatusCondition = {
type: JobFilterType.Status,
type: JobConditionType.Status,
operator: ColumnOperator.Equals,
value: JobStatus.Pending,
};

const isInProgress: StatusCondition = {
type: JobFilterType.Status,
type: JobConditionType.Status,
operator: ColumnOperator.Equals,
value: JobStatus.InProgress,
};

const isSameVersion: JobReleaseCondition = {
type: JobFilterType.Release,
type: JobConditionType.Release,
operator: ColumnOperator.Equals,
value: versionId,
};

const isDifferentVersion: JobCondition = {
type: FilterType.Comparison,
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
not: true,
conditions: [isSameVersion],
};

const pendingJobsForCurrentVersionAndEnvFilter: JobCondition = {
type: FilterType.Comparison,
const pendingJobsForCurrentVersionAndEnvSelector: JobCondition = {
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
conditions: [isSameEnvironment, isPending, isSameVersion],
};

const inProgressJobsForDifferentVersionAndCurrentEnvFilter: JobCondition = {
type: FilterType.Comparison,
const inProgressJobsForDifferentVersionAndCurrentEnvSelector: JobCondition = {
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
conditions: [isSameEnvironment, isInProgress, isDifferentVersion],
};

const pendingJobsQ = api.job.config.byWorkspaceId.list.useQuery(
{
workspaceId,
filter: pendingJobsForCurrentVersionAndEnvFilter,
filter: pendingJobsForCurrentVersionAndEnvSelector,
limit: 1,
},
{ refetchInterval: 5_000 },
Expand All @@ -99,7 +99,7 @@ const WaitingOnActiveCheck: React.FC<EnvironmentNodeProps["data"]> = ({
const inProgressJobsQ = api.job.config.byWorkspaceId.list.useQuery(
{
workspaceId,
filter: inProgressJobsForDifferentVersionAndCurrentEnvFilter,
filter: inProgressJobsForDifferentVersionAndCurrentEnvSelector,
limit: 1,
},
{ refetchInterval: 5_000 },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import { useJobDrawer } from "~/app/[workspaceSlug]/(app)/_components/job/drawer
import { JobDropdownMenu } from "~/app/[workspaceSlug]/(app)/_components/job/JobDropdownMenu";
import { JobTableStatusIcon } from "~/app/[workspaceSlug]/(app)/_components/job/JobTableStatusIcon";
import { useDeploymentVersionChannel } from "~/app/[workspaceSlug]/(app)/_hooks/channel/useDeploymentVersionChannel";
import { useFilter } from "~/app/[workspaceSlug]/(app)/_hooks/useFilter";
import { useCondition } from "~/app/[workspaceSlug]/(app)/_hooks/useCondition";
import { Sidebars } from "~/app/[workspaceSlug]/sidebars";
import { api } from "~/trpc/react";
import { EnvironmentApprovalRow } from "./EnvironmentApprovalRow";
Expand Down Expand Up @@ -471,9 +471,9 @@ export const ResourceReleaseTable: React.FC<ResourceReleaseTableProps> = ({
deployment,
environments,
}) => {
const { filter, setFilter } = useFilter<JobCondition>();
const { condition, setCondition } = useCondition<JobCondition>();
const releaseJobTriggerQuery = api.job.config.byDeploymentVersionId.useQuery(
{ versionId: deploymentVersion.id, filter: filter ?? undefined },
{ versionId: deploymentVersion.id, condition: condition ?? undefined },
{ refetchInterval: 5_000 },
);
const releaseJobTriggers = releaseJobTriggerQuery.data ?? [];
Expand All @@ -499,12 +499,12 @@ export const ResourceReleaseTable: React.FC<ResourceReleaseTableProps> = ({
<SidebarTrigger name={Sidebars.Release}>
<IconMenu2 className="h-4 w-4" />
</SidebarTrigger>
<JobConditionDialog condition={filter} onChange={setFilter}>
<JobConditionDialog condition={condition} onChange={setCondition}>
<div className="flex items-center gap-2">
<Button variant="ghost" size="icon" className="h-7 w-7">
<IconFilter className="h-4 w-4" />
</Button>
{filter != null && <JobConditionBadge condition={filter} />}
{condition != null && <JobConditionBadge condition={condition} />}
</div>
</JobConditionDialog>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import {
} from "@ctrlplane/ui/tooltip";
import {
ComparisonOperator,
FilterType,
ConditionType,
} from "@ctrlplane/validators/conditions";
import { DeploymentVersionStatus } from "@ctrlplane/validators/releases";

Expand All @@ -62,18 +62,20 @@ const EnvHeader: React.FC<EnvHeaderProps> = ({
deployment,
workspace,
}) => {
const { resourceFilter: envResourceFilter } = environment;
const { resourceFilter: deploymentResourceFilter } = deployment;
const { resourceSelector: envResourceSelector } = environment;
const { resourceSelector: deploymentResourceSelector } = deployment;

const filter: ResourceCondition = {
type: FilterType.Comparison,
const condition: ResourceCondition = {
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
conditions: [envResourceFilter, deploymentResourceFilter].filter(isPresent),
conditions: [envResourceSelector, deploymentResourceSelector].filter(
isPresent,
),
};

const { data, isLoading } = api.resource.byWorkspaceId.list.useQuery(
{ workspaceId: workspace.id, filter, limit: 0 },
{ enabled: envResourceFilter != null },
{ workspaceId: workspace.id, filter: condition, limit: 0 },
{ enabled: envResourceSelector != null },
);

const total = data?.total ?? 0;
Expand Down Expand Up @@ -105,21 +107,21 @@ const DirectoryHeader: React.FC<DirectoryHeaderProps> = ({
directory,
workspace,
}) => {
const resourceFilters = directory.environments
.map((env) => env.resourceFilter)
const resourceSelectors = directory.environments
.map((env) => env.resourceSelector)
.filter(isPresent);
const filter: ResourceCondition | undefined =
resourceFilters.length > 0
const condition: ResourceCondition | undefined =
resourceSelectors.length > 0
? {
type: FilterType.Comparison,
type: ConditionType.Comparison,
operator: ComparisonOperator.Or,
conditions: resourceFilters,
conditions: resourceSelectors,
}
: undefined;

const { data, isLoading } = api.resource.byWorkspaceId.list.useQuery(
{ workspaceId: workspace.id, filter, limit: 0 },
{ enabled: filter != null },
{ workspaceId: workspace.id, filter: condition, limit: 0 },
{ enabled: condition != null },
);

const total = data?.total ?? 0;
Expand Down Expand Up @@ -164,7 +166,7 @@ export const DeploymentPageContent: React.FC<DeploymentPageContentProps> = ({
const { systemSlug } = useParams<{ systemSlug: string }>();

const versions = api.deployment.version.list.useQuery(
{ deploymentId: deployment.id, selector: selector ?? undefined, limit: 30 },
{ deploymentId: deployment.id, filter: selector ?? undefined, limit: 30 },
{ refetchInterval: 2_000 },
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { Button } from "@ctrlplane/ui/button";
import { Skeleton } from "@ctrlplane/ui/skeleton";
import {
ComparisonOperator,
FilterType,
ConditionType,
} from "@ctrlplane/validators/conditions";
import { JobStatus } from "@ctrlplane/validators/jobs";
import { DeploymentVersionStatus } from "@ctrlplane/validators/releases";
Expand Down Expand Up @@ -48,22 +48,22 @@ const useGetResourceCount = (
const { data: workspace, isLoading: isWorkspaceLoading } =
api.workspace.bySlug.useQuery(workspaceSlug);

const filter: ResourceCondition | undefined =
environment.resourceFilter != null
const condition: ResourceCondition | undefined =
environment.resourceSelector != null
? {
type: FilterType.Comparison,
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
conditions: [
environment.resourceFilter,
deployment.resourceFilter,
environment.resourceSelector,
deployment.resourceSelector,
].filter(isPresent),
}
: undefined;

const { data: resources, isLoading: isResourcesLoading } =
api.resource.byWorkspaceId.list.useQuery(
{ workspaceId: workspace?.id ?? "", filter, limit: 0 },
{ enabled: workspace != null && filter != null },
{ workspaceId: workspace?.id ?? "", filter: condition, limit: 0 },
{ enabled: workspace != null && condition != null },
);

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import React from "react";

import { Popover, PopoverContent, PopoverTrigger } from "@ctrlplane/ui/popover";
import { ColumnOperator } from "@ctrlplane/validators/conditions";
import { JobFilterType } from "@ctrlplane/validators/jobs";
import { JobConditionType } from "@ctrlplane/validators/jobs";

import { DailyJobsChart } from "~/app/[workspaceSlug]/(app)/insights/DailyJobsChart";
import { api } from "~/trpc/react";
Expand All @@ -25,8 +25,8 @@ export const JobHistoryPopover: React.FC<JobHistoryPopoverProps> = ({
{ refetchInterval: 60_000 },
);

const inDeploymentFilter: JobCondition = {
type: JobFilterType.Deployment,
const inDeploymentSelector: JobCondition = {
type: JobConditionType.Deployment,
operator: ColumnOperator.Equals,
value: deploymentId,
};
Expand All @@ -42,7 +42,7 @@ export const JobHistoryPopover: React.FC<JobHistoryPopoverProps> = ({
</p>
<DailyJobsChart
dailyCounts={dailyCounts.data ?? []}
baseFilter={inDeploymentFilter}
baseCondition={inDeploymentSelector}
/>
</div>
</PopoverContent>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ import {
import {
ColumnOperator,
ComparisonOperator,
FilterType,
ConditionType,
} from "@ctrlplane/validators/conditions";
import {
activeStatusType,
JobFilterType,
JobConditionType,
JobStatus,
} from "@ctrlplane/validators/jobs";

Expand Down Expand Up @@ -144,19 +144,19 @@ export const DeploymentVersion: React.FC<{
} = props;

const isSameVersion: JobCondition = {
type: JobFilterType.Release,
type: JobConditionType.Release,
operator: ColumnOperator.Equals,
value: versionId,
};

const isSameEnvironment: JobCondition = {
type: JobFilterType.Environment,
type: JobConditionType.Environment,
operator: ColumnOperator.Equals,
value: environment.id,
};

const filter: JobCondition = {
type: FilterType.Comparison,
type: ConditionType.Comparison,
operator: ComparisonOperator.And,
conditions: [isSameVersion, isSameEnvironment],
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export const CreateDeploymentVersionChannelDialog: React.FC<
selectorHash != null ? `${baseUrl}?selector=${selectorHash}` : baseUrl;

const versionsQ = api.deployment.version.list.useQuery(
{ deploymentId, selector, limit: 5 },
{ deploymentId, filter: selector, limit: 5 },
{ enabled: selector != null, placeholderData: (prev) => prev },
);
const versions = versionsQ.data;
Expand Down Expand Up @@ -165,7 +165,7 @@ export const CreateDeploymentVersionChannelDialog: React.FC<
className="flex items-center gap-2"
>
<IconFilter className="h-4 w-4" />
Edit filter
Edit selector
</Button>
</DeploymentVersionConditionDialog>

Expand Down
Loading
Loading