mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-21 21:09:49 +08:00
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
DB migration compat / Check if migrations changed (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests (Local Emulator) / E2E Tests (Local Emulator, Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Runs E2E Fallback Tests / E2E Fallback Tests (Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Lint & build / lint_and_build (24) (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
DB migration compat / Back-compat — Current branch migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code (push) Has been cancelled
DB migration compat / Forward-compat — Current branch code with ${{ needs.check-migrations-changed.outputs.base_branch }} branch migrations (push) Has been cancelled
DB migration compat / No migration changes (skipped) (push) Has been cancelled
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { Prisma } from "@/generated/prisma/client";
|
|
import { globalPrismaClient } from "@/prisma-client";
|
|
import { StatusError } from "@hexclave/shared/dist/utils/errors";
|
|
|
|
export const DEVELOPMENT_ENVIRONMENT_ENV_CONFIG_BLOCKED_MESSAGE =
|
|
"Environment configuration overrides cannot be changed in a development environment. Update this in your production deployment instead.";
|
|
|
|
export type ConfigOverrideWriteLevel = "project" | "branch" | "environment";
|
|
|
|
export async function isDevelopmentEnvironmentProject(projectId: string): Promise<boolean> {
|
|
const rows = await globalPrismaClient.$replica().$queryRaw<Array<{ isDevelopmentEnvironment: boolean }>>(Prisma.sql`
|
|
SELECT "isDevelopmentEnvironment"
|
|
FROM "Project"
|
|
WHERE "id" = ${projectId}
|
|
LIMIT 1
|
|
`);
|
|
return rows[0]?.isDevelopmentEnvironment === true;
|
|
}
|
|
|
|
export async function getEnvironmentConfigWriteBlockReason(projectId: string): Promise<string | null> {
|
|
return await isDevelopmentEnvironmentProject(projectId)
|
|
? DEVELOPMENT_ENVIRONMENT_ENV_CONFIG_BLOCKED_MESSAGE
|
|
: null;
|
|
}
|
|
|
|
export async function getConfigOverrideWriteBlockReason(level: ConfigOverrideWriteLevel, projectId: string): Promise<string | null> {
|
|
if (level !== "environment") {
|
|
return null;
|
|
}
|
|
return await getEnvironmentConfigWriteBlockReason(projectId);
|
|
}
|
|
|
|
export async function assertConfigOverrideWriteAllowed(level: ConfigOverrideWriteLevel, projectId: string): Promise<void> {
|
|
const blockReason = await getConfigOverrideWriteBlockReason(level, projectId);
|
|
if (blockReason != null) {
|
|
throw new StatusError(StatusError.BadRequest, blockReason);
|
|
}
|
|
}
|