src/serializer.js
import Serializer from 'schema-mapper-serializer';
var knex = require('knex')({dialect: 'postgres'});
var st = require('knex-postgis')(knex);
/**
* PostgresqlSerializer
*
* @class PostgresqlSerializer
* @extends {Serializer}
*/
class PostgresqlSerializer extends Serializer {
/**
* Serialize a point.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializePoint(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize a point array.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializePointArray(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize a linestring.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializeLinestring(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize a linestring array.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializeLinestringArray(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize a polygon.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializePolygon(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize a polygon array.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializePolygonArray(value) {
return this.serializeGeoJSON(value);
}
/**
* Serialize to geojson.
*
* @protected
* @param {String} value
* @param {Column} column
*/
serializeGeoJSON(value) {
if (!value.crs) {
value.crs = {
type: 'name',
properties: {name: 'EPSG:4326'}
};
}
return st.geomFromGeoJSON(value);
}
}
export default PostgresqlSerializer;