use std::fmt::Display;
use serde::{Deserialize, Serialize};
use crate::{SqlFormat, ToSql};
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
pub enum GeometryKind {
Point,
Line,
Polygon,
MultiPoint,
MultiLine,
MultiPolygon,
Collection,
}
impl ToSql for GeometryKind {
fn fmt_sql(&self, f: &mut String, _fmt: SqlFormat) {
match self {
GeometryKind::Point => f.push_str("point"),
GeometryKind::Line => f.push_str("line"),
GeometryKind::Polygon => f.push_str("polygon"),
GeometryKind::MultiPoint => f.push_str("multipoint"),
GeometryKind::MultiLine => f.push_str("multiline"),
GeometryKind::MultiPolygon => f.push_str("multipolygon"),
GeometryKind::Collection => f.push_str("collection"),
}
}
}
impl Display for GeometryKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(&self.to_sql())
}
}