Extension for Diesel framework to support PostGIS types. The library is simple extension of rust-postgis
To ensure that the Geometry
type is in scope, read this guide and add use postgis_diesel::sql_types::*
to the import_types key in your diesel.toml
file.
Assume that the table is defined like this:
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE TABLE geometry_samples
(
id SERIAL PRIMARY KEY,
point geometry(Point,4326) NOT NULL,
linestring geometry(Linestring,4326) NOT NULL
);
Then Rust code may look like this:
#[derive(Insertable)]
#[table_name = "geometry_samples"]
struct NewGeometrySample {
point: PointC<Point>,
linestring: LineStringC<LineStringT<Point>>,
}
#[derive(Queryable)]
struct GeometrySample {
id: i32,
point: PointC<Point>,
linestring: LineStringC<LineStringT<Point>>,
}
table! {
use postgis_diesel::sql_types::*;
use diesel::sql_types::*;
geometry_samples (id) {
id -> Int4,
point -> Geometry,
linestring -> Geometry,
}
}