@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
35 lines (34 loc) • 1.25 kB
JavaScript
import { GeometryHelper } from '../types.js';
export class GeometryHelperMSSQL extends GeometryHelper {
isTrue(expression) {
return expression.wrap(``, ` = 1`);
}
isFalse(expression) {
return expression.wrap(``, ` = 0`);
}
createColumn(table, field) {
if (field.type.split('.')[1]) {
field.meta.special = [field.type];
}
return table.specificType(field.field, 'geometry');
}
asText(table, column, alias) {
if (alias)
return this.knex.raw('??.??.STAsText() as ??', [table, column, alias]);
return this.knex.raw('??.??.STAsText()', [table, column]);
}
fromText(text) {
return this.knex.raw('geometry::STGeomFromText(?, 4326)', text);
}
_intersects(key, geojson) {
const geometry = this.fromGeoJSON(geojson);
return this.knex.raw('??.STIntersects(?)', [key, geometry]);
}
_intersects_bbox(key, geojson) {
const geometry = this.fromGeoJSON(geojson);
return this.knex.raw('??.STEnvelope().STIntersects(?.STEnvelope())', [key, geometry]);
}
collect(table, column) {
return this.knex.raw('geometry::CollectionAggregate(??.??).STAsText()', [table, column]);
}
}