Build & Deploy / build-and-push (backend) (push) Failing after 35s
Build & Deploy / build-and-push (discord-gateway) (push) Failing after 25s
Build & Deploy / build-and-push (proxy) (push) Failing after 25s
- Remove pnpm workspace, moon repo, and all monorepo tooling - Delete packages/shared/, embed shared code directly into each service - Copy packages/shared/src/* -> services/backend/src/shared/ and services/discord-gateway/src/shared/ - Replace all @bete/shared imports with @/shared/ path alias - Remove @bete/shared workspace dependency from both services - Update root package.json scripts from --filter to --prefix - Rewrite Dockerfiles to build each service standalone - Clean up biome.json, .gitignore, remove root drizzle.config.ts
37 lines
749 B
TypeScript
37 lines
749 B
TypeScript
import { type PoolConfig as PgPoolConfig, Pool } from "pg";
|
|
|
|
export interface PoolConfig {
|
|
url?: string;
|
|
host?: string;
|
|
port?: number;
|
|
user?: string;
|
|
password?: string;
|
|
database?: string;
|
|
min?: number;
|
|
max?: number;
|
|
}
|
|
|
|
export function createPoolFromConfig(cfg: PoolConfig): Pool {
|
|
const opts: PgPoolConfig = {
|
|
min: cfg.min ?? 2,
|
|
max: cfg.max ?? 10,
|
|
};
|
|
|
|
if (cfg.url) {
|
|
opts.connectionString = cfg.url;
|
|
} else {
|
|
opts.host = cfg.host;
|
|
opts.port = cfg.port;
|
|
opts.user = cfg.user;
|
|
opts.password = cfg.password;
|
|
opts.database = cfg.database;
|
|
}
|
|
|
|
return new Pool(opts);
|
|
}
|
|
|
|
export function closePool(pool: Pool | null): Promise<void> {
|
|
if (!pool) return Promise.resolve();
|
|
return pool.end();
|
|
}
|