mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 04:22:32 +10:00
Compare commits
5 Commits
v1.5.5-rc.
...
fix/neon-d
| Author | SHA1 | Date | |
|---|---|---|---|
| 81c43e01d3 | |||
| ffcb4fda20 | |||
| 530508f421 | |||
| e748b1898e | |||
| 88ffdb0066 |
@ -15,6 +15,10 @@ export const getDatabaseUrl = () => {
|
|||||||
process.env.NEXT_PRIVATE_DIRECT_DATABASE_URL = process.env.DATABASE_URL;
|
process.env.NEXT_PRIVATE_DIRECT_DATABASE_URL = process.env.DATABASE_URL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (process.env.DATABASE_URL_UNPOOLED) {
|
||||||
|
process.env.NEXT_PRIVATE_DIRECT_DATABASE_URL = process.env.DATABASE_URL_UNPOOLED;
|
||||||
|
}
|
||||||
|
|
||||||
if (process.env.POSTGRES_PRISMA_URL) {
|
if (process.env.POSTGRES_PRISMA_URL) {
|
||||||
process.env.NEXT_PRIVATE_DATABASE_URL = process.env.POSTGRES_PRISMA_URL;
|
process.env.NEXT_PRIVATE_DATABASE_URL = process.env.POSTGRES_PRISMA_URL;
|
||||||
}
|
}
|
||||||
@ -40,18 +44,5 @@ export const getDatabaseUrl = () => {
|
|||||||
process.env.NEXT_PRIVATE_DATABASE_URL = url.toString().replace('https://', 'postgres://');
|
process.env.NEXT_PRIVATE_DATABASE_URL = url.toString().replace('https://', 'postgres://');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support for neon.tech (Neon Database)
|
|
||||||
if (url.hostname.endsWith('neon.tech')) {
|
|
||||||
const [projectId, ...rest] = url.hostname.split('.');
|
|
||||||
|
|
||||||
if (!projectId.endsWith('-pooler')) {
|
|
||||||
url.hostname = `${projectId}-pooler.${rest.join('.')}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
url.searchParams.set('pgbouncer', 'true');
|
|
||||||
|
|
||||||
process.env.NEXT_PRIVATE_DATABASE_URL = url.toString().replace('https://', 'postgres://');
|
|
||||||
}
|
|
||||||
|
|
||||||
return process.env.NEXT_PRIVATE_DATABASE_URL;
|
return process.env.NEXT_PRIVATE_DATABASE_URL;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -0,0 +1,11 @@
|
|||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "DummyData" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"userId" INTEGER NOT NULL,
|
||||||
|
"hello" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "DummyData_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "DummyData" ADD CONSTRAINT "DummyData_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
@ -52,10 +52,19 @@ model User {
|
|||||||
securityAuditLogs UserSecurityAuditLog[]
|
securityAuditLogs UserSecurityAuditLog[]
|
||||||
Webhooks Webhook[]
|
Webhooks Webhook[]
|
||||||
siteSettings SiteSettings[]
|
siteSettings SiteSettings[]
|
||||||
|
dummyData DummyData[]
|
||||||
|
|
||||||
@@index([email])
|
@@index([email])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
model DummyData {
|
||||||
|
id String @id @default(cuid())
|
||||||
|
userId Int
|
||||||
|
hello String?
|
||||||
|
|
||||||
|
User User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||||
|
}
|
||||||
|
|
||||||
model UserProfile {
|
model UserProfile {
|
||||||
id Int @id
|
id Int @id
|
||||||
bio String?
|
bio String?
|
||||||
|
|||||||
@ -13,7 +13,13 @@ const seedDatabase = async () => {
|
|||||||
|
|
||||||
if ('seedDatabase' in mod && typeof mod.seedDatabase === 'function') {
|
if ('seedDatabase' in mod && typeof mod.seedDatabase === 'function') {
|
||||||
console.log(`[SEEDING]: ${file}`);
|
console.log(`[SEEDING]: ${file}`);
|
||||||
await mod.seedDatabase();
|
|
||||||
|
try {
|
||||||
|
await mod.seedDatabase();
|
||||||
|
} catch (e) {
|
||||||
|
console.log(`[SEEDING]: Seed failed for ${file}`);
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,6 @@ set -eo pipefail
|
|||||||
# Get the directory of this script, regardless of where it is called from.
|
# Get the directory of this script, regardless of where it is called from.
|
||||||
SCRIPT_DIR="$(readlink -f "$(dirname "$0")")"
|
SCRIPT_DIR="$(readlink -f "$(dirname "$0")")"
|
||||||
|
|
||||||
|
|
||||||
function log() {
|
function log() {
|
||||||
echo "[VercelBuild]: $1"
|
echo "[VercelBuild]: $1"
|
||||||
}
|
}
|
||||||
@ -69,19 +68,17 @@ function remap_database_integration() {
|
|||||||
export NEXT_PRIVATE_DIRECT_DATABASE_URL="$DATABASE_URL"
|
export NEXT_PRIVATE_DIRECT_DATABASE_URL="$DATABASE_URL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z "$DATABASE_URL_UNPOOLED" ]]; then
|
||||||
|
log "Remapping for Neon integration"
|
||||||
|
|
||||||
|
export NEXT_PRIVATE_DATABASE_URL="$DATABASE_URL&pgbouncer=true"
|
||||||
|
export NEXT_PRIVATE_DIRECT_DATABASE_URL="$DATABASE_URL_UNPOOLED"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! -z "$POSTGRES_URL_NON_POOLING" ]]; then
|
if [[ ! -z "$POSTGRES_URL_NON_POOLING" ]]; then
|
||||||
export NEXT_PRIVATE_DATABASE_URL="$POSTGRES_URL?pgbouncer=true"
|
export NEXT_PRIVATE_DATABASE_URL="$POSTGRES_URL?pgbouncer=true"
|
||||||
export NEXT_PRIVATE_DIRECT_DATABASE_URL="$POSTGRES_URL_NON_POOLING"
|
export NEXT_PRIVATE_DIRECT_DATABASE_URL="$POSTGRES_URL_NON_POOLING"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$NEXT_PRIVATE_DATABASE_URL" == *"neon.tech"* ]]; then
|
|
||||||
log "Remapping for Neon integration"
|
|
||||||
|
|
||||||
PROJECT_ID="$(echo "$PGHOST" | cut -d'.' -f1)"
|
|
||||||
PGBOUNCER_HOST="$(echo "$PGHOST" | sed "s/${PROJECT_ID}/${PROJECT_ID}-pooler/")"
|
|
||||||
|
|
||||||
export NEXT_PRIVATE_DATABASE_URL="postgres://${PGUSER}:${PGPASSWORD}@${PGBOUNCER_HOST}/${PGDATABASE}?pgbouncer=true"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Navigate to the root of the project.
|
# Navigate to the root of the project.
|
||||||
|
|||||||
@ -90,6 +90,7 @@
|
|||||||
"FONT_CAVEAT_URI",
|
"FONT_CAVEAT_URI",
|
||||||
"POSTGRES_URL",
|
"POSTGRES_URL",
|
||||||
"DATABASE_URL",
|
"DATABASE_URL",
|
||||||
|
"DATABASE_URL_UNPOOLED",
|
||||||
"POSTGRES_PRISMA_URL",
|
"POSTGRES_PRISMA_URL",
|
||||||
"POSTGRES_URL_NON_POOLING",
|
"POSTGRES_URL_NON_POOLING",
|
||||||
"E2E_TEST_AUTHENTICATE_USERNAME",
|
"E2E_TEST_AUTHENTICATE_USERNAME",
|
||||||
|
|||||||
Reference in New Issue
Block a user