@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
40 lines (38 loc) • 1.21 kB
JavaScript
import { GeometryHelper } from "../types.js";
//#region src/database/helpers/geometry/dialects/mssql.ts
var GeometryHelperMSSQL = class extends GeometryHelper {
isTrue(expression) {
return expression.wrap(``, ` = 1`);
}
isFalse(expression) {
return expression.wrap(``, ` = 0`);
}
createColumn(table, field) {
if (this.geometrySubtype(field)) 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]);
}
};
//#endregion
export { GeometryHelperMSSQL };