diff --git a/src/routes/tenant/index.ts b/src/routes/tenant/index.ts index 5df36f75..aecf9afd 100644 --- a/src/routes/tenant/index.ts +++ b/src/routes/tenant/index.ts @@ -75,9 +75,10 @@ export default async function routes(fastify: FastifyInstance) { fastify.post('/:tenantId', { schema }, async (request, reply) => { const { anonKey, databaseUrl, fileSizeLimit, jwtSecret, serviceKey } = request.body - await runMigrations(databaseUrl) + const { tenantId } = request.params + await runMigrations(tenantId, databaseUrl) await knex('tenants').insert({ - id: request.params.tenantId, + id: tenantId, anon_key: encrypt(anonKey), database_url: encrypt(databaseUrl), file_size_limit: fileSizeLimit, @@ -92,8 +93,9 @@ export default async function routes(fastify: FastifyInstance) { { schema: patchSchema }, async (request, reply) => { const { anonKey, databaseUrl, fileSizeLimit, jwtSecret, serviceKey } = request.body + const { tenantId } = request.params if (databaseUrl) { - await runMigrations(databaseUrl) + await runMigrations(tenantId, databaseUrl) } await knex('tenants') .update({ @@ -103,17 +105,18 @@ export default async function routes(fastify: FastifyInstance) { jwt_secret: jwtSecret !== undefined ? encrypt(jwtSecret) : undefined, service_key: serviceKey !== undefined ? encrypt(serviceKey) : undefined, }) - .where('id', request.params.tenantId) + .where('id', tenantId) reply.code(204).send() } ) fastify.put('/:tenantId', { schema }, async (request, reply) => { const { anonKey, databaseUrl, fileSizeLimit, jwtSecret, serviceKey } = request.body - await runMigrations(databaseUrl) + const { tenantId } = request.params + await runMigrations(tenantId, databaseUrl) await knex('tenants') .insert({ - id: request.params.tenantId, + id: tenantId, anon_key: encrypt(anonKey), database_url: encrypt(databaseUrl), file_size_limit: fileSizeLimit, diff --git a/src/utils/tenant.ts b/src/utils/tenant.ts index 747fc0c3..72265a6d 100644 --- a/src/utils/tenant.ts +++ b/src/utils/tenant.ts @@ -17,12 +17,16 @@ const { multitenantDatabaseUrl } = getConfig() const tenantConfigCache = new Map() -export async function runMigrations(databaseUrl: string, logOnError = false): Promise { +export async function runMigrations( + tenantId: string, + databaseUrl: string, + logOnError = false +): Promise { try { await runMigrationsOnTenant(databaseUrl) } catch (error: any) { if (logOnError) { - console.error('Migration error:', error.message) + console.error(`${tenantId} migration error:`, error.message) return } else { throw error @@ -35,7 +39,7 @@ export async function cacheTenantConfigAndRunMigrations( config: TenantConfig, logOnError = false ): Promise { - await runMigrations(config.databaseUrl, logOnError) + await runMigrations(tenantId, config.databaseUrl, logOnError) tenantConfigCache.set(tenantId, config) }