mirror of
https://github.com/graphql-hive/console
synced 2026-05-23 09:08:34 +00:00
Limit the number of db connections here and there (#374)
This commit is contained in:
parent
b55232f6fe
commit
aca8170421
7 changed files with 10 additions and 9 deletions
|
|
@ -59,7 +59,7 @@ export function createRateLimiter(config: {
|
|||
const emails = createEmailScheduler(config.emails);
|
||||
|
||||
const { logger } = config;
|
||||
const postgres$ = createPostgreSQLStorage(config.storage.connectionString);
|
||||
const postgres$ = createPostgreSQLStorage(config.storage.connectionString, 1);
|
||||
let initialized = false;
|
||||
let intervalHandle: ReturnType<typeof setInterval> | null = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ export async function main() {
|
|||
};
|
||||
}
|
||||
|
||||
const storage = await createPostgreSQLStorage(createConnectionString(process.env as any));
|
||||
const storage = await createPostgreSQLStorage(createConnectionString(process.env as any), 10);
|
||||
|
||||
const graphqlLogger = createGraphQLLogger();
|
||||
const registry = createRegistry({
|
||||
|
|
|
|||
|
|
@ -11,10 +11,11 @@ import { createSentryInterceptor } from './sentry';
|
|||
|
||||
const dbInterceptors: Interceptor[] = [createQueryLoggingInterceptor(), createSentryInterceptor()];
|
||||
|
||||
export async function getPool(connection: string) {
|
||||
export async function getPool(connection: string, maximumPoolSize: number) {
|
||||
const pool = await createPool(connection, {
|
||||
interceptors: dbInterceptors,
|
||||
captureStackTrace: false,
|
||||
maximumPoolSize,
|
||||
});
|
||||
|
||||
function interceptError<K extends Exclude<keyof CommonQueryMethods, 'transaction'>>(methodName: K) {
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ function getProviderBasedOnExternalId(externalId: string): AuthProvider {
|
|||
return 'AUTH0';
|
||||
}
|
||||
|
||||
export async function createStorage(connection: string): Promise<Storage> {
|
||||
const pool = await getPool(connection);
|
||||
export async function createStorage(connection: string, maximumPoolSize: number): Promise<Storage> {
|
||||
const pool = await getPool(connection, maximumPoolSize);
|
||||
|
||||
function transformUser(user: users): User {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import { sql } from 'slonik';
|
|||
import { getPool, tokens, toDate } from './db';
|
||||
import type { Slonik } from './shared';
|
||||
|
||||
export async function createTokenStorage(connection: string) {
|
||||
const pool = await getPool(connection);
|
||||
export async function createTokenStorage(connection: string, maximumPoolSize: number) {
|
||||
const pool = await getPool(connection, maximumPoolSize);
|
||||
|
||||
return {
|
||||
async getTokens({ target }: { target: string }) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ export function createStripeBilling(config: {
|
|||
};
|
||||
}) {
|
||||
const logger = config.logger;
|
||||
const postgres$ = createPostgreSQLStorage(config.storage.connectionString);
|
||||
const postgres$ = createPostgreSQLStorage(config.storage.connectionString, 10);
|
||||
let intervalHandle: null | ReturnType<typeof setInterval> = null;
|
||||
// feat(metered-usage)
|
||||
// const estimationApi = createTRPCClient<UsageEstimatorApi>({
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ export interface Storage {
|
|||
|
||||
export async function createStorage(): Promise<Storage> {
|
||||
const connectionString = createConnectionString(process.env as any);
|
||||
const db = await createTokenStorage(connectionString);
|
||||
const db = await createTokenStorage(connectionString, 5);
|
||||
|
||||
function transformToken(item: tokens): StorageItem {
|
||||
return {
|
||||
|
|
|
|||
Loading…
Reference in a new issue