#![cfg(any(feature = "postgres-sync", feature = "tokio-postgres"))]
use crate::common::schema::postgres::*;
use drizzle::postgres::expr::{array_contained, array_contains, array_overlaps};
use drizzle::postgres::prelude::*;
#[drizzle::test]
fn array_contains_sql_generation(db: &mut TestDb<SimpleSchema>) {
let SimpleSchema { simple } = schema;
let stmt = db
.select(())
.from(simple)
.r#where(array_contains(simple.name, "test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("@>"), "Expected @> operator in SQL: {}", sql);
}
#[drizzle::test]
fn array_contained_sql_generation(db: &mut TestDb<SimpleSchema>) {
let SimpleSchema { simple } = schema;
let stmt = db
.select(())
.from(simple)
.r#where(array_contained(simple.name, "test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("<@"), "Expected <@ operator in SQL: {}", sql);
}
#[drizzle::test]
fn array_overlaps_sql_generation(db: &mut TestDb<SimpleSchema>) {
let SimpleSchema { simple } = schema;
let stmt = db
.select(())
.from(simple)
.r#where(array_overlaps(simple.name, "test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("&&"), "Expected && operator in SQL: {}", sql);
}
#[drizzle::test]
fn array_ops_method_syntax(db: &mut TestDb<SimpleSchema>) {
use drizzle::postgres::expr::ArrayExprExt;
let SimpleSchema { simple } = schema;
let stmt = db
.select(())
.from(simple)
.r#where(simple.name.array_contains("test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("@>"), "Expected @> operator in SQL: {}", sql);
let stmt = db
.select(())
.from(simple)
.r#where(simple.name.array_contained("test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("<@"), "Expected <@ operator in SQL: {}", sql);
let stmt = db
.select(())
.from(simple)
.r#where(simple.name.array_overlaps("test"));
let sql = stmt.to_sql().sql();
assert!(sql.contains("&&"), "Expected && operator in SQL: {}", sql);
}