UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

47 lines (45 loc) 1.43 kB
import { GeometryHelper } from "../types.js"; //#region src/database/helpers/geometry/dialects/oracle.ts var GeometryHelperOracle = class extends GeometryHelper { isTrue(expression) { return expression.wrap(``, ` = 'TRUE'`); } isFalse(expression) { return expression.wrap(``, ` = 'FALSE'`); } createColumn(table, field) { if (this.geometrySubtype(field)) field.meta.special = [field.type]; return table.specificType(field.field, "sdo_geometry"); } asText(table, column, alias) { if (alias) return this.knex.raw("sdo_util.to_wktgeometry(??.??) as ??", [ table, column, alias ]); return this.knex.raw("sdo_util.to_wktgeometry(??.??)", [table, column]); } asGeoJSON(table, column) { return this.knex.raw("sdo_util.to_geojson(??.??) as ??", [ table, column, column ]); } fromText(text) { return this.knex.raw("sdo_geometry(?, 4326)", text); } _intersects(key, geojson) { const geometry = this.fromGeoJSON(geojson); return this.knex.raw(`sdo_overlapbdyintersect(??, ?)`, [key, geometry]); } _intersects_bbox(key, geojson) { const geometry = this.fromGeoJSON(geojson); return this.knex.raw(`sdo_overlapbdyintersect(sdo_geom.sdo_mbr(??), sdo_geom.sdo_mbr(?))`, [key, geometry]); } collect(table, column) { return this.knex.raw(`concat('geometrycollection(', listagg(?, ', '), ')'`, this.asText(table, column, column)); } }; //#endregion export { GeometryHelperOracle };