directus

Форк
0
25 строк · 933.0 Байт
1
import type { Field, RawField } from '@directus/types';
2
import type { Knex } from 'knex';
3
import type { GeoJSONGeometry } from 'wellknown';
4
import { GeometryHelper } from '../types.js';
5

6
export class GeometryHelperPostgres extends GeometryHelper {
7
	override async supported() {
8
		const res = await this.knex.select('oid').from('pg_proc').where({ proname: 'postgis_version' });
9
		return res.length > 0;
10
	}
11

12
	override createColumn(table: Knex.CreateTableBuilder, field: RawField | Field) {
13
		const type = field.type.split('.')[1] ?? 'geometry';
14
		return table.specificType(field.field, `geometry(${type}, 4326)`);
15
	}
16

17
	override _intersects_bbox(key: string, geojson: GeoJSONGeometry): Knex.Raw {
18
		const geometry = this.fromGeoJSON(geojson);
19
		return this.knex.raw('?? && ?', [key, geometry]);
20
	}
21

22
	asGeoJSON(table: string, column: string): Knex.Raw {
23
		return this.knex.raw('st_asgeojson(??.??) as ??', [table, column, column]);
24
	}
25
}
26

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

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

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

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