Home Reference Source Repository

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;