Merge branch 'main' into 48-request-context-vars-permanent-option

This commit is contained in:
medtaher
2024-09-28 15:01:29 +01:00
131 changed files with 3087 additions and 989 deletions

View File

@@ -13,3 +13,7 @@ export const SETTING_CACHE_KEY = 'settings';
export const PERMISSION_CACHE_KEY = 'permissions';
export const MENU_CACHE_KEY = 'menu';
export const LANGUAGES_CACHE_KEY = 'languages';
export const DEFAULT_LANGUAGE_CACHE_KEY = 'default_language';

View File

@@ -0,0 +1,9 @@
export const buildURL = (baseUrl: string, relativePath: string): string => {
try {
const url = new URL(relativePath, baseUrl);
return url.toString();
} catch {
throw new Error(`Invalid base URL: ${baseUrl}`);
}
};

View File

@@ -13,6 +13,7 @@ import {
ArgumentMetadata,
Logger,
} from '@nestjs/common';
import escapeRegExp from 'lodash/escapeRegExp';
import { TFilterQuery, Types } from 'mongoose';
import {
@@ -36,9 +37,8 @@ export class SearchFilterPipe<T>
}
private getRegexValue(val: string) {
const quote = (str: string) =>
str.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
return new RegExp(quote(val), 'i');
const escapedRegExp = escapeRegExp(val);
return new RegExp(escapedRegExp, 'i');
}
private isAllowedField(field: string) {

33
api/src/utils/test/fixtures/language.ts vendored Normal file
View File

@@ -0,0 +1,33 @@
/*
* Copyright © 2024 Hexastack. All rights reserved.
*
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
* 3. SaaS Restriction: This software, or any derivative of it, may not be used to offer a competing product or service (SaaS) without prior written consent from Hexastack. Offering the software as a service or using it in a commercial cloud environment without express permission is strictly prohibited.
*/
import mongoose from 'mongoose';
import { LanguageUpdateDto } from '@/i18n/dto/language.dto';
import { LanguageModel } from '@/i18n/schemas/language.schema';
export const languageFixtures: LanguageUpdateDto[] = [
{
title: 'English',
code: 'en',
isDefault: true,
isRTL: false,
},
{
title: 'Français',
code: 'fr',
isDefault: false,
isRTL: false,
},
];
export const installLanguageFixtures = async () => {
const Language = mongoose.model(LanguageModel.name, LanguageModel.schema);
return await Language.insertMany(languageFixtures);
};

View File

@@ -25,12 +25,6 @@ export const nlpEntityFixtures: NlpEntityCreateDto[] = [
doc: '',
builtin: false,
},
{
name: 'language',
lookups: ['trait'],
doc: '',
builtin: false,
},
{
name: 'built_in',
lookups: ['trait'],

View File

@@ -13,23 +13,28 @@ import { NlpSampleCreateDto } from '@/nlp/dto/nlp-sample.dto';
import { NlpSampleModel, NlpSample } from '@/nlp/schemas/nlp-sample.schema';
import { NlpSampleState } from '@/nlp/schemas/types';
import { installLanguageFixtures } from './language';
import { getFixturesWithDefaultValues } from '../defaultValues';
import { TFixturesDefaultValues } from '../types';
const nlpSamples: NlpSampleCreateDto[] = [
{
text: 'yess',
language: '0',
},
{
text: 'No',
language: '0',
},
{
text: 'Hello',
trained: true,
language: '0',
},
{
text: 'Bye Jhon',
trained: true,
language: '0',
},
];
@@ -44,6 +49,15 @@ export const nlpSampleFixtures = getFixturesWithDefaultValues<NlpSample>({
});
export const installNlpSampleFixtures = async () => {
const languages = await installLanguageFixtures();
const NlpSample = mongoose.model(NlpSampleModel.name, NlpSampleModel.schema);
return await NlpSample.insertMany(nlpSampleFixtures);
return await NlpSample.insertMany(
nlpSampleFixtures.map((v) => {
return {
...v,
language: languages[parseInt(v.language)].id,
};
}),
);
};

View File

@@ -45,12 +45,6 @@ export const nlpValueFixtures: NlpValueCreateDto[] = [
expressions: ['bye', 'bye bye'],
builtin: true,
},
{
entity: '2',
value: 'en',
expressions: [],
builtin: true,
},
];
export const installNlpValueFixtures = async () => {

View File

@@ -9,8 +9,8 @@
import mongoose from 'mongoose';
import { TranslationUpdateDto } from '@/chat/dto/translation.dto';
import { TranslationModel } from '@/chat/schemas/translation.schema';
import { TranslationUpdateDto } from '@/i18n/dto/translation.dto';
import { TranslationModel } from '@/i18n/schemas/translation.schema';
export const translationFixtures: TranslationUpdateDto[] = [
{