sqlint 0.2.2

An abstraction layer for SQL databases.
Documentation
#[cfg(feature = "bigdecimal")]
mod bigdecimal;

use crate::tests::test_api::*;

test_type!(nvarchar_limited(mssql, "NVARCHAR(10)", Value::Text(None), Value::text("foobar"), Value::text("ไฝ™"),));

test_type!(nvarchar_max(
    mssql,
    "NVARCHAR(max)",
    Value::Text(None),
    Value::text("foobar"),
    Value::text("ไฝ™"),
    Value::text("testยฅเธฟ๐Ÿ˜€๐Ÿ˜๐Ÿ˜‚๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜…๐Ÿ˜†๐Ÿ˜‡๐Ÿ˜ˆ๐Ÿ˜‰๐Ÿ˜Š๐Ÿ˜‹๐Ÿ˜Œ๐Ÿ˜๐Ÿ˜Ž๐Ÿ˜๐Ÿ˜๐Ÿ˜‘๐Ÿ˜’๐Ÿ˜“๐Ÿ˜”๐Ÿ˜•๐Ÿ˜–๐Ÿ˜—๐Ÿ˜˜๐Ÿ˜™๐Ÿ˜š๐Ÿ˜›๐Ÿ˜œ๐Ÿ˜๐Ÿ˜ž๐Ÿ˜Ÿ๐Ÿ˜ ๐Ÿ˜ก๐Ÿ˜ข๐Ÿ˜ฃ๐Ÿ˜ค๐Ÿ˜ฅ๏ฟฝ๐Ÿ˜ง๐Ÿ˜จ๐Ÿ˜ฉ๐Ÿ˜ช๐Ÿ˜ซ๐Ÿ˜ฌ๐Ÿ˜ญ๐Ÿ˜ฎ๐Ÿ˜ฏ๐Ÿ˜ฐ๐Ÿ˜ฑ๐Ÿ˜ฒ๐Ÿ˜ณ๐Ÿ˜ด๐Ÿ˜ต๐Ÿ˜ถ๐Ÿ˜ท๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜บ๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ˜พ๐Ÿ˜ฟ๐Ÿ™€๐Ÿ™๏ฟฝ๐Ÿ™‚๐Ÿ™ƒ๐Ÿ™„๐Ÿ™…๐Ÿ™†๐Ÿ™‡๐Ÿ™ˆ๐Ÿ™‰๐Ÿ™Š๐Ÿ™‹๐Ÿ™Œ๐Ÿ™๐Ÿ™Ž๐Ÿ™เค€เคเค‚เคƒเค„เค…เค†เค‡เคˆเค‰เคŠเค‹เคŒเคเคŽเคเคเค‘เค’เค“เค”เค•เค–เค—เค˜เค™เคšเค›เคœเคเคžเคŸเค เคกเคขเคฃเคคเคฅเคฆเคงเคจเคฉเคชเคซเคฌเคญเคฎเคฏเคฐโ‚ฌโ‚ญโ‚ฎโ‚ฏโ‚ฐโ‚ฑโ‚ฒโ‚ณโ‚ดโ‚ตโ‚ถโ‚ทโ‚ธโ‚นโ‚บโ‚ปโ‚ผโ‚ฝโ‚พโ‚ฟโƒ€"),
));

test_type!(ntext(mssql, "NTEXT", Value::Text(None), Value::text("foobar"), Value::text("ไฝ™"),));

test_type!(varchar_limited(mssql, "VARCHAR(10)", Value::Text(None), Value::text("foobar"),));

test_type!(varchar_max(mssql, "VARCHAR(max)", Value::Text(None), Value::text("foobar"),));

test_type!(text(mssql, "TEXT", Value::Text(None), Value::text("foobar")));

test_type!(tinyint(mssql, "tinyint", Value::Int32(None), Value::int32(u8::MIN), Value::int32(u8::MAX),));

test_type!(smallint(mssql, "smallint", Value::Int32(None), Value::int32(i16::MIN), Value::int32(i16::MAX),));

test_type!(int(mssql, "int", Value::Int32(None), Value::int32(i32::MIN), Value::int32(i32::MAX),));

test_type!(bigint(mssql, "bigint", Value::Int64(None), Value::int64(i64::MIN), Value::int64(i64::MAX),));

test_type!(float_24(mssql, "float(24)", Value::Float(None), Value::float(1.23456),));

test_type!(real(mssql, "real", Value::Float(None), Value::float(1.123456)));

test_type!(float_53(mssql, "float(53)", Value::Double(None), Value::double(1.1234567891)));

test_type!(money(mssql, "money", Value::Double(None), Value::double(3.14)));

test_type!(smallmoney(mssql, "smallmoney", Value::Double(None), Value::double(3.14)));

test_type!(boolean(mssql, "bit", Value::Boolean(None), Value::boolean(true), Value::boolean(false),));

test_type!(binary(mssql, "binary(8)", Value::Bytes(None), Value::bytes(b"DEADBEEF".to_vec()),));

test_type!(varbinary(mssql, "varbinary(8)", Value::Bytes(None), Value::bytes(b"DEADBEEF".to_vec()),));

test_type!(image(mssql, "image", Value::Bytes(None), Value::bytes(b"DEADBEEF".to_vec()),));

#[cfg(feature = "chrono")]
test_type!(date(mssql, "date", Value::Date(None), Value::date(chrono::NaiveDate::from_ymd_opt(2020, 4, 20).unwrap())));

#[cfg(feature = "chrono")]
test_type!(time(mssql, "time", Value::Time(None), Value::time(chrono::NaiveTime::from_hms_opt(16, 20, 00).unwrap())));

#[cfg(feature = "chrono")]
test_type!(datetime2(mssql, "datetime2", Value::DateTime(None), {
    let dt = chrono::DateTime::parse_from_rfc3339("2020-02-27T19:10:00Z").unwrap();
    Value::datetime(dt.with_timezone(&chrono::Utc))
}));

#[cfg(feature = "chrono")]
test_type!(datetime(mssql, "datetime", Value::DateTime(None), {
    let dt = chrono::DateTime::parse_from_rfc3339("2020-02-27T19:10:22Z").unwrap();
    Value::datetime(dt.with_timezone(&chrono::Utc))
}));

#[cfg(feature = "chrono")]
test_type!(datetimeoffset(mssql, "datetimeoffset", Value::DateTime(None), {
    let dt = chrono::DateTime::parse_from_rfc3339("2020-02-27T19:10:22Z").unwrap();
    Value::datetime(dt.with_timezone(&chrono::Utc))
}));

#[cfg(feature = "chrono")]
test_type!(smalldatetime(mssql, "smalldatetime", Value::DateTime(None), {
    let dt = chrono::DateTime::parse_from_rfc3339("2020-02-27T19:10:00Z").unwrap();
    Value::datetime(dt.with_timezone(&chrono::Utc))
}));