directus

Форк
0
/
number-in-range.ts 
27 строк · 828.0 Байт
1
import type { NumericValue } from '@directus/types';
2
import { MAX_SAFE_INT32, MAX_SAFE_INT64, MIN_SAFE_INT32, MIN_SAFE_INT64 } from '@directus/constants';
3
import type { NumberInfo } from '../types.js';
4
import { calculateDecimalLimit } from './decimal-limit.js';
5

6
export function numberInRange(value: NumericValue, info: NumberInfo) {
7
	switch (info.type) {
8
		case 'bigInteger':
9
			return value >= MIN_SAFE_INT64 && value <= MAX_SAFE_INT64;
10

11
		case 'decimal': {
12
			const { min, max } = calculateDecimalLimit(info.precision, info.scale);
13
			return value >= min && value <= max;
14
		}
15

16
		case 'integer':
17
			return value >= MIN_SAFE_INT32 && value <= MAX_SAFE_INT32;
18

19
		case 'float':
20
			// Not sure how to calculate the logical limits of float
21
			// Let the database decide and error;
22
			return true;
23

24
		default:
25
			return false;
26
	}
27
}
28

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.