Compare commits

..

1 Commits

Author SHA1 Message Date
Zephyr (David B.M.)
77fba27d12 fix (dashboard): validate postgres version in ai service settings page (#2735) 2024-05-31 12:38:36 +02:00
5 changed files with 49 additions and 3 deletions

View File

@@ -0,0 +1,5 @@
---
'@nhost/dashboard': minor
---
fix: postgres version validation when activating ai in ai settings page

View File

@@ -32,8 +32,7 @@ import { FormProvider, useForm } from 'react-hook-form';
import { toast } from 'react-hot-toast';
import * as Yup from 'yup';
import { DisableAIServiceConfirmationDialog } from './DisableAIServiceConfirmationDialog';
const MIN_POSTGRES_VERSION_SUPPORTING_AI = '14.6-20231018-1';
import { isPostgresVersionValidForAI } from '@/features/ai/settings/utils/isPostgresVersionValidForAI';
const validationSchema = Yup.object({
version: Yup.object({
@@ -165,7 +164,7 @@ export default function AISettings() {
]);
const toggleAIService = async (enabled: boolean) => {
if (postgresVersion < MIN_POSTGRES_VERSION_SUPPORTING_AI) {
if (!isPostgresVersionValidForAI(postgresVersion)) {
toast.error(
'In order to enable the AI service you need to update your database version to 14.6-20231018-1 or newer.',
{
@@ -495,3 +494,4 @@ export default function AISettings() {
</Box>
);
}

View File

@@ -0,0 +1 @@
export { default as isPostgresVersionValidForAI } from './isPostgresVersionValidForAI';

View File

@@ -0,0 +1,22 @@
import { test, vi } from 'vitest';
import isPostgresVersionValidForAI from './isPostgresVersionValidForAI';
beforeEach(() => {
vi.resetModules();
});
test('greater than minimum version, minor version with two digits, should be valid', () => {
const postgresVersion = '14.11-20240515-1';
expect(isPostgresVersionValidForAI(postgresVersion)).toBe(true);
});
test('less than minimum version, should be invalid', () => {
const postgresVersion = '14.6-20221110-1';
expect(isPostgresVersionValidForAI(postgresVersion)).toBe(false);
});
test('equal to minimum version, should be valid', () => {
const postgresVersion = '14.6-20231018-1';
expect(isPostgresVersionValidForAI(postgresVersion)).toBe(true);
});

View File

@@ -0,0 +1,18 @@
/**
* Check if the given postgres version is valid for enabling AI in the project
*
* @param postgresVersion - Postgres version used in the project.
* @returns Whether is valid for enabling AI.
*/
export default function isPostgresVersionValidForAI(
postgresVersion: string,
): boolean {
const MIN_POSTGRES_VERSION_SUPPORTING_AI = '14.6-20231018-1';
if (/^14\.6-/.test(postgresVersion)) {
return postgresVersion >= MIN_POSTGRES_VERSION_SUPPORTING_AI;
}
// Note: No need to account for versions less than 14.6
return true;
}