feat(infisical-pg): fixed plan going undefined and resolved project missing on env delete

This commit is contained in:
Akhil Mohan
2024-01-27 12:38:23 +05:30
parent 5fe8bdc00b
commit 92f7b45e01
7 changed files with 14 additions and 9 deletions
@@ -32,17 +32,17 @@ export const registerLicenseRouter = async (server: FastifyZodProvider) => {
schema: { schema: {
params: z.object({ organizationId: z.string().trim() }), params: z.object({ organizationId: z.string().trim() }),
response: { response: {
200: z.any() 200: z.object({ plan: z.any() })
} }
}, },
onRequest: verifyAuth([AuthMode.JWT]), onRequest: verifyAuth([AuthMode.JWT]),
handler: async (req) => { handler: async (req) => {
const data = await server.services.license.getOrgPlan({ const plan = await server.services.license.getOrgPlan({
actorId: req.permission.id, actorId: req.permission.id,
actor: req.permission.type, actor: req.permission.type,
orgId: req.params.organizationId orgId: req.params.organizationId
}); });
return data; return { plan };
} }
}); });
+2 -1
View File
@@ -288,7 +288,8 @@ export const registerRoutes = async (
permissionService, permissionService,
projectEnvDal, projectEnvDal,
licenseService, licenseService,
projectDal projectDal,
folderDal
}); });
const projectKeyService = projectKeyServiceFactory({ const projectKeyService = projectKeyServiceFactory({
permissionService, permissionService,
@@ -121,7 +121,7 @@ export const registerPasswordRouter = async (server: FastifyZodProvider) => {
server.route({ server.route({
method: "POST", method: "POST",
url: "/password-reset", url: "/email/password-reset",
onRequest: verifyAuth([AuthMode.JWT]), onRequest: verifyAuth([AuthMode.JWT]),
schema: { schema: {
body: z.object({ body: z.object({
@@ -11,9 +11,11 @@ import { BadRequestError } from "@app/lib/errors";
import { TProjectDalFactory } from "../project/project-dal"; import { TProjectDalFactory } from "../project/project-dal";
import { TProjectEnvDalFactory } from "./project-env-dal"; import { TProjectEnvDalFactory } from "./project-env-dal";
import { TCreateEnvDTO, TDeleteEnvDTO, TUpdateEnvDTO } from "./project-env-types"; import { TCreateEnvDTO, TDeleteEnvDTO, TUpdateEnvDTO } from "./project-env-types";
import { TSecretFolderDalFactory } from "../secret-folder/secret-folder-dal";
type TProjectEnvServiceFactoryDep = { type TProjectEnvServiceFactoryDep = {
projectEnvDal: TProjectEnvDalFactory; projectEnvDal: TProjectEnvDalFactory;
folderDal: Pick<TSecretFolderDalFactory, "create">;
projectDal: Pick<TProjectDalFactory, "findById">; projectDal: Pick<TProjectDalFactory, "findById">;
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission">; permissionService: Pick<TPermissionServiceFactory, "getProjectPermission">;
licenseService: Pick<TLicenseServiceFactory, "getPlan">; licenseService: Pick<TLicenseServiceFactory, "getPlan">;
@@ -25,7 +27,8 @@ export const projectEnvServiceFactory = ({
projectEnvDal, projectEnvDal,
permissionService, permissionService,
licenseService, licenseService,
projectDal projectDal,
folderDal
}: TProjectEnvServiceFactoryDep) => { }: TProjectEnvServiceFactoryDep) => {
const createEnvironment = async ({ projectId, actorId, actor, name, slug }: TCreateEnvDTO) => { const createEnvironment = async ({ projectId, actorId, actor, name, slug }: TCreateEnvDTO) => {
const { permission } = await permissionService.getProjectPermission(actor, actorId, projectId); const { permission } = await permissionService.getProjectPermission(actor, actorId, projectId);
@@ -56,6 +59,7 @@ export const projectEnvServiceFactory = ({
const env = await projectEnvDal.transaction(async (tx) => { const env = await projectEnvDal.transaction(async (tx) => {
const lastPos = await projectEnvDal.findLastEnvPosition(projectId, tx); const lastPos = await projectEnvDal.findLastEnvPosition(projectId, tx);
const doc = await projectEnvDal.create({ slug, name, projectId, position: lastPos + 1 }, tx); const doc = await projectEnvDal.create({ slug, name, projectId, position: lastPos + 1 }, tx);
await folderDal.create({ name: "root", parentId: null, envId: doc.id, version: 1 }, tx);
return doc; return doc;
}); });
return env; return env;
@@ -17,7 +17,7 @@ export const projectDalFactory = (db: TDbClient) => {
`${TableName.ProjectMembership}.projectId`, `${TableName.ProjectMembership}.projectId`,
`${TableName.Project}.id` `${TableName.Project}.id`
) )
.join( .leftJoin(
TableName.Environment, TableName.Environment,
`${TableName.Environment}.projectId`, `${TableName.Environment}.projectId`,
`${TableName.Project}.id` `${TableName.Project}.id`
+1 -1
View File
@@ -70,7 +70,7 @@ export const fetchUserAction = async (action: string) => {
action action
} }
}); });
return data.userAction; return data.userAction || "";
}; };
export const useRenameUser = () => { export const useRenameUser = () => {
@@ -294,7 +294,7 @@ export const SecretDetailSidebar = ({
a={ProjectPermissionSub.Tags} a={ProjectPermissionSub.Tags}
> >
{(isAllowed) => ( {(isAllowed) => (
<DropdownMenuItem> <DropdownMenuItem asChild>
<Button <Button
size="xs" size="xs"
className="w-full" className="w-full"