10 releases (6 stable)
2.2.1 | Jul 16, 2023 |
---|---|
2.1.0 | Jan 27, 2023 |
2.0.0 | Dec 18, 2022 |
1.1.0 | Oct 23, 2022 |
0.1.0 | Feb 21, 2021 |
#10 in Geospatial
21,013 downloads per month
115KB
3K
SLoC
PostGIS Diesel
Extension for Diesel framework to support PostGIS types.
Example of Usage
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:
#[macro_use]
extern crate diesel;
use postgis_diesel::operators::*;
use postgis_diesel::types::*;
#[derive(Insertable)]
#[diesel(table_name = geometry_samples)]
struct NewGeometrySample {
point: Point,
linestring: LineString<Point>,
}
#[derive(Queryable)]
struct GeometrySample {
id: i32,
point: Point,
linestring: LineString<Point>,
}
table! {
use postgis_diesel::sql_types::*;
use diesel::sql_types::*;
geometry_samples (id) {
id -> Int4,
point -> Geometry,
linestring -> Geometry,
}
}
See integration test for more complete example.
How to Run Tests
- Start Postgis DB
docker compose up
- Run tests
cargo test
Dependencies
~3MB
~56K SLoC