[knex-postgis] Return QueryBuilder for .as

This commit is contained in:
Vesa Poikajärvi
2017-08-22 20:18:42 +03:00
parent 28229bcf4a
commit 21d91e9df2
+26 -32
View File
@@ -7,17 +7,15 @@
import * as GeoJSON from 'geojson';
import * as Knex from 'knex';
// Knex does not export this
// Same as in Knex but not exported
type ColumnName = string | Knex.Raw | Knex.QueryBuilder;
type KnexPostgis = KnexPostgis.KnexPostgis;
interface KnexPostgis extends KnexPostgis.KnexPostgis {}
declare function KnexPostgis(knex: Knex): KnexPostgis;
// TODO: .as not working
declare namespace KnexPostgis {
interface KnexPostgis {
/**
* Returns the area of the surface if it is a Polygon or MultiPolygon. For geometry, a
* 2D Cartesian area is determined with units specified by the SRID. For geography, area
@@ -25,42 +23,42 @@ declare namespace KnexPostgis {
*
* @see {@link https://postgis.net/docs/ST_Area.html}
*/
area(geom: ColumnName): Knex.Raw;
area(geom: ColumnName): Knex.QueryBuilder;
/**
* Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata.
*
* @see {@link https://postgis.net/docs/ST_AsText.html}
*/
asText(column: ColumnName): Knex.Raw;
asText(column: ColumnName): Knex.QueryBuilder;
/**
* Return the geometry as a GeoJSON element.
*
* @see {@link https://postgis.net/docs/ST_AsGeoJSON.html}
*/
asGeoJSON(column: ColumnName): Knex.Raw;
asGeoJSON(column: ColumnName): Knex.QueryBuilder;
/**
* Return the Well-Known Text (WKT) representation of the geometry with SRID meta data.
*
* @see {@link https://postgis.net/docs/ST_AsEWKT.html}
*/
asEWKT(column: ColumnName): Knex.Raw;
asEWKT(column: ColumnName): Knex.QueryBuilder;
/**
* Returns a geometry covering all points within a given distance from the input geometry.
*
* @see {@link https://postgis.net/docs/ST_Buffer.html}
*/
buffer(geom: ColumnName, radius: number): Knex.Raw;
buffer(geom: ColumnName, radius: number): Knex.QueryBuilder;
/**
* Returns the geometric center of a geometry.
*
* @see {@link https://postgis.net/docs/ST_Centroid.html}
*/
centroid(geom: ColumnName): Knex.Raw;
centroid(geom: ColumnName): Knex.QueryBuilder;
/**
* For geometry type Returns the 2D Cartesian distance between two geometries in projected
@@ -69,7 +67,7 @@ declare namespace KnexPostgis {
*
* @see {@link https://postgis.net/docs/ST_Distance.html}
*/
distance(geom1: ColumnName, geom2: ColumnName): Knex.Raw;
distance(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder;
/**
* Returns true if the geometries are within the specified distance of one another. For
@@ -79,14 +77,14 @@ declare namespace KnexPostgis {
*
* @see {@link https://postgis.net/docs/ST_DWithin.html}
*/
dwithin(geom1: ColumnName, geom2: ColumnName, distance: number, spheroid?: boolean): Knex.Raw;
dwithin(geom1: ColumnName, geom2: ColumnName, distance: number, spheroid?: boolean): Knex.QueryBuilder;
/**
* Returns a geometry that represents the shared portion of geomA and geomB.
*
* @see {@link https://postgis.net/docs/ST_Intersection.html}
*/
intersection(geom1: ColumnName, geom2: ColumnName): Knex.Raw;
intersection(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder;
/**
* Returns TRUE if the Geometries/Geography "spatially intersect in 2D" - (share any portion
@@ -95,35 +93,31 @@ declare namespace KnexPostgis {
*
* @see {@link https://postgis.net/docs/ST_Intersects.html}
*/
intersects(geom1: ColumnName, geom2: ColumnName): Knex.Raw;
intersects(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder;
/**
*
*
* @see {@link }
* Casts geometry to geography
*/
geography(geom: ColumnName): Knex.Raw;
geography(geom: ColumnName): Knex.QueryBuilder;
/**
*
*
* @see {@link }
* Casts geography to geometry
*/
geometry(geography: ColumnName): Knex.Raw;
geometry(geography: ColumnName): Knex.QueryBuilder;
/**
* Return a specified ST_Geometry value from Well-Known Text representation (WKT).
*
* @see {@link https://postgis.net/docs/ST_GeomFromText.html}
*/
geomFromText(wkt: string, srid?: number): Knex.Raw;
geomFromText(wkt: string, srid?: number): Knex.QueryBuilder;
/**
* Takes as input a geojson representation of a geometry and outputs a PostGIS geometry object
*
* @see {@link https://postgis.net/docs/ST_GeomFromGeoJSON.html}
*/
geomFromGeoJSON(geojson: GeoJSON.GeoJsonObject|ColumnName): Knex.Raw;
geomFromGeoJSON(geojson: GeoJSON.GeoJsonObject|ColumnName): Knex.QueryBuilder;
/**
* Creates a rectangular Polygon formed from the given minimums and maximums. Input values
@@ -131,56 +125,56 @@ declare namespace KnexPostgis {
*
* @see {@link https://postgis.net/docs/ST_MakeEnvelope.html}
*/
makeEnvelope(minlon: number, minlat: number, maxlon: number, maxlat: number, srid?: number): Knex.Raw;
makeEnvelope(minlon: number, minlat: number, maxlon: number, maxlat: number, srid?: number): Knex.QueryBuilder;
/**
* Creates a 2D,3DZ or 4D point geometry.
*
* @see {@link https://postgis.net/docs/ST_MakePoint.html}
*/
makePoint(lon: number, lat: number, z?: number, measure?: number): Knex.Raw;
makePoint(lon: number, lat: number, z?: number, measure?: number): Knex.QueryBuilder;
/**
* Attempts to make an invalid geometry valid without losing vertices.
*
* @see {@link https://postgis.net/docs/ST_MakeValid.html}
*/
makeValid(geom: ColumnName): Knex.Raw;
makeValid(geom: ColumnName): Knex.QueryBuilder;
/**
* eturns an ST_Point with the given coordinate values. OGC alias for ST_MakePoint.
*
* @see {@link https://postgis.net/docs/ST_Point.html}
*/
point(lon: number, lat: number): Knex.Raw;
point(lon: number, lat: number): Knex.QueryBuilder;
/**
* Return a new geometry with its coordinates transformed to a different spatial reference.
*
* @see {@link https://postgis.net/docs/ST_Transform.html}
*/
transform(geom: ColumnName, srid: number): Knex.Raw;
transform(geom: ColumnName, srid: number): Knex.QueryBuilder;
/**
* Returns true if the geometry A is completely inside geometry B
*
* @see {@link https://postgis.net/docs/ST_Within.html}
*/
within(geom1: ColumnName, geom2: ColumnName): Knex.Raw;
within(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder;
/**
* Return the X coordinate of the point, or NULL if not available. Input must be a point.
*
* @see {@link https://postgis.net/docs/ST_X.html}
*/
x(geom: ColumnName): Knex.Raw;
x(geom: ColumnName): Knex.QueryBuilder;
/**
* Return the Y coordinate of the point, or NULL if not available. Input must be a point.
*
* @see {@link https://postgis.net/docs/ST_Y.html}
*/
y(geom: ColumnName): Knex.Raw;
y(geom: ColumnName): Knex.QueryBuilder;
}
}