Skip to content

Commit 4e6c4ea

Browse files
committed
WIP on secret env vars
1 parent adbc7b4 commit 4e6c4ea

4 files changed

Lines changed: 187 additions & 166 deletions

File tree

apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flipCauseOption } from "effect/Cause";
12
import { PrismaClient, prisma } from "~/db.server";
23
import { Project } from "~/models/project.server";
34
import { User } from "~/models/user.server";
@@ -48,6 +49,7 @@ export class EnvironmentVariablesPresenter {
4849
key: true,
4950
},
5051
},
52+
isSecret: true,
5153
},
5254
},
5355
},
@@ -82,34 +84,41 @@ export class EnvironmentVariablesPresenter {
8284
},
8385
});
8486

85-
const sortedEnvironments = sortEnvironments(filterOrphanedEnvironments(environments));
87+
const sortedEnvironments = sortEnvironments(filterOrphanedEnvironments(environments)).filter(
88+
(e) => e.orgMember?.userId === userId || e.orgMember === null
89+
);
8690

8791
const repository = new EnvironmentVariablesRepository(this.#prismaClient);
8892
const variables = await repository.getProject(project.id);
8993

9094
return {
91-
environmentVariables: environmentVariables.map((environmentVariable) => {
95+
environmentVariables: environmentVariables.flatMap((environmentVariable) => {
9296
const variable = variables.find((v) => v.key === environmentVariable.key);
9397

94-
return {
95-
id: environmentVariable.id,
96-
key: environmentVariable.key,
97-
values: sortedEnvironments.reduce((previous, env) => {
98-
const val = variable?.values.find((v) => v.environment.id === env.id);
99-
previous[env.id] = {
100-
value: val?.value,
98+
return sortedEnvironments.flatMap((env) => {
99+
const val = variable?.values.find((v) => v.environment.id === env.id);
100+
const isSecret =
101+
environmentVariable.values.find((v) => v.environmentId === env.id)?.isSecret ?? false;
102+
103+
if (!val) {
104+
return [];
105+
}
106+
107+
return [
108+
{
109+
id: environmentVariable.id,
110+
key: environmentVariable.key,
101111
environment: { type: env.type, id: env.id },
102-
};
103-
return { ...previous };
104-
}, {} as Record<string, { value: string | undefined; environment: { type: string; id: string } }>),
105-
};
112+
value: val.value,
113+
isSecret,
114+
},
115+
];
116+
});
106117
}),
107-
environments: sortedEnvironments
108-
.filter((e) => e.orgMember?.userId === userId || e.orgMember === null)
109-
.map((environment) => ({
110-
id: environment.id,
111-
type: environment.type,
112-
})),
118+
environments: sortedEnvironments.map((environment) => ({
119+
id: environment.id,
120+
type: environment.type,
121+
})),
113122
hasStaging: environments.some((environment) => environment.type === "STAGING"),
114123
};
115124
}

0 commit comments

Comments
 (0)