Skip to main content

sea_query/extension/postgres/
mod.rs

1pub use explain::PgExplainSerialize;
2pub use expr::*;
3pub use extension::*;
4pub use func::*;
5pub use ltree::*;
6pub use select::*;
7pub use types::*;
8
9use crate::types::BinOper;
10
11pub(crate) mod explain;
12pub(crate) mod expr;
13pub(crate) mod extension;
14pub(crate) mod func;
15pub(crate) mod interval;
16pub(crate) mod ltree;
17pub(crate) mod select;
18pub(crate) mod types;
19
20pub(crate) use explain::PgExplainOptions;
21
22/// Postgres-specific binary operators.
23///
24/// For all supported operators (including the standard ones), see [`BinOper`].
25#[derive(Debug, Clone, Copy, PartialEq, Eq)]
26#[non_exhaustive]
27pub enum PgBinOper {
28    ILike,
29    NotILike,
30    /// `@@`. Full-text search match
31    Matches,
32    /// `@>`. Contains operator - checks if left operand contains right operand (arrays, JSON)
33    Contains,
34    /// `<@`. Contained operator - checks if left operand is contained by right operand (arrays, JSON)
35    Contained,
36    /// `||`. String/Array concatenation operator
37    Concatenate,
38    /// `&&`. Overlap operator - checks if arrays have any elements in common
39    Overlap,
40    /// `%`. Text similarity operator,
41    /// requires `pg_trgm` extension
42    Similarity,
43    /// `<%`. Word similarity operator,
44    /// requires `pg_trgm` extension
45    WordSimilarity,
46    /// `<<%`. Strict word similarity operator,
47    /// requires `pg_trgm` extension
48    StrictWordSimilarity,
49    /// `<->`. Similarity distance operator,
50    /// requires `pg_trgm` extension
51    SimilarityDistance,
52    /// `<<->`. Word similarity distance operator,
53    /// requires `pg_trgm` extension
54    WordSimilarityDistance,
55    /// `<<<->`. Strict word similarity distance operator,
56    /// requires `pg_trgm` extension
57    StrictWordSimilarityDistance,
58    /// `->`. Retrieves JSON field as JSON value
59    GetJsonField,
60    /// `->>`. Retrieves JSON field and casts it to text
61    CastJsonField,
62    /// `~`. Regex operator, case sensitively
63    Regex,
64    /// `~*`. Regex operator, case-insensitively
65    RegexCaseInsensitive,
66    #[cfg(feature = "postgres-vector")]
67    /// `<->`. L2 (Euclidean) distance operator
68    EuclideanDistance,
69    #[cfg(feature = "postgres-vector")]
70    /// `<#>`. Negative inner product operator
71    NegativeInnerProduct,
72    #[cfg(feature = "postgres-vector")]
73    /// `<=>`. Cosine distance operator
74    CosineDistance,
75}
76
77impl From<PgBinOper> for BinOper {
78    fn from(o: PgBinOper) -> Self {
79        Self::PgOperator(o)
80    }
81}